本文概括了在网站启用CDN后出现图片无法显示时的典型诊断流程与修复要点,覆盖如何从浏览端、CDN边缘和源站三处采集日志,如何判断常见状态码与响应头引起的问题,以及按优先级执行的恢复步骤,目标是尽快恢复静态资源可访问性并降低业务影响。
首先排查三处日志来源:浏览器开发者工具(Network面板)记录请求URL、状态码与响应头;CDN边缘日志(Edge logs)显示外网请求命中或回源情况;源站访问/错误日志记录后端响应与内网请求。组合这三处日志可以判断是前端请求被拒、CDN缓存错误还是源站本身缺失资源。注意同时检查DNS解析日志和负载均衡健康检查日志以排除网络路由问题。
状态码是定位关键线索:403通常指热链防护或权限校验、签名URL失效;404指CDN未回源到正确路径或源站文件不存在;502/504指回源超时或网关错误;200但图片无法显示时需检查Content-Type或CORS。结合CDN返回的X-Cache或X-Cache-Status头可判断是命中缓存还是回源失败。
常见原因包括缓存了错误响应(404/403)、路径重写导致CDN请求不同URL、回源校验(Host、Referer、自定义Header)不匹配、签名或Token过期、以及SSL证书链问题。另一个常见问题是CDN设置了过期策略或压缩策略修改了响应头,导致浏览器误判MIME类型。排查这些因素需要查看CDN配置与边缘日志。
按照优先级从外到内排查:浏览器拿到的请求详情(状态码、响应头、请求URL);对比CDN边缘日志同一时间段的条目,看是否有回源记录或错误码;查源站日志确认是否接收到回源请求及其响应码。使用curl模拟请求并携带Host头或Referer:curl -I -H "Host: example.com" https://cdn.example.com/path。必要时查看CDN提供的Trace或Debug工具以获取内部路由与回源链路细节。

针对常见场景给出恢复顺序:若是签名/热链问题,先修复签名生成或关闭验证然后批量刷新缓存;若是404,确认源站文件路径与权限,必要时补回文件并回源;若是回源超时或502,检查源站健康、网络策略、内存与进程状态;若是CORS或Content-Type问题,修改源站响应头并Purget CDN缓存。每一步执行后用浏览器或curl验证并查看边缘日志确认状态变化。
恢复生效时间取决于CDN缓存TTL和是否手动清理:默认TTL较长时需主动执行Purge或刷新策略以即刻生效(按文件或目录批量清理)。DNS更改通常受TTL影响,需等待或缩短TTL重试。推荐在修复后立刻对受影响的URL进行强制清理并记录操作时间窗口,以便后续回溯。
建议建立自动化报警:监控静态资源的4xx/5xx比率、CDN边缘错误率及回源时延;在部署或修改CDN规则时先在灰度域进行验证;对关键资源设置低TTL与回源回退策略;为签名或Token设置自动刷新机制并记录Key生命周期。另需定期比对源站与CDN索引一致性,避免因路径变动导致缓存失联。