メモ > サーバ > 各論: エトセトラ > nginxでリバースプロキシ
nginxでリバースプロキシ
※ロードバランサーのように負荷分散を行うが、ロードバランサーとは異なりレスポンスはリバースプロキシが返す
これにより、リバースプロキシがレスポンスをキャッシュして負荷を軽減させたりなどができる
Nginxによるリバースプロキシの設定方法
http://qiita.com/schwarz471/items/9b44adfbec006eab60b0
Nginx でリバースプロキシサーバーつかってみる。Apache -> Nginx
http://qiita.com/murachi1208/items/d04797b0b61e69018938
リバースプロキシって何?触りだけ学んだサーバー/インフラ入門
http://qiita.com/growsic/items/fead30272a5fa374ac7b
Nginx でリバースプロクシを立てるときに気にすべき proxy_next_upstream 設定 - 無印吉澤
http://muziyoshiz.hatenablog.com/entry/2017/10/25/235114
Nginxのリーバスプロキシ化(Apacheと共存) - Qiita
https://qiita.com/mike-ayumu/items/5f255bab07606759a8e5
ここでは以下2台のサーバがあるものとし、
203.0.113.1 サーバにアクセスしたときに 203.0.113.2 サーバの内容を返すように設定するものとする
http://203.0.113.1/(プライベートIP 10.0.0.1) ... nginxが動作しているものとする
http://203.0.113.2/(プライベートIP 10.0.0.2) ... Apache+PHPが動作しているものとする
□203.0.113.1
# vi /etc/nginx/conf.d/proxy.conf … リバースプロキシ用の設定ファイルを作成
□203.0.113.2
特に設定しなくても動作に問題はないが、そのままだとアクセスログには 203.0.113.1 のIPアドレスのみが記録されることになる
/etc/httpd/conf/httpd.conf のLogFormatに %{X-Forwarded-For}i を追加すると、アクセスした人本来のIPアドレスが記録される
■リバースプロキシでキャッシュを使う
※アプリケーションサーバのレスポンスをnginxがキャッシュすることにより、負荷軽減&高速化を実現できる
※WordPressなどに使用する場合、管理ページではキャッシュさせないなどの対応が必要
Nginx - リバースプロキシキャッシュ設定(基本的)!
http://www.mk-mode.com/octopress/2014/04/23/nginx-proxy-cache-setting/
【nginx】WordPress でキャッシュしてはいけないページ(ファイル、ディレクトリ)設定!!!
http://oki2a24.com/2014/07/03/set-do-not-cache-wordpress-page/
nginxで特定のページをキャッシュさせないように設定したい
https://teratail.com/questions/13018
正規表現で「URLに○○が含まれている場合はキャッシュを返さない」のように設定できるみたい。要調査
nginxでWordPressの設定する時に出てくるディレクティブのメモ
https://nskw-style.com/2012/server/nginx-directives.html
特定URLの場合にキャッシュさせない、はできるみたい。要調査
□203.0.113.1
server {
server_name refirio.net; … サーバー名を指定
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location /sample/ { … sampleディレクトリをプロキシアクセスにする
proxy_pass http://10.0.0.2/sample/; … 10.0.0.2 サーバにアクセスさせる
}
location /sample2/ { … sample2ディレクトリをプロキシアクセスにする
proxy_pass http://10.0.0.2/sample2/; … 10.0.0.2 サーバにアクセスさせる
}
}
# service nginx restart … nginxを再起動
# mkdir /var/cache/nginx … キャッシュと一時ファイル保存用のディレクトリを作成
# chown nginx. /var/cache/nginx
# vi /etc/nginx/nginx.conf … nginxの設定ファイルを編集
キャッシュをクリアしたい場合、以下のディレクトリ内にあるデータをすべて削除する
/var/cache/nginx/cache/
/var/cache/nginx/tmp/「index index.php index.html index.htm;」の次の行に以下を追加
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=my-key:8m max_size=50m inactive=120m;
proxy_temp_path /var/cache/nginx/tmp; … キャッシュと一時ファイル保存用のディレクトリ
# vi /etc/nginx/conf.d/proxy.conf … リバースプロキシ用の設定ファイルを編集
「location /sample/ { 〜 }」のブロック内に以下を追加
proxy_ignore_headers Cache-Control; … バックエンド側のCache-Controlヘッダでno-cache が指定されていても無視する
proxy_cache my-key;
proxy_cache_valid 200 302 60m; … HTTPレスポンスが200か302の場合は60分キャッシュする
proxy_cache_valid 404 10m; … HTTPレスポンスが404の場合は10分キャッシュする
# service nginx restart … nginxを再起動