mod_rpaf 是一个 Apache的模块,利用它可以给 Apache 的后端应用提供客户端真实的IP地址。在nginx作为前端,apache作为后端的情况下,apache只能获取到nginx前端的ip地址,而无法获取到用户的真实ip地址,在这种情况下,如果php需要对用户的ip做限制将无法实现。针对这种环境,apache开发了相应的模块mod_rpaf,能够获取到用户的真实ip地址。
mod_rpaf 是一个 Apache的模块,利用它可以给 Apache 的后端应用提供客户端真实的IP地址。
在nginx作为前端,apache作为后端的情况下,apache只能获取到nginx前端的ip地址,而无法获取到用户的真实ip地址,在这种情况下,如果php需要对用户的ip做限制将无法实现。针对这种环境,apache开发了相应的模块mod_rpaf,能够获取到用户的真实ip地址。
如下图:
apache获取真实ip地址
左边只能获取到nginx代理的IP地址,右边Apache才能获取到用户的真实ip地址
使用方法:
# if DSO load module first: LoadModule rpaf_module libexec/apache2/mod_rpaf-2.0.so RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 10.0.0.1 RPAFheader X-Forwarded-For
具体安装配置请往下看
下载安装模块
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz tar -xzvf mod_rpaf-0.6.tar.gz cd mod_rpaf-0.6/ /usr/local/apache2.2.15/bin/apxs -i -c -n mod_rpaf-2.0.slo mod_rpaf-2.0.c
添加apache配置
vi /usr/local/apache2.2.15/conf/httpd.conf # 在最后一行复制如下内容 LoadModule rpaf_module modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 192.168.50.10 # 代理服务器的ip地址(记得做相应修改) RPAFheader X-Forwarded-For 备注:RPAFproxy_ips后面添加代理服务器的ip地址,有几个填几个
查看apache是否有rapf模块
# /usr/local/apache2.2.15/bin/apachectl -M | grep rpaf rpaf_module (shared)
最后重启Apache即可
# /usr/local/apache2.2.15/bin/apachectl -t # /usr/local/apache2.2.15/bin/apachectl restart