Nginx做前端时让Apache得到真实IP
注意:本文最后更新于 2769 天前,有关的内容可能已经发生变化,请参考使用。
因为本网站最前端是NGINX,做的PROXY来转发请求到内部的apache上,所以获取的IP都是NGINX PROXY CILLENT IP。这样很多基于IP判断的PHP程序都会出现一系列的问题 下面说说在Nginx做前端时让Apache能得到真实IP的做法只修改NGINX的配置NGINX.CONF 在里面加上
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
这只是告诉NGINX在反向代理的时候发送域名和客户真实IP Apache未必就会按照这个来接收 至少FreeBSD7 Apache2.2的环境下是不会的所以这里推荐一个apache的第三方的mod
说明:http://stderr.net/apache/rpaf/
下载:http://stderr.net/apache/rpaf/download/
最新版本是 mod_rpaf-0.6.tar.gz
使用起来非常简单 首先安装
# tar zxvf mod_rpaf-0.6.tar.gz //下载后解压
# cd mod_rpaf-0.6 <br /> #/usr/local/bin/apxs -i -a -c mod_rpaf.c //Apache 1.3.x 的安装方式
#/usr/local/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c //Apache 2.x 的安装方式
接着在httpd.conf中添加
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 # 填写Nginx的来访IP
RPAFheader X-Forwarded-For
确认全部操作成功后重启apache,好了 现在程序可以获取真实IP了。
「倘若有所帮助,不妨酌情赞赏!」
感谢您的支持!
使用微信扫描二维码完成支付