• Nginx做前端时让Apache能得到真实IP的做法

    [Nginx]
    post by Holmesian / 2009-12-13 0:23 Sunday

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

    发表评论: