【发布时间】:2019-12-03 23:47:34
【问题描述】:
我们正在使用这种配置来授予对我们其中一个网站的访问权限
<LocationMatch "/*">
Order deny,allow
Deny from all
Allow from 127.0.0.0/8
SetEnvIf X-Forwarded-For "(,| |^)192\.168\." WhiteIP
SetEnvIf X-Forwarded-For "(,| |^)172\.(1[6-9]|2\d|3[0-1])\." WhiteIP
SetEnvIf X-Forwarded-For "(,| |^)10\." WhiteIP
Allow from env=WhiteIP
</LocationMatch>
确实,在这个 Apache 服务器前面还有另一个反向代理,所以所有客户端都会有标头。
问题有时是客户端有其他代理在他们身边,X-Forwarded-For 标头将被复制或连接。我们使用(,| |^) 正则表达式技巧正确处理连接,但问题是Apache 似乎只针对第一次出现的Header 运行SetEnvIf。
有关此行为的文档不清楚。关于如何处理这种情况的任何想法? (注意:我们无法控制我们的反向代理的工作方式,只有 Apache)这可能是一个错误吗?我找不到向谷歌询问这个问题的正确方法,也没有找到任何结果。我也尝试过深入研究 mod_setenvif 的代码,但这不符合我的要求。
精度:CentOS 6、Apache 2.2.15 最新补丁版本
【问题讨论】:
-
注意:这个问题也被发送到 users@httpd.apache.org 邮件列表。
标签: apache proxy reverse-proxy setenvif