站点挂在国内某 CDN 后面,百度站长平台的抓取诊断从 2026 年 10 月 28 日起连续报「连接超时,返回码 522」,同一时刻 Google 抓取一切正常。源站 Nginx 日志按百度 UA 过滤,一条记录都没有,请求根本没到源站。试过关闭防火墙、放开所有来源 IP,报错依旧。
一开始怀疑是「源站开了 IPv6 监听但没有 AAAA 回源路径,百度走 IPv6 被丢弃」,查了一圈,方向不对。
把日志和配置对完,能解释这个现象的基本就这几处。CDN 回源端口配成 8080,源站只监听 80 和 443,回源连接直接超时。少数情况下是回源 Host 写成 CDN 自己的域名,源站匹配不到 server_name 落到默认块。
少数情况下是默认站点返回 444 静默关连接,这类请求不写 access_log,日志看着干净。
第一件事是绕开 CDN 用百度 UA 直连源站
curl -A 'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)' -sI https://www.example.com/ --resolve www.example.com:443:203.0.113.10
接着核对回源端口与 Host 头
curl -sI http://203.0.113.10/ -H 'Host: www.example.com'
再往下放开 TLS 版本限制并保留访问日志
ssl_protocols TLSv1.2 TLSv1.3;
access_log /var/log/nginx/access.log;
末了看域名是否解析出了 AAAA 记录
dig +short AAAA www.example.com
恢复的判定其实很直接。抓取诊断返回 200 并显示下载耗时与正文摘要,源站日志里出现百度 UA 的记录,CDN 侧回源 5xx 归零。
补一句。CDN 报的超时多数不是源站慢,而是回源那一段没接通,先用 –resolve 直连源站才能分清责任。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
