外观
3.2 CDN 段检查
约 699 字
链路验证
本页对应「三、操作步骤」的 3.2,完成加速域名的接入状态、证书、缓存命中与回源连通性检查,确认 CDN 这一跳没有丢请求或返回错误。返回上级:链路检查。
前置条件
- 3.1 已通过:
cdn.example.com能稳定解析到 CDN 提供的接入地址。 - 已取得加速域名的回源 Host、回源端口与协议配置,三项待核对。
- 终端可执行
curl与openssl,并且知道测试 URL,例如https://cdn.example.com/。 - 已确认 3.1 的结果正常,加速域名确实解析到 CDN 接入地址。
- 已准备一个可公开访问的测试页面,避免用私有资源测试时触发鉴权而误判。
操作步骤
- 查看响应头与状态码,确认请求确实经过 CDN 并被正常处理:
curl -sS -D - -o /dev/null "https://cdn.example.com/" | head -n 25- 检查证书链、颁发对象与剩余有效期:
echo | openssl s_client -connect cdn.example.com:443 -servername cdn.example.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates- 强制要求回源,验证 CDN 到源站的取数链路是否通:
curl -sS -o /dev/null -w "%{http_code} %{time_total}\n" \
-H "Cache-Control: no-cache" \
"https://cdn.example.com/?cachebust=$(date +%s)"- 对比两次请求的命中状态,判断缓存是否按预期工作:
for i in 1 2; do
curl -sS -D - -o /dev/null "https://cdn.example.com/" \
| awk 'BEGIN{IGNORECASE=1} /^(x-cache|age|via|server):/'
sleep 2
done结果确认
- 状态码为 200 或 304,响应头中出现 CDN 侧常见的命中标识字段,
via或节点标识不为空。 - 证书
subject与访问域名匹配,notAfter距今大于 30 天,链上无verify error。 - 带时间戳参数的请求返回 200,
time_total没有明显高于正常命中请求,说明回源链路可用。 - 两次请求的
age递增或第二次标记为命中,说明缓存规则已生效。
注意事项
- 响应头字段名各家不同,以实际返回为准,不要套用固定字段名判断命中。
- 测试时避免请求带登录态的私有资源,否则可能被缓存策略拒绝或产生脏缓存。
- 若回源返回 5xx,先跳到 3.3 直连源站确认,不要在 CDN 侧反复改配置。
- 测试 URL 选择线上真实页面,不要用不存在的路径,404 响应同样会被缓存,后续排障会多一层干扰。
- 证书检查以
openssl的实际握手结果为准,控制台显示“已部署”不代表所有节点都已生效,必要时换出口 IP 复测。 - 对比命中结果时固定同一节点与同一资源,跨节点对比没有意义,缓存本就按节点独立生效。