Cloudflare 报错 522 Connection Timed Out 怎么排查解决?

文章导读
Cloudflare 522 错误表示 Cloudflare 节点无法在指定时间内与你的源服务器建立连接,最常见的原因是源站防火墙拦截了 Cloudflare 的 IP 段,或者源服务器本身过载宕机,排查时请优先确认源站是否可直接访问。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

Cloudflare 522 错误表示 Cloudflare 节点无法在指定时间内与你的源服务器建立连接,最常见的原因是源站防火墙拦截了 Cloudflare 的 IP 段,或者源服务器本身过载宕机,排查时请优先确认源站是否可直接访问。

先说结论:522 本质是连接超时,问题大概率出在源服务器网络可达性或负载上,而不是 Cloudflare 本身故障。

  • 先确认:通过直连 IP 方式测试源服务器是否响应
  • 先处理:检查服务器防火墙和安全组是否放行了 Cloudflare IP 段
  • 再验证:恢复代理后观察错误是否消失及日志是否正常

命令速用版

如果你习惯用命令行,可以用以下命令快速判断源站状态(将 example.com 替换为你的域名,1.2.3.4 替换为你的源站 IP):

# 1. 绕过 Cloudflare 直接请求源站 IP
curl -I http://1.2.3.4 -H "Host: example.com"

# 2. 测试源站网络连通性
ping 1.2.3.4

# 3. 查看服务器当前负载(Linux)
uptime

# 4. 获取 Cloudflare 最新 IP 段(用于配置防火墙)
curl https://www.cloudflare.com/ips-v4

如果 curl 直接请求 IP 也超时,说明问题在源服务器内部或上游网络;如果 curl 成功但走 Cloudflare 报错,说明是防火墙拦截了 Cloudflare 节点。

为什么会这样

Cloudflare 作为反向代理,收到用户请求后会尝试与你的源服务器建立 TCP 连接。如果在默认超时时间内(通常是 15 秒左右)无法完成握手,Cloudflare 就会向用户返回 522 错误。

这通常不是 SSL 握手问题(那是 525 或 526),而是更底层的网络连接问题。常见场景包括源服务器关机、源服务器防火墙丢弃了 Cloudflare 的请求包、或者源服务器负载过高无法及时响应 SYN 包。

Cloudflare 报错 522 Connection Timed Out 怎么排查解决?

分步处理

第一步:确认源站存活

修改本地 hosts 文件,将域名直接指向源站 IP,尝试在浏览器访问。如果本地直连也打不开,说明源服务器本身挂了或网络断了。对于云服务器用户,建议登录云服务商控制台检查实例状态是否为“运行中”,必要时尝试重启实例。

第二步:检查防火墙规则

登录服务器检查安全组(如阿里云安全组、AWS Security Group)和系统防火墙(如 iptables、firewalld、ufw)。确保出站和入站规则允许 Cloudflare 的 IP 段通过。Cloudflare 官方公布了其 IP 段列表(https://www.cloudflare.com/ips/),建议直接放行所有 Cloudflare IP,而不是只放行个别节点。

参考配置命令如下(请以实际 IP 段为准):

# UFW 示例
ufw allow from 173.245.48.0/20 to any port 80
ufw allow from 173.245.48.0/20 to any port 443

# iptables 示例
iptables -I INPUT -s 173.245.48.0/20 -p tcp `--dport` 80 -j ACCEPT
iptables -I INPUT -s 173.245.48.0/20 -p tcp `--dport` 443 -j ACCEPT

第三步:检查服务器负载

Cloudflare 报错 522 Connection Timed Out 怎么排查解决?

如果服务器 CPU 或内存满载,可能导致无法及时处理新的连接请求。使用 top 或 htop 查看资源占用。如果负载过高,优先尝试重载配置(如 nginx -s reloadsystemctl reload nginx),避免直接重启导致业务中断,若无效再考虑暂时扩容。

第四步:检查路由问题

在某些网络环境下,Cloudflare 节点到源服务器之间的路由可能不稳定。使用 traceroute 命令查看数据包在哪里丢失。如果是中间网络问题,可能需要联系 ISP 或切换 Cloudflare 的数据中心区域(如果套餐支持)。

怎么验证是否生效

完成上述调整后,不要只依赖浏览器刷新,建议执行以下验证:

1. 使用 curl 命令带上 User-Agent 模拟请求,确认返回状态码为 200 而非 522。

Cloudflare 报错 522 Connection Timed Out 怎么排查解决?

2. 查看源服务器 Web 日志(如 nginx 的 access.log),确认是否有来自 Cloudflare IP 段的请求记录。如果没有日志,说明请求根本没到服务器,防火墙拦截的可能性极大。

3. 在 Cloudflare 后台查看 Analytics 面板,观察 522 错误曲线是否下降。

常见坑

1. 源站 IP 泄露后被封:如果攻击者知道了你的真实 IP,可能会绕过 Cloudflare 直接攻击源站,导致源站带宽打满或防火墙自动封禁,进而引发 522。建议更换源站 IP 并严格限制只允许 Cloudflare IP 访问。

2. SSL 模式配置错误:虽然 522 主要是连接超时,但如果源站 SSL 证书配置错误导致连接被重置,有时也会表现为连接问题。确保 Cloudflare 的 SSL/TLS 加密模式(如 Full 或 Full Strict)与源站配置匹配。

3. 服务器迁移未更新 DNS:如果服务器换了 IP,但 Cloudflare 后台 DNS 记录没改,Cloudflare 还是会请求旧 IP,导致超时。修改 DNS 后注意 TTL 缓存时间。

参考来源

  • Cloudflare Developers, "Troubleshooting Cloudflare 5XX errors", https://developers.cloudflare.com/support/troubleshooting/cloudflare-errors/troubleshooting-cloudflare-5xx-errors/