|
|
这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多站长在网站接入 CDN 之后,会遇到一个问题:
要么防盗链失效,静态资源被其他网站随便引用;
要么设置太严格,连 CDN 自己的节点都被拦截,出现 403 或访问异常。
其实,防盗链和安全策略在使用 CDN 时要重新调整一下,
下面分享一些实用的配置思路和建议。
一、什么是防盗链?
简单说,防盗链 是用来限制哪些网站可以引用你的图片、视频、JS、CSS 等静态资源。
比如别人把你的图片直接贴在他的网站上,这就是“盗链”。
在接入 CDN 之后,请求大部分都会先经过 CDN 节点,
CDN 回源时可能会带上自己的 Referer 或空 Referer,
这时如果源站防盗链配置过于严格,就会导致 CDN 无法正常访问。
二、Nginx 防盗链正确写法
下面是一个常见的防盗链配置示例,支持自家域名、CDN 节点和空 Referer。
- location ~* \.(jpg|jpeg|png|gif|bmp|webp|js|css|mp4|avi|mp3)$ {
- valid_referers none blocked yourdomain.com *.yourdomain.com cdn.yourdomain.com;
- if ($invalid_referer) {
- return 403;
- }
- }
复制代码 说明:
none:允许空 Referer(有些 CDN 节点回源时可能是空的)。
blocked:允许隐藏 Referer(部分浏览器或 APP 不会带 Referer)。
yourdomain.com:主域名。
cdn.yourdomain.com:CDN 的加速域名(也可以换成你的实际 CDN 域名)。
如果你使用了多家 CDN,可以把多个域名写在同一行。
三、CDN 防盗链配置建议
大部分 CDN(如 Cloudflare、阿里云、腾讯云、FunCDN 等)
都支持在管理面板中配置防盗链策略,常见有两种:
1. 源站模式防盗链
由源站(Nginx/Apache)判断 Referer。
配置灵活,但需要 CDN 回源正确带 Referer。
2. CDN 层防盗链
在 CDN 面板设置允许访问的域名白名单。
一般推荐这种方式,因为可以直接在边缘节点拦截盗链请求。
建议:
静态资源(图片、视频等)可以在 CDN 层配置防盗链。
动态请求(PHP、API)建议留给源站判断。
四、防火墙与安全策略优化
网站接入 CDN 后,真实访问者的 IP 不再是客户端 IP,
源站看到的通常是 CDN 节点的 IP。
如果安全策略没调整好,容易出现误封或误拦。
1. 宝塔防火墙
放行 CDN 回源 IP 段。
在“安全”→“防火墙”中添加 CDN 节点的 IP 段。
部分 CDN 提供定期更新的 IP 列表,可以定期导入。
2. Fail2ban / WAF
在过滤规则中排除 CDN 节点 IP。
或启用真实 IP 获取模块(如 real_ip_header X-Forwarded-For)。
3. Nginx 获取真实 IP
如果不加下面这段,日志里看到的都是 CDN 节点 IP。
- set_real_ip_from 0.0.0.0/0; # 可以写具体 CDN IP 段
- real_ip_header X-Forwarded-For;
- real_ip_recursive on;
复制代码 然后在日志中使用 $realip_remote_addr 获取真实访客 IP。
五、额外建议
1. 防盗链不要太死板。
有些访问来自移动端或小程序,Referer 可能为空,不要直接拒绝。
2. 定期检查日志。
查看是否有异常请求频率或大量 403 拒绝的情况。
3. 使用 CDN 的防护能力。
比如开启访问频率限制、WAF 规则、地区访问控制等。
4. 分开加速静态与动态内容。
动态内容不要做过多缓存,以免影响业务逻辑。
总结
网站接入 CDN 后,原本在源站层生效的安全策略都要重新审视。
防盗链配置要兼顾 CDN 回源机制,安全规则要兼顾节点 IP。
建议先在测试环境调整好再正式上线,这样能避免访问异常或误封。
|
|