当前位置: 首页 > OpenSource > 正文

apache日志中 X-Forwarded-For 参数的设定

apache日志中默认有%h来指定来访客户端你的ip地址,但是如果客户端使用了代理上网则%h获得的ip地址会不准。

apache 日志中可以设定 X-Forwarded-For 参数来获取客户端真实的ip地址

对于使用了反向代理的客户端,跟踪真实的ip地址
X-Forwarded-For header is supported by most proxy servers, including Squid,[1] Apache mod_proxy,[2] Pound,[3] Varnish cache,[4] IronPort Web Security Appliance,[5] Radware AppXcel, F5 Big-IP, [6] Blue Coat ProxySG, Cisco Cache Engine, Phion Airlock, Finjan’s Vital Security, NetApp NetCache, jetNEXUS, Crescendo Networks’ Maestro, and Microsoft ISA Server 2004/2006 with Winfrasoft X-Forwarded-For for ISA Server.[7]
X-Forwarded-For header logging is supported by many web servers including Apache and Microsoft IIS 6.0 & 7.0 with the addition of Winfrasoft X-Forwarded-For for IIS.[7]

##########################################
this is a apache’s seting for X-Forwarded-For (f5):

%{X-Forwarded-For}i

LogFormat “%{X-Forwarder-For}i %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” f5_forwarder
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

SetEnvIf X-Forwarder-For “^.*\..*\..*\..*” is-forwarder

CustomLog logs/access_log combined env=!is-forwarder
CustomLog logs/access_log f5_forwarder env=is-forwarder

关于X-Forwarded-For的详细说明,可见http://en.wikipedia.org/wiki/X-Forwarded-For
几点说明:
1、使用正向代理的客户端,为了安全因素,在连接外部网络之前内部代理(网关)会去掉原有的X-Forwarded-For信息,这种情况server端可以信任X-Forwarded-For信息,表明连接出自某个内部网络。
2、如果server端使用了反向代理(比如server在7层代理的后面),这种情况就不能完全信任X-Forwarded-For信息,最好使用一个白名单来进行控制。

3、如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串ip值,究竟哪个才是真正的用户端的真实IP呢?
X-Forwarded-For: client1, proxy1, proxy2
X-Forwarded-For会取得第一个非unknown的有效IP字符串。

本文固定链接: http://2hei.net/apache_xforwardedfor.html | 2hei's site

该日志由 2hei 于2009年02月23日发表在 OpenSource 分类下,
原创文章转载请注明: apache日志中 X-Forwarded-For 参数的设定 | 2hei's site
关键字:

报歉!评论已关闭.