让NGINX后端的APACHE能获取到真实IP 2009年8月3日 22:10
本网刚上线,发现DISUCZ的访问者在线列表,所有访问者的IP都是127.0.0.1。
想到问题所在,因为本网站最前端是NGINX,做的PROXY来转发请求到内部的apache上,所以获取的IP都是NGINX PROXY CILLENT 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和APACHE在同一台服务器上,问题解决。
如果NGINX和APACHE不在同一台服务器上,需要如下方式:
apache这一个来自第三方的mod 配合Nginx proxy 使用。
说明: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
Apache 的目录按自己的环境修改,并选择相应的安装方式:
#/usr/local/apache/bin/apxs -i -a -c mod_rpaf.c Apache 1.3.x 的安装方式
#/usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c Apache 2.x 的安装方式
完成后会在 http.conf 的 LoadModule 区域 为你多加了一行。
LoadModule mod_rpaf-2.0.so_module modules/mod_rpaf-2.0.so
经 apache 2.2.6 的实验,使用这一行启动 apache 的时候会报错的。
所以改为:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
并在下方添加
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 192.168.10.2 # 填写Nginx所在的内网IP。
RPAFheader X-Forwarded-For
保存退出后重启apache
您还没有登录,请登录后继续操作。