Real-IPを使用しているときに$ remote_addrの元の値をログに記録する方法


9

私の環境には、いくつかのシステムを通過するユーザーリクエストがあります。

[クライアント]-> [ELB] ---> [nginx]-> [ウェブ]

(ELB = AWS Elastic Load Balancer)

これのおかげで答えが、私はnginxの決定と上流側のサーバー(ウェブ)への正しいクライアントのIPアドレスを渡しているX-Forwarded-ForX-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年に。それ以来何か変更または改善されましたか?

回答:


8

変数$realip_remote_addrで接続しているELBの元のクライアントアドレスを取得できますが、この変数はnginx 1.9.7でのみ追加されたため、非常に最新のバージョンのnginxを実行している必要があることに注意してください。


@Michael Hampton♦に感謝!別の戦略を追求した後、ついに偶然に出会ったので、私は自分の質問に答えるために戻ってきました$realip_remote_addr。それは美しく動作します。実際にproxy_protocolを機能させようとしていて、1.9.7のnginxパッチノートに出会いました
michaelg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.