Tom*_*Tom 2 php apache proxy nginx
我已经阅读了很多有关此主题的文章,并尝试了几种解决方案,但没有找到有效的散热片。
我在Apache服务器之前设置了Nginx反向代理。当我的PHP应用程序使用REMOTE_ADDR函数时,它将获得Nginx服务器的IP,而不是用户。
我正在使用Apache 2.4.10,因此应安装module_remoteip.c。但是它没有被加载。
因此,我安装了rpaf_module。看来此模块已正确安装,并且phpinfo()mod_rpaf-2与加载的模块一起显示。我用以下内容修改了/etc/apache2/mods-available/rpaf.conf文件:
<IfModule rpaf_module>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 172.19.0.5 # ip of Nginx server
RPAFheader X-Forwarded-For
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我的Nginx配置如下所示:
location / {
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass 172.19.0.4;
}
Run Code Online (Sandbox Code Playgroud)
感谢帮助?
您的访问者的IP地址应该可以使用访问
$_SERVER['HTTP_X_REAL_IP'];
Run Code Online (Sandbox Code Playgroud)
代替
$_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)
如果要替换REMOTE_ADDR标题,请在NGINX配置中尝试以下操作:(并且不要忘记重新加载/重新启动NGINX服务器)
location / {
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_pass 172.19.0.4;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12900 次 |
| 最近记录: |