私の環境には、いくつかのシステムを通過するユーザーリクエストがあります。
[クライアント]-> [ELB] ---> [nginx]-> [ウェブ]
(ELB = AWS Elastic Load Balancer)
これのおかげで答えが、私はnginxの決定と上流側のサーバー(ウェブ)への正しいクライアントのIPアドレスを渡しているX-Forwarded-For
とX-Real_IP
、ヘッダー。関連するnginx設定:
real_ip_header X-Forwarded-For;
set_real_ip_from 10.0.0.0/8;
real_ip_recursive on;
proxy_set_header X-Real-IP $remote_addr;
私の問題はこれです。nginxのReal IPモジュールは、既存の$remote_addr
変数をそのX-Forwarded-For
計算結果で置き換えます。これにより、元のクライアントIPが得られますが、実際にリクエストをプロキシ(ELB)に送信したシステムのIPアドレスが失われます。
全体として、クライアントIPを持つことは私にとってより重要ですが、トラフィックの流れを理解(およびデバッグ)できるように、リクエストのチェーン全体をログに記録できるようにしたいと考えています。現在、私はnginxにクライアントIP、自身のIP、および上流サーバーのIPのみを記録させることができます。ELB IPもログに記録できるようにしたいと思います。
私が見るX-Istenceが同じ尋ねた質問を少し運と、2013年に。それ以来何か変更または改善されましたか?
$realip_remote_addr
。それは美しく動作します。実際にproxy_protocolを機能させようとしていて、1.9.7のnginxパッチノートに出会いました