Apache重写代理标志更改客户端IP地址

时间:2014-05-15 23:40:42

标签: apache .htaccess

我正在使用htaccess文件将所有子目录重定向到index.php文件,并将目录名称作为变量传递。我正在使用代理[P]标志来阻止URL在访问者的浏览器中重定向/更改。

RewriteCond %{REQUEST_URI} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.+[^/])(.*)$ https://domain.com/index.php?user=$1 [P,L,NC]

但是,索引页面使用$ _SERVER [“REMOTE_ADDR”]来跟踪访问者的IP地址。这在测试根域时工作正常,但子目录都显示为相同的内部IP地址(即由于代理)。

我怎么能双管齐下?即在浏览器中保持URL静态,但在两种情况下都获得真正的客户端IP?

2 个答案:

答案 0 :(得分:0)

Apache设置了一些额外的标题来帮助您处理这个问题。您需要修改后端以检查客户端IP的附加(或替代)X-Forwarded-For标头。根据您检查的原因,如果请求来自您的代理的IP,则最好只检查该标头,因为标头可能是欺骗性的。

答案 1 :(得分:0)

詹姆斯 - 谢谢......这让我朝着正确的方向前进。对于那些需要它的人,在更新配置之后,PHP调用以获取代理转发的IP是$ _SERVER [" HTTP_X_FORWARDED_FOR"]。