对于源站服务器有安全组,防火墙,安全狗等等防护措施的场景,接入 CDN 后需要在源站服务器做白名单配置,只允许回源到 CDN IP 地址,减少源 IP 暴露,阻止恶意请求直接绕过 CDN 访问源站,提高安全性。
咨询了腾讯云 CDN 工程师关于 CDN IP 回源给出的最优解就是判断加 Header,工程师不建议我添加 CDN IP 地址段到 NGINX 进行判断,因为 CDN IP 地址段分布全国且数量比较多,而且 IP 地址也会不定时更新,如果 CDN IP 更新之后没来得及添加,会导致回源失败。
在搜索相关文档时,发现已经有人实现了,CDN - 获取回源节点白名单 一文再次向腾讯 CDN 工程师进行了求证此文档是否正确,工程师答复正确之后转载过来并记录。
方法:
CDN 固定 Request Header
CDN 回源有个固定 Request Header ,就是 X-Tencent-Ua: Qcloud
可以在源站服务器做一个判断,回到源站的请求必须携带 X-Tencent-Ua: Qcloud 才能通行
在 NGINX 中可以加入下面的规则
if ($http_x_tencent_ua != "Qcloud") { return 403; }
自定义 Request Header
关于腾讯云 CDN 回源教程就到此结束,如果有更好的方法也可留言探讨...
2021.11.25 更新
致命 BUG:所有搜索引擎蜘蛛无法正常抓取网页,返回 403 错误,也就是所有的搜索引擎都不会爬取收录你的网站...
只能取消上述 nginx 规则以及图片中的回源HTTP请求头配置,除非你不想让它们抓取收录。
再次工单咨询腾讯云 CDN 工程师之后,经过他测试也无法在只允许腾讯云 CDN 回源源服务器的情况下搜索引擎蜘蛛正常抓取,他说会把这个需求提上日程,待功能上线之后通知...
看你CDN使用效果,进一步打消了我用的念头,评论框缓存的别人用户信息,我还得编辑修改…
这个设置搞不懂 哈哈。
我是在nginx 防火墙 开启cdn支持 不然有时候就是出问题。
额 我用的CDN IP较少 直接把IP加白了~