网络上看到一篇如何通过防火墙实现只通过CDN访问,大部分都是只允许 CDNip 访问,但是 CDNip 太多,不齐全,容易导致网站无法访问,随后在百度搜索找到解决方案。

注意:请确保你的CDN可以修改请求头信息,因为该操作通过CDN修改请求头信息之后,将请求信息传回源站服务器后进行判定

实现

由于本人经费不足,只能使用 Cloudflare 的CDN来实现该教程。
  1. 找到你CDN所在的转换规则(一般在页面规则内,详情请咨询自己CDN服务商),这里使用 Cloudflare 实现,添加HTTP请求头修改规则:
  2. 当传入请求匹配时,主机名 = 你自己的域名
  3. 修改静态请求头(User-Agent = XXXXXX(一个别人猜不到的值即可)

这里CDN的设置就完成了,直接保存即可。然后回到你服务器,这里使用宝塔面板作为例子。

  1. 打开宝塔面板,找到你对应设置域名的配置文件,在root后面添加以下代码
别人猜不到的值,就是你在CDN页面设置的那个值。
if ($http_user_agent != "XXXXXX(一个别人猜不到的值即可)"){
    return 444;
}

到这里就全部设置完毕了,保险起见可以重启一遍服务器。

最后修改:2022 年 09 月 23 日

感谢看完,可以点个赞~请作者喝杯咖啡~ヾ(◍°∇°◍)ノ゙❤