由于freeshell使用nginx作为反向代理,导致apache不能获取到客户端的ip,从而wordpress中评论的ip地址都显示为了nginx反向代理的ip。
在apache上安装mod_rpaf插件,将nginx设置的 X-Real-IP 变量中的真实ip复制到 X-Forwarded-For 变量内:
下载插件:
1 |
wget http://drupion.com/sites/default/files/mod_rpaf-0.6.tar_.gz |
编译安装:
1 2 3 4 |
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的配置文件:添加一个配置文件
1 |
/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 |
但诡异的是,wordpress并不认这个 X-Forwarded-For 变量,需要再安装一个叫reverse-proxy-comment-ip-fix的插件,方可获取到真实的客户端ip。
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
我从github下载的mod_rpaf,也是apache,安装好之后重启,WordPress就可以看到真实IP了。原因未知
你的httpd.conf和conf.d目录中是怎么写的?
不错哟,谢谢博主分享