如何判断是CDN配置问题还是源站故障?
要判断是CDN配置问题还是源站故障,核心方法是通过绕过CDN直接访问源站来对比测试,若源站正常而CDN访问异常,则为CDN配置问题;若两者均异常,则为源站故障。以下是系统化的排查步骤:
一、基础排查:快速区分问题范围
1. 修改hosts文件测试(推荐方法)
- 操作步骤:
- 找到hosts文件(Windows:
C:\Windows\System32\drivers\etc\hosts,Mac/Linux:/etc/hosts) - 添加一行:
源站IP地址 域名(如192.168.1.100 www.example.com) - 清除浏览器缓存,访问域名
- 找到hosts文件(Windows:
- 结果判断:
- 能正常访问 → 源站正常,问题出在CDN配置或链路
- 仍无法访问 → 源站故障,与CDN无关
2. 使用curl命令测试回源
- 操作命令:
curl -vI https://您的域名 --resolve 域名:443:源站IP --insecure - 结果判断:
- 返回200状态码 → 源站正常,CDN配置问题
- 返回5xx/4xx状态码 → 源站故障
3. DNS解析验证
- 操作命令:
nslookup -q=cname 您的域名 - 结果判断:
- 解析结果为CDN提供的CNAME → CDN配置已生效
- 解析结果为源站IP → CNAME配置未生效或DNS缓存未更新
二、现象分析:根据错误类型初步判断
1. 常见错误码含义
502 Bad Gateway:
- 典型原因:CDN回源失败(源站不可达、防火墙拦截、回源配置错误)
- 判断方法:检查回源IP是否在源站白名单中
504 Gateway Time-out:
- 典型原因:CDN回源超时(源站响应慢、网络链路问题)
- 判断方法:使用
mtr -r --tcp --port=80 您的域名测试回源链路
403 Forbidden:
- 典型原因:CDN配置错误(回源Host头不匹配、安全策略拦截)
- 判断方法:检查CDN控制台回源Host配置是否与源站虚拟主机一致
2. 访问范围特征
部分地区能访问,部分地区不能:
- 可能原因:CDN节点区域性故障或DNS解析异常
- 判断方法:使用不同地区网络测试,或通过CDN控制台查看节点状态
所有地区均无法访问:
- 可能原因:源站全局故障或CDN配置错误
- 判断方法:结合hosts文件测试结果综合判断
三、深入排查:定位具体问题
1. CDN配置问题排查
检查回源配置:
- 源站IP/域名是否正确
- 回源协议(HTTP/HTTPS)是否匹配
- 回源端口是否与源站监听端口一致
- 回源Host头是否与源站虚拟主机匹配
检查安全策略:
- 源站防火墙/安全组是否放行CDN回源IP段
- CDN控制台是否配置了错误的IP黑白名单
2. 源站故障排查
- 源站连通性测试:
ping 源站IP telnet 源站IP 80/443 - 源站服务状态检查:
- Web服务器(Nginx/Apache)是否运行
- 应用程序是否正常
- 数据库连接是否正常
3. 网络链路诊断
- 使用专业工具:
traceroute/mtr:检测从客户端到CDN节点再到源站的完整链路curl -v:查看完整请求生命周期(DNS解析、TCP连接、TLS握手等)
四、实用工具推荐
1. CDN厂商提供的工具
- IP检测工具:验证客户端是否访问CDN节点(如阿里云CDN控制台的"IP检测"功能)
- 实时监控:查看CDN节点状态、缓存命中率、回源失败率等关键指标
2. 第三方诊断工具
- DNS检测:DNSPod、17CE等
- 网络链路:MTR、PingPlotter
- SSL证书:SSL Labs、sslyze
五、常见问题判断指南
1. CDN配置问题特征
- 表现:修改hosts文件后能正常访问
- 典型场景:
- CNAME配置错误或未生效
- 回源Host头设置错误
- SSL证书未配置到CDN平台
- 缓存策略设置不当导致频繁回源
2. 源站故障特征
- 表现:修改hosts文件后仍无法访问
- 典型场景:
- 服务器宕机
- Web服务停止
- 数据库连接失败
- 防火墙完全拦截所有访问
3. 混合问题特征
- 表现:部分地区能访问,部分地区不能
- 典型场景:
- 源站带宽不足导致部分CDN节点回源失败
- 跨境网络问题导致海外用户访问异常
- CDN节点区域性故障
六、排查流程图
初步测试:修改hosts文件或使用curl测试回源
- 源站正常 → 进入CDN配置排查
- 源站异常 → 直接排查源站
CDN配置排查:
- 检查CNAME配置 → 检查回源配置 → 检查安全策略 → 检查缓存规则
源站故障排查:
- 检查服务器状态 → 检查Web服务 → 检查应用程序 → 检查数据库
网络链路排查:
- 使用traceroute/mtr → 分析丢包点 → 确定是否为运营商问题.