Closed1
nginxでリバースプロキシ
Nginxでリバースプロキシを設定する場合のメモ
リバースプロキシで頻繁に使うディレクティブ
| 名称 | 概要 | 公式ドキュメント |
|---|---|---|
| proxy_pass | こちらで指定したURLに転送される。 | リンク |
| rewrite | 正規表現などでマッチしたURLを書き換える。 | リンク |
| proxy_set_header | プロキシサーバに送られるリクエストヘッダにフィールドの追加や再定義を行う。 | リンク |
| proxy_redirect | プロキシ先のサーバがnginxに返すレスポンスのLocation, Refreshヘッダの書き換えルール。 |
リンク |
| sub_filter | リクエストに含まれる文字列を、正規表現で検索して置き換える。 | リンク |
proxy_pass
リダイレクト設定を入れる場合は、必須で利用する。下記は、/sampleへのリクエストをlocalhost:8080に転送する設定である。
location /sample {
proxy_pass http://localhost:8080/;
}
locationで指定しているURLとproxy_passで指定するURLの末尾に/を含むかどうかで挙動が変わるので注意。
詳細に関しては下記の検証記事を参照。
Nginxのlocationとproxy_passの末尾スラッシュによる挙動の違いを理解する | Black Everyday Company
rewrite
localhost/sampleに対してlocalhost:8080へのリバースプロキシを設定した場合、localhost:8080のサーバには、localhost:8080/sampleとしてリクエストが送信されてしまう。そのような場合に/sampleの部分を取り除いて、localhost:8080にリクエストを送信させることができる。
location /sample {
rewrite /sample/(.*) /$1 break;
proxy_pass http://localhost:8080/;
}
上記の設定を入れることで、localhost/sampleへのリクエストが全て、localhost:8080に書き換えられる。
proxy_set_header
プロキシサーバに送られるリクエストのヘッダに情報を追加する設定を入れるものである。
proxy_set_header Host $http_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-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
X-Forwarded-Forヘッダー(XFF)に関しては下記のサイトを参照
このスクラップは2023/05/05にクローズされました