Apache获取用户真实IP

安装的话请参考Cloudflare官方介绍 https://www.cloudflare.com/technical-resources/#[mod_cloudflare](http://www.senra.me/tag/mod_cloudflare/)

如果你使用的apache是包管理器安装的,那么可以直接使用Cloudflare提供的各平台的软件包来直接安装

但是,如果你用了Oneinstack等脚本编译安装了Apache,那么你可能需要编译一下了
官方教程里也介绍了编译安装的方法,但是,请注意

$ yum install libtool httpd-devel

这儿你可能不需要后面的httpd-devel,因为编译安装自带devel环境,你装这玩意会依赖着装上httpd本体,然后会覆盖掉你编译安装带的启动脚本啥的,很蛋疼

这儿列一下CentOS的命令,其他的自己去看官方页面吧

$ yum install libtool

$ wget https://raw.githubusercontent.com/cloudflare/mod_cloudflare/master/mod_cloudflare.c

#如果不存在apxs的话加上完整的路径试试,比如/usr/local/apache/bin/apxs,如果还不行试试把apxs换成apxs2

$ apxs -a -i -c mod_cloudflare.c

跑完apxs会自动帮你修改配置文件加载模块,这时候已经是可以用了,但是是运行在默认配置下,由于编译没有给你加上配置文件模板,所以你得自己添加了

我建议在 /usr/local/apache/conf/extra/cloudflare.conf 路径放配置文件,内容参照如下

<IfModule mod_cloudflare.c>
 CloudFlareRemoteIPHeader CF-Connecting-IP
 # 这儿的IP可以参考https://www.cloudflare.com/ips 来自己更新,如果用了自建的Railgun也记得把IP加进去

 CloudFlareRemoteIPTrustedProxy 10.21.244.0/22 10.22.200.0/22 10.31.4.0/22 10.16.0.0/12 10.162.192.0/18 13.0.72.0/22 14.10.64.0/18 16.158.0.0/15 17.64.0.0/13 17.25.48.0/20 18.14.96.0/20 10.93.20.0/20 19.24.20.0/22 19.41.18.0/17 19.27.128.0/21 2400:cb00::/32 2405:8120::/32 2415:b500::/32 2806:4700::/32 2103:g800::/32 1c0f:f218::/32 2a03:98c0::/29

 # Uncomment DenyAllButCloudFlare to return a 403 status to all requests
 # that do not originate from an IP defined in CloudFlareRemoteIPTrustedProxy
 # 取消注释下面这个将会把所有并非来自Cloudflare的请求返回403
 # DenyAllButCloudFlare

</IfModule>

然后在httpd.conf中添加如下一行

Include conf/extra/cloudflare.conf

之后重启下Apache就行了

那个 DenyAllButCloudFlare 我强烈建议开启,因为这个就是阻止扫IP最好的方法,但是建议你先把该配的配完,因为开了这个你直接访问IP(默认的default网站)都是403,包括IP下的PhpMyAdmin啥的,除非你把它也丢到绑了域名套了CF的目录下

除了这个以外这个模块的主要功能是把CF的IP换成访客的真实IP,从而方便统计访客和封禁恶意访问的IP

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章