LoginSignup
11
13

More than 3 years have passed since last update.

Nginx リバースプロキシ基本設定

Last updated at Posted at 2021-03-18

まず始めに

 前回まとめたロードバランサ設定の記事もぜひ見てください。
 今回はリバースプロキシの基本設定についてまとめました。

プロキシとは?

 プロキシ(Proxy)とは、日本語で”代理”を意味し
 サーバから外部インターネットへの接続を中継するプロキシサーバ(フォワードプロキシ)と呼ばれます。また、外部インターネットからサーバへの接続を中継する仕組みをリバースプロキシと呼びます。
 リバースプロキシの役割としては負荷分散・キャッシュによる負荷軽減・SSL高速化やセキュリティ向上があげられます。
 今回はNginxにリバースプロキシを設定します。

Nginxのリバースプロキシ設定

nginx.conf
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 の値はこの制限なし。

最後に

 今回はリバースプロキシの基本設定をまとめました。
 負荷分散の設定と組み合わせることで、かなり詳細な場合の設定も可能です。
 少しでも参考にしていただければと思います。
 
 最後まで読んでいただきありがとうございました。

11
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13