排查 HTTP 522 错误响应。
当 Cloudflare 联系源站 Web 服务器超时时,会出现错误 522。
根据超时发生在 Cloudflare 与源站 Web 服务器之间的不同阶段,有两种超时会导致 HTTP 错误 522:
- 在连接建立之前,Cloudflare 发送 SYN 后,源站 Web 服务器未在 19 秒内向 Cloudflare 返回 SYN+ACK(SYN 重试退避方案为 1,1,1,1,1,2,4,8)。
- 在连接建立之后,源站 Web 服务器未在 90 秒内确认(ACK)Cloudflare 的资源请求。
-
联系你的托管服务提供商,并分享错误详情,以协助排查以下常见原因:
- Cloudflare IP 地址 ↗在 .htaccess、iptables 或防火墙中被限速或阻止。确认你的托管服务提供商允许所有 Cloudflare IP 范围(最常见原因)。如果需要按地理位置限制流量,可以使用 Cloudflare WAF 自定义规则。
- 过载或离线的源站 Web 服务器丢弃了传入请求。
- 源站 Web 服务器上禁用了 Keepalives ↗。
- Cloudflare DNS 应用中的源站 IP 地址与托管服务提供商当前为你的源站 Web 服务器分配的 IP 地址不匹配。
- 数据包在源站 Web 服务器处被丢弃。
-
如果你使用的是 Cloudflare Pages,请验证你已设置自定义域名,并且 CNAME 记录指向你的自定义 Pages 域名。
-
如果你使用的是带有自定义域名的 Workers,对其自身主机名执行
fetch会导致522错误。请考虑使用路由、指向其他主机名,或改为启用global_fetch_strictly_public兼容性标志。 -
如果你使用的是 Origin Rules,请确保生成的主机名可以解析。例如,如果你的 Origin Rule 指向 Worker 路由,当该路由的主机名是指向保留地址(如
100::或192.0.2.0)的 A 记录时,将返回522错误。 -
如果以上方法都无法解决问题,请在联系 Cloudflare 支持之前,向你的托管服务提供商或站点管理员索取以下信息:
- 从你的源站 Web 服务器到问题发生前最常连接到源站 Web 服务器的 Cloudflare IP 地址 ↗ 的 MTR 或 traceroute。识别源站 Web 服务器日志中记录的连接 Cloudflare IP。
- 托管服务提供商调查的详细信息,例如相关日志或与托管服务提供商的沟通记录。
使用 Origin Analytics 检查到源站的 TCP 连接失败情况。如果 Top endpoints 表显示特定路径的 TCP 失败率较高,问题可能与路径相关,而不是源站的普遍问题。Origin Analytics 还可以帮助确认 Cloudflare 边缘是否可以访问你的源站。