Apache mod_remoteip和访问日志


9

从Apache 2.4开始,我开始使用mod_remoteip而不是mod_extract_forwarded从前端服务器提供的x- forward- for重写客户端地址(清漆,鱿鱼,apache等)。

到目前为止,一切都可以在模块上正常工作,例如php,cgi,wsgi等...-客户端地址按应有的方式显示,但我无法在访问日志中写入客户端地址(%a,%h,%{c }一个)。不走运-我总是得到127.0.0.1(本地主机向前)。

使用mod_remoteip时如何记录客户端的IP地址?

更新:IT工作O_O-请参阅下面的答案


您可能想添加您使用/测试过的特定配置。另外,虽然没有详细介绍,但这可能会有所帮助:Knowledgevoid.com/blog/2012/01/13/…我假设您确实也阅读了httpd.apache.org/docs/trunk/mod/mod_remoteip.html#page-header?stackexchange有一些问题,你可能需要阅读:stackoverflow.com/questions/25455731/...
丹尼斯·诺尔特

重新构建的配置,现在可以正常使用O_O
GioMac,2014年

Answers:


20

清漆配置:

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;
    }
}

1
如果您接受此答案,则应授予赏金,即使这是您自己的答案。
mc0e 2014年

您是否可以更新它,或者给我们CloudFlare的http.cf-connecting-ip版本?没有任何运气可以使它起作用,对不起。
Ruslan Abuzant

对于Nginx X-Forwarded-For,实际上应该使用$ proxy_add_x_forwarded_for而不是$ remote_addr。这与Varnish示例具有相同的功能,但是$ remote_addr不包括以前的X-Forwarded-For值
Andy

4

根据mod_remoteip的文档,该模块应仅替换客户端IP地址,而仅当RemoteIPHeader x-forwarded-for设置了该地址时(doc)。还请确保您的虚拟主机的日志记录使用了您定义的CustomLog。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.