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にクローズされました