错误 520:Web 服务器返回一个未知错误

error520.png

概述

520 错误本质上是当原始服务器返回意外内容或无法容忍/解释的内容时的“全面”响应(协议违例或空白响应)。

虽然 520 错误可以由非常独特和奇怪的边缘情况触发,但它们通常是在以下情况下引起的:

  • 连接重置(在 TCP 握手成功之后)
  • 标头超过 CloudFlare 的标头大小限制(超过 8kb)
  • 来自原始服务器的响应为空
  • 无效的 HTTP 响应
  • HTTP 响应缺少响应标头

 如果在托管网站的 Web 服务器上确认了上述任何情况,那么建议向主机提供商咨询以获得有关 Web 服务器配置的帮助,从而避免其他中断和错误。  

常见原因

520 错误通常在第 7 层,即应用层引起。这意味着,520 错误是应用程序响应差而导致的。速率限制或过滤请求(例如,通过连接 IP 或流量/频率)有时会导致应用程序问题。 

故障排除

由于 520 响应的性质,最好使用 cURL 命令测试原始服务器响应以确认是否遇到上述情况而导致错误。这对于确定原始服务器是否返回空响应、无效的 HTTP 响应或超大响应标头尤为可靠。

下面是示例命令,用于强制  主机  HTTP 标头(在这个例子中,我们发送登录页面的请求):

curl -vso /dev/null --user-agent "Mozilla 5.0" -H "Host: example.com" http://123.123.123.321/login

下面是一个原始响应为空的示例输出,如果请求由 CloudFlare 代理,通常会导致 520 错误 :

* 未在 DNS 缓存中找到主机名
*    *尝试 123.123.123.321 ...
* Connected to 123.123.123.321 (123.123.123.321) port 80 (#0)
> GET /login HTTP/1.1
> User-Agent: Mozilla 5.0
> Accept: */*
> Host: example.com
>
* Empty reply from server
* Connection #0 to host 123.123.123.321 left intact

适当的标头可能如下所示:

* 未在 DNS 缓存中找到主机名
*    *尝试 123.123.123.321 ...
* Connected to 123.123.123.321 (123.123.123.321) port 80 (#0)
> GET /login HTTP/1.1
> User-Agent: Mozilla 5.0
> Accept: */*
> Host: example.com
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Date: Day, DD, Month Year Hour:Minute:Second Timezone
{ [14240 bytes data]
* Connection #0 to host 123.123.123.321 left intact

由于速率限制也可能导致此问题,您需要将我们的 IP 加入白名单。 可在以下位置找到 Cloudflare IP 范围: 此处.

另一种有效的故障排除步骤是针对直接发送给原始服务器的请求通过 Cloudflare 从受影响的用户获得  HAR  (HTTP 存档文件)。 HAR 文件提供有用的信息源,以比较原始服务器返回的响应标头,而 CF 代理请求(对确认标头响应是否太大非常有用)。  

提交支持请求时,请提供:

  • 重现错误的步骤
  • HAR 文件
  • 所示错误的 rayID
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 提供技术支持