リクエストを内部の nginx サーバーに移動するには、呼び出しに次のコードを追加します。
proxy_set_header X-Real-IP $remote_addr;
この値をログに出力しようとすると、コンテナの内部 nginx がクラッシュします。
log_format verbose ' Real: $X-Real-IP ';
何が間違っているのでしょうか? (変数を "" で囲んで試してみましたが、効果はありませんでした。)
答え1
サーバーは、X-Real-IP
HTTP リクエストのヘッダーの 1 つとして受信します。Nginx は、各リクエスト ヘッダーの値を変数として使用できるようにします。
http リクエスト ヘッダー値の変数名は で始まります$http_
。ヘッダー名は小文字に変換され、各ハイフンはアンダースコアに置き換えられます。
例えばX-Real-IP
、$http_x_real_ip
見るこのドキュメント詳細については。
答え2
ngx_http_realip_module
これを使用すると、nginx 内のどこでも、ヘッダー内の IP アドレスをソース IP として使用できるようになります。
次のように構成されています。
set_real_ip_from 192.168.1.1 # IP address of the external nginx
real_ip_header X-Real-IP;
このモジュールを使用すると、独自のログ形式を定義する必要がなくなり、nginx は実際のクライアント IP をログ ファイルやその他のすべての場所にソース IP アドレスとして出力します。