2009-08的存档

让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

推荐(0)
收藏
得到OpenID
使用OpenID提供商
35OpenID 35OpenID MyOpenID MyOpenID Flickr Flickr
Google Google Yahoo Yahoo! AOL AOL
Blogger Blogger LiveJournal LiveJournal Verisign Verisign
ClaimID ClaimID Technorati Technorati Vidoop Vidoop
OpenID OpenID 帮助
您还没有登录,请登录后继续操作。
提示:您必需打开Cookie才能使用本系统
请输入您的 OpenID OpenID 登录:
例如:http://yourname.openid.35.com
close