httpd访问日志,记录的ip是反向代理如何找到实际代理

fly*_*sic 2 logging reverse-proxy apache-2.2

查看访问日志,发现用户登录的IP来自反向代理服务器。

设置是这样的

www.abc.com -> reversed proxy to my server 123.123.123.123 
Run Code Online (Sandbox Code Playgroud)

有没有配置http访问日志来跟踪反向代理服务器后面的实际传入IP?

Sma*_*ger 5

您正在寻找X-Forwarded-For标题。任何物有所值的代理都会将此标头添加到它转发的 HTTP 请求中。

如果您的整个站点都在此代理之后,那么您需要找到与之相关的代理,LogFormat通常如下所示:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
Run Code Online (Sandbox Code Playgroud)

并将标头添加到其中(或换出%h只会成为您的反向代理的),如下所示:

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
Run Code Online (Sandbox Code Playgroud)

如果您不想重新定义combined日志格式,请创建自己的:

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_proxy
CustomLog /path/to/logfile.log combined_proxy
Run Code Online (Sandbox Code Playgroud)

%{<header>}i 是一种将任何其他请求标头放入日志文件的方法。

注意:该标头不一定是单个 IP 地址。如果请求来自多个代理,那么您将得到一个逗号分隔的表单列表:client, proxy1, proxy2; 您可能需要更新您的脚本或日志抓取工具以适应这种情况。