网站返回 Cloudflare 522 连接超时错误,通常表示 Cloudflare 无法在 15 秒内与您的源站服务器建立 TCP 连接。最推荐的处理方向是立即检查源站服务器的负载、防火墙规则以及网络路由,确保 Cloudflare 的 IP 段能够正常访问源站的 80 或 443 端口。适用场景为使用 Cloudflare 代理(橙色云)的网站,风险边界在于错误修改防火墙或服务器配置可能导致服务完全中断。
先说结论:Cloudflare 522 错误的核心是源站连接问题,止血关键是快速恢复 Cloudflare 到源站的 TCP 握手,而非调整 Cloudflare 侧设置。
- 先确认:源站服务器是否在线、Web 服务进程是否运行、本地端口是否监听。
- 先处理:在源站防火墙(如 iptables、安全组)中放行 Cloudflare 的 IP 段,并检查是否有 DDoS 防护规则误拦截。
- 再验证:从源站外部(或使用 Cloudflare 提供的诊断工具)测试 TCP 连接是否能在 15 秒内建立。
命令速用版
以下命令用于在源站服务器或诊断机器上快速排查连接问题。执行前请确保您有服务器 SSH 访问权限。
# 1. 检查源站 Web 服务进程和端口监听状态
sudo ss -tlnp | grep -E ':80|:443'
# 2. 测试本地回环连接(排除防火墙影响)
curl -I http://127.0.0.1
# 3. 从外部测试到源站 IP 的 TCP 连接(替换 YOUR_ORIGIN_IP)
telnet YOUR_ORIGIN_IP 443
# 或使用 nc
nc -zv YOUR_ORIGIN_IP 443
# 4. 检查服务器负载和连接数
uptime
ss -s
# 5. 临时放行 Cloudflare IP 段测试(以 iptables 为例,谨慎操作)
# 请先从 Cloudflare 官方文档获取最新 IP 列表
sudo iptables -I INPUT -p tcp `--dport` 443 -s 173.245.48.0/20 -j ACCEPT为什么会这样
Cloudflare 返回 522 错误,直接原因是其边缘节点在 15 秒内无法与您的源站 IP 完成 TCP 三次握手。
这通常由以下一个或多个原因导致:源站服务器过载(CPU、内存、连接数耗尽)导致无法响应新连接请求;源站防火墙、安全组或 DDoS 防护设备拦截了来自 Cloudflare IP 的连接;源站与 Cloudflare 之间的网络路由存在丢包或延迟过高;源站 Web 服务(如 Nginx、Apache)配置错误,未监听正确端口或协议。
分步处理
- 检查源站基础状态:登录源站服务器,确认系统负载(
uptime)、内存使用(free -h)和磁盘空间(df -h)。检查 Web 服务进程是否运行(systemctl status nginx),并确认其监听端口(ss -tlnp)。如果服务未运行,尝试启动并观察日志。 - 验证防火墙规则:检查服务器本地防火墙(如 iptables、firewalld)和云提供商的安全组规则。确保入站规则允许来自 Cloudflare IP 段(Cloudflare 官方 IP 列表)对 80 和 443 端口的 TCP 访问。操作动作是添加允许规则,验证结果是规则生效后,从 Cloudflare IP 发起的 telnet 测试应显示连接成功。风险边界是错误放行可能导致源站暴露,建议仅放行必要端口和 IP 段。
- 测试网络连通性:在源站服务器上,使用
curl或wget测试访问自身公网 IP 的 Web 服务。同时,可以从其他网络(或使用在线工具)向源站 IP 的 443 端口发起 TCP 连接测试,观察是否超时。如果源站自身访问正常但外部连接超时,问题可能出在中间网络或上游防火墙。 - 审查服务器连接数限制:检查 Web 服务和操作系统的连接数限制(如
ulimit -n,Nginx 的worker_connections)。如果连接数耗尽,新连接将被拒绝。操作动作是临时调高限制并重启服务,验证结果是ss -s显示当前连接数低于上限。风险边界是过高限制可能耗尽系统资源,需根据服务器性能调整。 - 检查 Cloudflare 配置:登录 Cloudflare 仪表板,确认域名代理状态(橙色云)和 SSL/TLS 加密模式设置。如果源站使用自签名证书或证书链不完整,在“完全”或“完全(严格)”模式下可能导致握手失败。操作动作是暂时将 SSL/TLS 模式改为“灵活”进行测试(仅用于排查,生产环境建议使用有效证书),验证结果是 522 错误是否消失。风险边界是“灵活”模式会加密用户到 Cloudflare 的流量,但 Cloudflare 到源站为 HTTP,可能不符合安全要求。
怎么验证是否生效
处理完成后,可通过以下方式验证连接是否恢复:
- 使用 curl 测试:在任意外部机器执行
curl -I `--resolve` yourdomain.com:443:YOUR_ORIGIN_IP https://yourdomain.com,观察是否返回 HTTP 状态码而非连接超时。 - 查看 Cloudflare 仪表板:在 Cloudflare 的“分析”>“事件”中,查看 522 错误是否不再新增。
- 监控源站指标:持续观察源站服务器的负载、连接数和错误日志(如 Nginx 的
error.log),确认无持续异常。 - 模拟用户访问:通过浏览器或工具访问网站,确认页面加载正常,且 Cloudflare 返回的 HTTP 头中包含
cf-ray标识,表示请求已通过代理。
常见坑
- 只重启服务不查根本原因:重启 Web 服务可能临时恢复连接,但若防火墙规则或服务器过载问题未解决,522 错误会复发。
- 误封 Cloudflare IP 段:源站防火墙或安全软件可能将 Cloudflare 的大量并发连接误判为攻击而拦截。务必在放行规则中明确包含 Cloudflare 所有 IP 段,并定期更新。
- 忽略中间网络问题:源站服务器与 Cloudflare 节点之间的网络链路可能出现临时路由问题或丢包。如果源站和防火墙配置均正常,需联系服务器提供商或 Cloudflare 支持协助排查网络路径。
- 缓存导致的误判:浏览器或本地 DNS 缓存可能使您看到旧错误。验证时使用无痕模式或清除缓存,并使用
dig或nslookup确认域名解析到的 IP 是 Cloudflare 地址而非源站 IP。
常见问题
522 错误和 524 错误有什么区别?
522 是 Cloudflare 无法与源站建立 TCP 连接(握手超时),524 是 TCP 连接已建立,但源站处理请求并返回 HTTP 响应超时(默认 100 秒)。排查 522 应聚焦网络连接和服务器负载,排查 524 应聚焦应用处理性能和超时设置。
出现 522 后,我应该立即将域名 DNS 切回源站 IP 吗?
不建议立即切换。切换 DNS 会绕过 Cloudflare,可能使网站暴露于攻击或失去 CDN 加速。应先按上述步骤排查源站和连接问题。如果必须临时切换,请确保源站能承受直接流量并具备安全防护。
防火墙应该放行哪些 Cloudflare IP?
应放行 Cloudflare 官方公布的所有 IPv4 和 IPv6 地址段,列表在 Cloudflare IPs 页面。操作时,建议在防火墙规则中引用该列表并设置自动更新,避免手动维护遗漏。
需要调整服务器或 Web 服务的超时设置来解决 522 吗?
通常不需要。522 是 TCP 连接建立阶段的超时(15 秒),而非应用处理超时。调整服务器超时参数(如 Nginx 的 keepalive_timeout)主要影响连接保持和请求处理,对解决握手超时帮助有限。重点应放在确保服务器能快速响应 SYN 包。
参考来源
- 来源名:Cloudflare 官方文档
页面标题:Understanding and troubleshooting Cloudflare Error 522
URL:https://support.cloudflare.com/hc/en-us/articles/115003011431 - 来源名:Cloudflare 官方
页面标题:Cloudflare IPs
URL:https://www.cloudflare.com/ips/