在Apache坐在反向代理(例如Squid)后面的情况下,cgi环境变量REMOTE_ADDR
获取代理的地址而不是客户端.
但是,代理将设置一个名为X-Forwarded-For
包含客户端原始IP地址的标头,以便Apache可以看到它.
问题是,我们如何让Apache替换标头中REMOTE_ADDR
的值,X-Forwarded-For
以便所有Web应用程序都能透明地看到正确的地址?
小智 14
你可以使用mod_rpaf.http://stderr.net/apache/rpaf/
小智 7
请注意,如果请求已遍历多个代理,则X-Forwarded-For标头可能包含IP地址列表.在这种情况下,您通常需要最左边的IP.您可以使用SetEnvIf提取它:
SetEnvIf X-Forwarded-For "^(\d{1,3}+\.\d{1,3}+\.\d{1,3}+\.\d{1,3}+).*" XFFCLIENTIP=$1
Run Code Online (Sandbox Code Playgroud)
注意用$ 1设置XFFCLIENTIP环境变量保持第一组的内容在正则表达式(括号).
然后,您可以使用环境变量的值来设置标头(或以Apache日志格式使用它,以便日志包含实际的客户端IP).
归档时间: |
|
查看次数: |
48814 次 |
最近记录: |