站点接入 CDN 后,一部分图片变成 403,直接在源站地址打开却正常。这种情况多半是源站开了防盗链,而 CDN 回源时带着的 Referer 不被规则认可。

两种请求分别测一次

curl -I -e "https://你的域名/" https://cdn域名/图片.jpg
curl -I https://cdn域名/图片.jpg

带来源页的请求返回 200,不带来源的返回 403,说明规则只放行了本站 Referer。反过来如果带来源反而被拦,则是 CDN 侧开了鉴权,链接里的签名参数过期了。

源站防盗链的常见写法

location ~* \.(jpg|jpeg|png|webp|gif)$ {
    valid_referers none blocked server_names
        *.你的域名;
    if ($invalid_referer) {
        return 403;
    }
}

none 表示允许空 Referer,不加这一项,用户直接打开图片或用某些 App 浏览时都会被拦。回源域名同样要写进白名单,否则 CDN 节点自己的请求也会被判为盗链。

回源配置也要核对

CDN 控制台里一般有「回源 Host」和「回源 Referer」两项。回源 Host 写成源站域名、Referer 设成你的站点域名,才能和上面的白名单对上。改成一致后清一次 CDN 缓存再验证。

如果用签名 URL 防盗,过期时间别设太短,页面滚动到图片时签名已失效也会出现零星 403。

排查时按「源站直连是否 200、带 Referer 是否 200、CDN 地址是否 200」三步走,能快速定位是规则问题还是缓存问题。

作者 9823189

在 “接上 CDN 后部分图片 403,防盗链 Referer 规则怎么放行” 有 1 条评论

发表回复