Nginx做前端时让Apache得到真实IP

因为本网站最前端是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了。


「倘若有所帮助,不妨酌情赞赏!」

Holmesian

感谢您的支持!

使用微信扫描二维码完成支付


相关文章

发表新评论