Cloudflare 522 Connection Timed Out:从边缘到源站的连通性排查
522 表示 Cloudflare 与源站连接的建立或请求确认阶段超时,不应与等待 HTTP 响应超时的 524 混淆。核心是检查源站可达性、端口、防火墙与容量,而不是反复刷新 CDN 缓存。
维护者 Kevin · Ovalk
适用范围与前提
适用于 Cloudflare 代理域名连接源站的场景;仅 Workers 的故障或仅 DNS 域名需要不同排查路径。
确认目标源站、监听端口和防火墙负责人。直连探测应来自获准网络并保留域名及 SNI;不要公开源站旁路或削弱 TLS 校验。
常见症状
- 访问网站显示 Cloudflare error 522
- 绕过 CDN 访问源站正常或同样异常
- 源站日志没有相应请求或出现连接堆积
1. 确认源站健康与监听
从源站本机确认应用、代理和端口状态,再从允许的外部网络验证公网入口。若源站自身不响应,优先走应用/负载排查;若仅边缘不通,检查防火墙、WAF 与允许来源。
curl -sS -o /dev/null -w "%{http_code} %{time_total}\n" http://127.0.0.1/health
ss -lntp | grep -E ":80|:443"2. 检查网络策略与连接容量
安全组、iptables、宿主机防火墙或连接跟踪表满都可能让边缘连接超时。查看允许规则是否覆盖 Cloudflare 的源 IP 范围,并同时检查文件描述符和 SYN 队列。
sudo iptables -S
ss -s
sysctl net.core.somaxconn3. 用旁路访问做对照
在维护窗口或受控环境下,以 hosts 覆盖或专用源站域名验证 Host header、TLS SNI 和应用响应。不要公开暴露未保护的源站作为长期绕过方案。
curl -I --resolve example.com:443:ORIGIN_IP https://example.com/解读证据
| 观察结果 | 下一步检查 |
|---|---|
| 522 且无源站请求日志 | HTTP 请求可能尚未到达应用,应检查 TCP 连通性、源站地址及过滤,而不是假设缓存故障。 |
| 仅一个网络直连正常 | 对比基于来源的规则、路由及负载;管理员请求成功不能证明 Cloudflare 可达。 |
| 返回 524 而非 522 | 重新分类故障:已连接的源站迟迟不返回 HTTP 响应,属于不同阶段的问题。 |
说明性诊断案例
以下假设案例用于解释推理,并非客户真实事故,也不代表已在你的技术环境中测试。
防火墙变更后,本地源站健康检查正常,但 Cloudflare 返回 522。规则允许管理员 IP,却遗漏应允许的 CDN 来源范围。本地成功无法验证边缘到源站的路径。对照防火墙计数和批准的变更,恢复必要的受限访问,再通过代理域名复测。
验证恢复
- 通过 Cloudflare 请求原失败 URL,并将时间与源站访问/错误日志及防火墙计数关联。
- 观察代表性流量与多次探测,确保规则变更后源站未意外向未批准来源开放。
回滚与停止条件
保存先前批准的防火墙及源站配置。若变更扩大暴露面或引发其他故障,通过可用控制台恢复,再应用最小已验证修正;清理缓存无法修复源站连接失败。
预防与长期修复
- 监控源站可用性、连接队列和端到端首字节时间。
- 将 CDN 源 IP 白名单变更纳入自动化维护。
- 准备经认证的源站旁路检查路径,而非公开 IP。
参考资料与纠错
请使用与你安装版本匹配的文档。以下资料解释基础行为,命令仍需结合实际环境验证。
向 Kevin 提交更正,请附页面地址、版本与脱敏复现步骤。请查看编辑原则(英文)。