Memo

メモ > サーバ > 各論: エトセトラ > 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 … リバースプロキシ用の設定ファイルを作成
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を再起動
□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
# mkdir /var/cache/nginx … キャッシュと一時ファイル保存用のディレクトリを作成 # chown nginx. /var/cache/nginx # vi /etc/nginx/nginx.conf … nginxの設定ファイルを編集
「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を再起動
キャッシュをクリアしたい場合、以下のディレクトリ内にあるデータをすべて削除する /var/cache/nginx/cache/ /var/cache/nginx/tmp/

Advertisement