如果你使用的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 路径放配置文件,内容参照如下
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
然后在httpd.conf中添加如下一行
Include conf/extra/cloudflare.conf
之后重启下Apache就行了
那个 DenyAllButCloudFlare 我强烈建议开启,因为这个就是阻止扫IP最好的方法,但是建议你先把该配的配完,因为开了这个你直接访问IP(默认的default网站)都是403,包括IP下的PhpMyAdmin啥的,除非你把它也丢到绑了域名套了CF的目录下
除了这个以外这个模块的主要功能是把CF的IP换成访客的真实IP,从而方便统计访客和封禁恶意访问的IP