Apache日志记录通过squid反向代理访问的客户端ip
星期三, 8月 15th, 2007通过squid反向代理访问时,apache日志中,不管使用 %h 还是 %a 格式字符串,记录的都是代理服务器的ip,而不是客户端的真实ip。
在squid发到apache的http请求头中有一项: X-Forwarded-For ,是真实客户端的ip,可以在apache中定义日志格式,把 %{X-Forwarded-For}i 代替 %h 就可以记录客户端的真实ip。
在 httpd.conf 中定义:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Host}i\" \"%{Referer}i\" \"%{User-Agent}i\"" combinedIpHost
CustomLog logs/access_log combinedIpHost
其中 %{X-Forwarded-For}i 为客户端真实ip, %{Host}i 是访问的主机名,如果网站绑定多个域名时,可以区分是通过那个域名访问的, %{Referer}i 是引用页,其他格式可以通过Apache文档找到。