admin avatar

nginx安全设置之-限制IP来源只能为cloudflare

🕛 by admin

如果想进一步提高网站的安全性,比如比较有效的防止网站被采集,

可以尝试把服务器只能为来自cloudflare 的Ip 链接

其实这种方法很简单,不过国外已经有人写好了脚本。。。

这里就用该脚本配置nginx只能来自cloudflare的IP链接

编辑Nginx.conf文件载入cloudflare.conf文件

include /etc/nginx/cloudflare.conf;

如果在nginx.confserver段载入,则表示所有的虚拟主机都只允许来自cloudflare 的IP链接

如果在nginx.confhttp段载入,则表示该域名只来自cloudflare 的IP链接

编辑cloudflare.conf文件,添加以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#Cloudflare ip addresses

# - IPv4
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;

# - IPv6
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;

real_ip_header CF-Connecting-IP;

你也可以把上面的set_real_ip_from替换成 allow

在文件末尾添加deny all也是可以的

上面是cloudflare的cdn IP地址,你可以从以下地址找到

https://www.cloudflare.com/ips/

这里有个问题,假设cloudflare新增了数据中心或者更新了ip,那么需要手动更新不是很麻烦?

老外也想到了这个问题,所以写了下面的自动更新cloudflare CDN IP地址的脚本

下载该脚本,并赋予脚本执行权限,添加crontab 自动更新

1
2
3
4
5
6
7
8
9
10
wget https://raw.githubusercontent.com/ergin/nginx-cloudflare-real-ip/master/cloudflare-sync-ips.sh

chmod +x cloudflare-sync-ips.sh

crontab -e

30 2 * * * /opt/scripts/cloudflare-sync-ips.sh >/dev/null 2>&1

service cron restart

搞定。。。主要相关文件的路径要统一。。。

脚本作者官方代码仓库

https://github.com/ergin/nginx-cloudflare-real-ip?vpslala.com

💘 相关文章

写一条评论