当 CDN 回源失败时,用户访问网站会出现 502/504 错误或内容无法更新。CDN 回源失败的原因可能涉及源站状态、网络链路、CDN 配置或安全策略,排查时需要先明确边界,再逐步验证。本文基于 Cloudflare 官方文档,提供一套可操作的排查步骤。
回源失败的可能原因
回源失败通常由以下几类问题引起:
- 源站故障:源站服务器宕机、负载过高或网络不可达。
- 网络链路问题:CDN 节点到源站之间的网络中断、路由异常或 DNS 解析失败。
- CDN 配置错误:回源 Host 头、端口、协议等配置不正确。
- 安全策略误拦截:CDN 或源站的防火墙、DDoS 防护规则误拦截了回源请求。
排查步骤
第一步:确认源站状态
首先直接访问源站 IP 或域名,确认源站是否正常响应。可以使用 curl 命令测试:
curl -I http://源站域名
如果源站无响应,检查服务器进程、端口监听、防火墙规则及云服务商状态页。若源站本身异常,先处理源站问题。
第二步:检查 CDN 配置
在 CDN 控制台核对回源配置:
- 回源地址:确保填入的是正确的源站 IP 或域名。
- 回源 Host:部分 CDN 要求设置回源 Host,若与源站虚拟主机配置不匹配,可能导致 404 或 403。
- 回源协议:HTTP/HTTPS 必须与源站支持的协议一致,否则可能因证书或端口问题失败。
第三步:查看 CDN 日志和错误信息
CDN 控制台通常提供日志或调试信息,关注回源状态码。常见错误码含义:
- 502:CDN 无法从源站获取有效响应,可能是源站无响应或超时。
- 504:源站响应超时,可能源站处理慢或网络拥塞。
第四步:模拟回源请求
使用 CDN 节点的 IP 作为 Host 头直接请求源站,模拟回源过程:
curl -H "Host: 您的域名" http://源站IP
如果请求失败,说明源站无法处理该 Host 或 IP 被限制。
第五步:检查安全策略
CDN 自带的安全防护(如 Cloudflare 的 DDoS 防护)可能误拦截正常回源请求。Cloudflare 的 DDoS 防护系统会自动检测并缓解攻击,但有时会误判。可以临时调整防护规则,或添加白名单。
同时,源站防火墙或安全组也可能限制 CDN 节点 IP 的访问。确保源站放行 CDN 的回源 IP 段。
常见误区与失败条件
- 忽略缓存:即使回源失败,CDN 可能仍会提供缓存的旧内容,导致问题“看似恢复”。排查时需注意缓存策略。
- 只检查源站域名:源站域名可能解析到 CDN 自身,形成循环,需使用源站 IP 直接测试。
- 忽视 HTTPS 证书:如果回源协议为 HTTPS,证书过期或不匹配会导致握手失败。
总结
CDN 回源失败的排查需要从源站、CDN 配置、网络和安全策略多个维度入手。按照上述步骤逐步验证,通常能快速定位问题。若涉及复杂场景,可结合 CDN 提供商的官方文档或支持团队进一步诊断。
参考资料
延伸阅读
