首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在apache中将REMOTE_ADDR设置为X-Forwarded-For

在apache中将REMOTE_ADDR设置为X-Forwarded-For
EN

Stack Overflow用户
提问于 2010-02-12 04:05:14
回答 9查看 56.2K关注 0票数 14

在Apache位于反向代理(例如Squid)之后的情况下,cgi环境变量REMOTE_ADDR将获取代理的地址,而不是客户端的地址。

但是,代理将设置一个名为X-Forwarded-For的头来包含客户端的原始IP地址,以便Apache可以看到它。

问题是,我们如何让Apache将REMOTE_ADDR替换为X-Forwarded-For头中的值,以便所有web应用程序都能透明地看到正确的地址?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-08-07 01:22:34

为此,您可以使用mod_rpaf。http://stderr.net/apache/rpaf/

票数 13
EN

Stack Overflow用户

发布于 2012-04-27 14:53:59

注意,如果请求已经遍历了多个代理,则X-Forwarded-For报头可以包含IP地址的列表。在这种情况下,您通常需要最左边的IP。您可以使用SetEnvIf解压缩以下内容:

代码语言:javascript
复制
SetEnvIf X-Forwarded-For "^(\d{1,3}+\.\d{1,3}+\.\d{1,3}+\.\d{1,3}+).*" XFFCLIENTIP=$1

注意,使用$1设置XFFCLIENTIP环境变量以保存正则表达式中第一个组的内容(在括号中)。

然后,您可以使用环境变量的值来设置标头(或者以Apache日志格式使用它,以便日志包含实际的客户端IP)。

票数 8
EN

Stack Overflow用户

发布于 2019-03-19 01:14:45

目前,apache模块mod_remoteip是推荐的方法;rpaf还没有得到可靠的维护,可能会导致问题。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2247352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档