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 包。
分步处理
第一步:确认源站存活
修改本地 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第三步:检查服务器负载
如果服务器 CPU 或内存满载,可能导致无法及时处理新的连接请求。使用 top 或 htop 查看资源占用。如果负载过高,优先尝试重载配置(如 nginx -s reload 或 systemctl reload nginx),避免直接重启导致业务中断,若无效再考虑暂时扩容。
第四步:检查路由问题
在某些网络环境下,Cloudflare 节点到源服务器之间的路由可能不稳定。使用 traceroute 命令查看数据包在哪里丢失。如果是中间网络问题,可能需要联系 ISP 或切换 Cloudflare 的数据中心区域(如果套餐支持)。
怎么验证是否生效
完成上述调整后,不要只依赖浏览器刷新,建议执行以下验证:
1. 使用 curl 命令带上 User-Agent 模拟请求,确认返回状态码为 200 而非 522。
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/