522 错误:连接超时

概述

522 错误表示 Cloudflare 无法访问源服务器,并且请求超时。

作为解决 522 错误的第一步:

  • 检查源服务器是否在开通状态并接受 HTTP 请求。
  • 验证 Cloudflare 账户中的 DNS 设置是否正确。

常见原因

有几种情况可能会导致出现 522 错误。最常见的原因包括:

其他可能的原因还包括:

  • Cloudflare DNS 设置中的 IP 地址不正确(即我们的请求被发送到了错误的地方)
  • 源服务器处于关机状态
  • 主机网络丢包

下面,您将找到有关最常见原因的其他信息。

源 Web 服务器超载

服务器可能因超载情况而丢弃请求。 构成高负载的情况可能会有所不同,具体取决于服务器的硬件和软件设置。

一般来说,平均负载超过 10-20 可能意味着服务器超载。 您可以在终端窗口中运行 w top 命令,以在 Linux/Unix 上作检查。

如果您无法自行验证源服务器的负载,请与您的网页寄存服务供应商或系统管理员联系。

Cloudflare 请求被堵

阻止 Cloudflare 请求是间歇性 522 错误的最常见原因。

当网站流量通过 Cloudflare 的时候,源服务器会将所有请求视为来自 Cloudflare IP 地址。这通常会触发防火墙和 IP 速率限制器,它们会认为网站受到攻击,从而开始阻止 Cloudflare 的请求。已知 cPanel 附带的 CPHulk ,还有其他服务会这样做。

想要避免这种情况,请确保:

  • 您的 .htaccess、iptables 或防火墙并没有阻止 Cloudflare IP。
  • 您的网页寄存服务供应商没有阻止任何来自 Cloudflare IP 的请求或对 Cloudflare 作任何速率限制。请跟网页寄存服务供应商确定已经把 Cloudflare IP 地址加入白名单内。

此外,您也可能需要跟网页寄存服务供应商安排关掉对 Cloudflare 的速率限制器。

网络路由故障

Cloudflare 与源服务器之间的网络路由故障比其他原因更难排难。在检查之前,应首先排除其他可能的原因。

如果您相信问题跟网络有关,请把有关证明发送给 Cloudflare 客户支援部门。联系Cloudflare 客户支援部门的时候请包括以下信息:

  • 您目前曾经做的检查的详情和调查结果
  • 从服务器到 Cloudflare IP 地址的 MTR 或 traceroute ,请使用您遇到 Cloudflare 请求问题的的 IP 地址

停止了keepalives功能

Cloudflare 使用 Keep-Alive 标头来提高性能。在源服务器中将其禁用会导致连接失败,并在某些情况下返回 522 错误。大多数主要源服务器的默认设置均把此功能设为启用,因此除非您特定禁用这项功能,否则不应该出现问题。


深入了解触发 522 错误的一些状况

当有人访问已经启用了 Cloudflare 的网站时, Cloudflare 与网站源服务器之间会建立连接。为建立连接,TCP 使用三向握手。

  1. SYN:Cloudflare 向源服务器发送三个 SYN 数据包。
  2. SYN+ACK:作为响应,源服务器将回复 SYN+ACK。
  3. ACK:最后,Cloudflare 向源服务器发送回一个 ACK。

此时,Cloudflare 和源服务器都已收到连接确认,并建立通信。如果源服务器未在 15 秒内将 SYN + ACK 发送回 Cloudflare,则会发生 522 错误并且连接会关闭。

下面的图表显示了成功的 TCP 握手:

下面的图表中,显示了源服务器未能在 15 秒内返回 SYN+ACK,从而导致 522 超时错误:

发生 522 超时错误的另一个情况是,当源服务器回复 SYN+ACK 并建立 TCP 连接,但未在 90 秒内回复 ACK 来响应请求(524 情况的话,是确认了请求,但等待时间太长,未发送响应)。下面的图示详述了该状况:

解决这些错误的最佳方法是直接联系您的服务器管理员,或网页寄存服务供应商以检查问题所在。如果这是网络问题,来自源服务器的的 traceroute 或 MTR 会为您提供非常有用的信息。

如果在排除上述的可能性后,您仍遇到 522 错误,请联系 Cloudflare 客户支援部门以进行洗下一步调查。

其他信息

Not finding what you need?

95% of questions can be answered using the search tool. This is the quickest way to get a response.

由 Zendesk 提供技术支持