列表页缩略图地址是 /img.php?src=a.jpg&w=300,接上 CDN 后整排返回 404,直接访问源站同一地址却是 200,边缘日志里的请求路径只剩 /img.php。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,加速配置里开了忽略查询串,边缘把 src 和 w 整段丢掉,回源只带脚本路径,脚本取不到 src 就返回 404。缓存键里也不含这些参数,错误结果还会被存下来。

「裁剪参数丢失」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

curl -sI 'https://cdn.example.com/img.php?src=a.jpg&w=300'
curl -sI 'https://origin.example.com/img.php?src=a.jpg&w=300'
# 两边都应为 200

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

具体做法是,先在 CDN 控制台把忽略查询串关掉,确认缓存键包含全部裁剪参数;回源规则里允许透传查询串,别在重写阶段把它清空;刷新这批图片地址,再用 curl 对比边缘和源站的状态码。

最后用这个标准收尾,边缘和源站对同一地址都返回 200,图片内容一致。

作者 9823189