#まず始めに
前回まとめたロードバランサ設定の記事もぜひ見てください。
今回はリバースプロキシの基本設定についてまとめました。
#プロキシとは?
プロキシ(Proxy)とは、日本語で”代理”を意味し
サーバから外部インターネットへの接続を中継するプロキシサーバ(フォワードプロキシ)と呼ばれます。また、外部インターネットからサーバへの接続を中継する仕組みをリバースプロキシと呼びます。
リバースプロキシの役割としては負荷分散・キャッシュによる負荷軽減・SSL高速化やセキュリティ向上があげられます。
今回はNginxにリバースプロキシを設定します。
#Nginxのリバースプロキシ設定
server{
server_name example.com;
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 /example/ {
proxy_pass http://localhost:8080/app/;
}
location /example2/ {
proxy_pass http://example2.com/example/;
}
}
proxy_set_header… 転送先にアクセス元のIPやホスト情報を再定義・追加が可能です。
クッキーの書き換えも可能で、書き方は proxy_cookie_path /abc/ /edf/; のようになる。
proxy_hide_header…ヘッダー情報を消します。
セキュリティ上クライアントに漏らしたくない情報を消します。
proxy_ignore_headers…指定した値は無視する。Expiresだと無視するのでキャッシュされない。
proxy_connect_timeout 10;
proxy_send_timeout 10;
proxy_read_timeout 60;
proxy_connect_timeout…nginxから後続へのコネクションを張るタイムアウト時間。
デフォルトは1s。最大75s。10sの設定で十分だと思います。
proxy_send_timeout…nginxから後続に対してデータ送信する際のタイムアウト値。
送信で時間がかかることは無いので、10sの設定で十分だと思います。
proxy_read_timeout…渡されたデータを後続が処理をし、レスポンスを返すタイムアウト値。
後続のサーバでもタイムアウト値より長めに設定します。
proxy_next_upstream error timeout;
proxy_next_upstream_timeout 10;
proxy_next_upstream_tries 2;
proxy_next_upstream…どのリクエストをリトライするかを設定できます。
error
:接続の確立時、リクエストを渡す時、応答ヘッダを読込時にエラーが起きた場合。
timeout
:接続の確立時、リクエストを渡す時、応答ヘッダを読込時にタイムアウトが起きた場合。
invalid_header
:サーバが空あるいは無効な応答を返した場合。
http_XXX
:サーバがコードXXXの応答を返した場合。
XXXには500,502,503,504,403,404,429が設定可能。
non_idempotent
:1.9.13Ver以降、POST・LOCK・PATCHのリクエストは
2重処理防止のためリトライされません。
この設定を有効にすると上記のリクエストでもリトライされます。
off
:リクエストを次のサーバに渡すのを無効化する。
proxy_next_upstream_timeout…リトライの間隔を制限します。0 の値はこの制限なし。
proxy_next_upstream_tries…リトライ回数を制限します。0 の値はこの制限なし。
#最後に
今回はリバースプロキシの基本設定をまとめました。
負荷分散の設定と組み合わせることで、かなり詳細な場合の設定も可能です。
少しでも参考にしていただければと思います。
最後まで読んでいただきありがとうございました。