本文按症状汇总 CDN 回源场景的典型问题与排障方法,覆盖回源失败与 5xx 报错、重定向循环、4xx 报错、OSS 回源报错、回源内容与行为异常等场景。
症状速查表
先根据客户端观测到的现象定位排查入口,再按对应章节的步骤逐项排查。
现象或状态码 | 常见原因 | 排查入口 |
502 Bad Gateway | 回源协议或端口与源站监听不一致、回源 SNI 缺失、源站证书无效 | |
回源协议为“跟随”时返回 502 | 客户端以 HTTPS 访问,CDN 随之以 HTTPS 回源,但源站不支持 HTTPS | |
504 Gateway Timeout | 源站响应慢、防火墙静默丢包、回源 HTTP 请求超时时间过短 | |
503 Service Temporarily Unavailable | 源站服务异常或负载过高、源站限流、安全软件拦截回源 IP | |
ERR_TOO_MANY_REDIRECTS | 源站配置了 HTTP 到 HTTPS 强制跳转,而 CDN 以 HTTP 协议回源 | |
配置回源 HOST/SNI 之后才出现重定向循环 | 源站匹配到目标站点后,该站点的强制跳转规则随之生效 | |
配置回源 HOST 后返回 404、403、500 或 502 | 回源 HOST 与源站虚拟主机(server_name、ServerName、IIS 主机名)不匹配 | |
403 Forbidden | CDN 侧访问控制规则命中,或源站防盗链、IP 限制、WAF 拦截回源请求 | |
经 CDN 访问返回 404,直连源站正常 | 回源 HOST 错误、节点缓存了旧的 404、请求路径大小写或编码差异 | |
报错 bucket acl | 源站 OSS Bucket 为私有模式,且未开启 OSS 私有 Bucket 回源 | |
报错 forbidden by kms | OSS 对象使用 KMS 加密,CDN 回源角色缺少 KMS 解密权限 | |
终端适配失效(不同终端返回相同页面) | 首个终端的 302 跳转响应被缓存,其他终端访问同一 URL 时命中该缓存 | |
页面跳转失败或部分资源无法访问 | 忽略 URL 参数导致不同参数的请求共享同一份缓存,或回源 HOST 不匹配 | |
大文件下载中断、断点续传或视频拖拽失败 | 源站不支持 Range 请求,或 Range 回源时源站响应了非 206 状态码 |
如何判断问题是否出在回源环节
回源问题通常表现为访问加速域名返回 5xx/4xx,或响应内容与预期不符。可按以下步骤先确认责任方,再进入对应章节排查。
确认请求是否经过 CDN:执行
curl -I http(s)://加速域名/资源路径查看响应头。若响应头中包含X-Cache、Via等 CDN 特征字段,说明请求已到达 CDN 节点;若没有这些字段,请执行dig 加速域名确认解析结果是否为 CDN 分配的 CNAME。解析不正确时请先修正 DNS 解析,确保加速域名只解析到 CDN 提供的 CNAME 记录;解析正确但仍无 CDN 特征响应头时,需排查 DNS 劫持或本地 hosts 绑定。说明响应头中出现
Server: AliyunOSS不能直接判定请求直连了 OSS。当 OSS 作为 CDN 源站时,CDN 回源后也可能透传该响应头,请以 DNS 解析结果和 CDN 特征响应头为准。判断异常来自缓存还是回源:确认请求经过 CDN 后,根据
X-Cache判断。为
HIT时请求命中 CDN 缓存,异常响应可能来自旧缓存,建议先执行 URL 刷新再重新访问复现。为
MISS时 CDN 已回源,若仍异常,则问题大概率出在回源链路或源站响应。对比直连源站与经 CDN 访问的结果:绑定本地 hosts 或直接访问源站 IP/域名。若直连源站正常、经 CDN 访问异常,重点排查回源配置(回源协议、端口、回源 HOST、回源 SNI)以及源站对 CDN 回源 IP 的处理策略;若直连源站同样异常,请优先修复源站问题,CDN 侧无需调整。
对比 CDN 访问日志与源站访问日志:若源站日志中没有收到对应请求,说明回源请求在到达源站前就已失败,需排查 DNS 解析、网络连通性、TLS 握手、安全组或防火墙等环节;若源站收到请求但返回错误,请对比两侧日志的请求路径、Host、User-Agent、Referer 等字段,逐字段定位差异点。
回源失败与返回 5xx 问题
重定向异常类
回源4xx报错类
区分不同状态码的排查重点:
404:请求到达了源站,但源站在该虚拟主机下找不到对应资源。重点排查回源请求路径是否正确、CDN 是否缓存了旧的 404 响应。
403:源站拒绝了请求。重点排查 Referer 防盗链、IP 白名单、WAF 规则、Host 头与源站安全策略是否匹配。
OSS 回源报错类
内容与行为异常类
通用操作说明
以上多个场景都会用到“刷新缓存”和“维护回源 IP 白名单”两项操作,此处统一说明。
何时需要刷新缓存:
修改回源配置(回源协议、回源端口、回源 HOST、回源 SNI、缓存规则等)后,新配置仅对后续的回源请求生效,节点上已缓存的异常响应(如 403、404、301/302 重定向)不会自动失效。因此修改配置后建议执行一次刷新,否则可能误判为“配置未生效”。配置修改后需下发到全网节点,通常几分钟内完成。
刷新方式选择:
URL 刷新:适用于已明确异常资源具体地址的场景,精确清除单个资源的缓存。
目录刷新:适用于整个目录下的资源都可能受影响的场景,例如修改回源 HOST 后整站返回过 404。
正则刷新:适用于需要按路径特征或后缀批量刷新的场景。
如需刷新全站生效,可对域名根目录执行目录刷新,或调用 RefreshObjectCaches 接口并将 Force 参数设为 true。各类刷新的具体操作、生效时间和每日配额限制请参见刷新和预热资源。
维护回源 IP 白名单:
502、503、504 以及源站侧 403 的多个场景,根因都是源站拦截或限流了 CDN 回源 IP。回源 IP 段会随节点调度变化并定期更新,白名单过期后会再次出现回源失败。
建议定期获取最新列表并同步到源站安全组、防火墙、WAF 和限流规则中:需要获取指定域名的 L2 节点回源 IP 列表时,可使用DescribeL2VipsByDomain接口。如果源站通过安全组或防火墙规则控制来源 IP,建议将上述接口接入定时任务,周期性拉取最新回源 IP 段并自动更新白名单。