Nginx做前端时,后端Apache获得真实IP的做法
kevin.Zhu 发布于:2013-1-16 0:12 分类:Apache 有 18 人浏览,获得评论 0 条
因为网站最前端是NGINX,做的PROXY来转发 请求到内部的apache上,所以获取的IP 都是NGINX PROXY CILLENT IP。
NGINX+APACHE环境搭建请参考《Nginx+Apache+Mysql+Php+eaccelerator+Zend 构建高性能的WEB服 务器》一文,
这样很多基于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未必就会按照这个来接收,所以这里推荐一个apache的第三方的mod
引用:
说明:http://stderr.net/apache/rpaf/
下载:http://stderr.net/apache/rpaf/download/
最 新版本是 mod_rpaf-0.6.tar.gz
首先安装
ubuntu12.04安装 : apt-get install libapache2-mod-rpaf 即可
引用:
# tar zxvf mod_rpaf-0.6.tar.gz
# cd mod_rpaf-0.6
# /usr/local/www/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
接 着在 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
这样就可以获取客户端访问的真实IP了。