Apache以降2.4mod_extract_forwardedの代わりにmod_remoteipを使用して、クライアントアドレスをx-forwarded-forから書き換えていますフロントエンドサーバー(ワニス、イカ、Apacheなど)によって提供されます。
これまでのところ、php、cgi、wsgiなどのモジュールですべてが正常に動作します。クライアントアドレスは本来の形で表示されますが、アクセスログにクライアントアドレスを書き込むことができませんでした(%a、%h、%{c } a)。運が悪い-私は常に127.0.0.1(localhost forward ex。)を取得しています。
Mod_remoteipを使用しているときにクライアントのIPアドレスを記録する方法
更新:IT WORKS O_O-以下の回答を参照してください
ワニス構成:
if (req.restarts == 0) {
if (req.http.X-Forwarded-For) {
set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
}
Apache 2.4構成セクション:
mod_remoteip:
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1/8
ロギング(%aが仕事をします):
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+
前にnginxがある場合(SSL終了など):
server {
listen 123.123.123.123:443;
server_name server.com;
root html;
ssl on;
ssl_certificate /etc/pki/httpd/site/chain.crt;
ssl_certificate_key /etc/pki/httpd/site/private.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:6081;
proxy_set_header Host $http_Host;
proxy_pass_header Server;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
mod_remoteipのドキュメント によると、モジュールはクライアントのIPアドレスを単純に置き換える必要がありますが、RemoteIPHeader x-forwarded-for
が設定されています( doc )。また、vhostのロギングは、定義したCustomLogを使用することも確認してください。