由于freeshell使用nginx作为反向代理,导致apache不能获取到客户端的ip,从而wordpress中评论的ip地址都显示为了nginx反向代理的ip。

在apache上安装mod_rpaf插件,将nginx设置的X-Real-IP 变量中的真实ip复制到X-Forwarded-For 变量内:

下载插件:

wget http://drupion.com/sites/default/files/mod_rpaf-0.6.tar_.gz

编译安装:

yum install httpd-devel
tar zxvf mod_rpaf-0.6.tar_.gz
cd mod_rpaf-0.6
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

编辑apache的配置文件:添加一个配置文件

/etc/httpd/conf.d/mod_rpaf.conf

 

1
2
3
4
5
6
7
8
9
10
11
12
#载入模块
LoadModule rpaf_module modules/mod_rpaf-2.0.so

# mod_rpaf configuration
#打开模块
RPAFenable On
#根据前端设置主机名
RPAFsethostname On
#将前端反向代理的ip填入xxx.xxx.xxx.xxx
RPAFproxy_ips xxx.xxx.xxx.xxx
#将真实X-Forwarded-For变量填入真实ip
RPAFheader X-Forwarded-For</pre>

但诡异的是,wordpress并不认这个X-Forwarded-For 变量,需要再安装一个叫reverse-proxy-comment-ip-fix的插件,方可获取到真实的客户端ip。