520 错误:源服务器返回未知错误

有多种可能有机会造成520错误。  如何识别原因以解决此错误。


概述

520 错误本质上是一个全方位响应,例如当出现意外情况,或源服务器由于协议违规而无法处理空响应或错误地解释了请求。

Cloudflare 520 错误

如果您的网站启用了 Always Online功能,此状态代码将回送 Always Online 的页面

常见原因

虽然 520 错误可以由独特或异常的边缘情况触发,但通常由以下原因引起:

  • TCP 握手成功后网络连接重置
  • 标头大小超过 Cloudflare 的限制(8kb)
  • 源服务器回送空的响应
  • 无效的 HTTP 响应
  • HTTP 响应缺少了响应标头(response headers)

如果您已经确认源服务器发生上述任何情况,我们建议您联系您的网页寄存服务供应商或网页管理员,以更改服务器的配置,以避免进一步的网页问题或错误。 

此类错误通常发生在应用程序层(OSI 第 7 层)。意思是这是应用程序返回的错误响应引起的问题。

Cloudflare Rate Limiting 规则或其他过滤请求(例如,通过连接 IP 或容量/频率)有时可能会导致应用程序出现问题。重要的是要检查和测试这些方面的整体配置。此外,请务必把 Cloudflare 的 IP 列入源服务器的白名单上。按这查看 Cloudflare IP 范围列表。


排查 520 错误

就 520 错误响应的性质来说,最好针对源服务器进行测试。  您可以如下所述,使用 cURL 并生成 HTTP 存档文件 (HAR)。

使用 cURL 命令

使用 cURL,您可以确认是否因为上述任何情况触发了错误。这尤其适用于确定源服务器是否返回空回复、无效 HTTP 响应或非常大的响应标头。

下面是一个命令的示范,在发送请求到源 IP 地址时,强制使用主机 的HTTP 标头。  在此示例中,我们把请求发送到登录页面:

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

下面的示范显示了一个空的原始响应,如果同样的请求由 Cloudflare 代理的话,通常会触发 520 错误 :

* Hostname was NOT found in DNS cache
* Trying 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

成功的响应标头可能跟下面的结果差不多:

* Hostname was NOT found in DNS cache
* Trying 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

生成 HAR 文件

另一个故障排除任务需要生成两个 HTTP 存档文件 (HAR文件),一个把请求直接发送到源服务器,另外一个通过 Cloudflare。  请参阅如何生成 HAR 文件?

HAR 文件可用于比较来自源服务器与来自 Cloudflare(作为代理)的响应标头; 例如,确认响应标头是否过大。 


需要其他帮助吗?

如果按照上述解决方案后问题仍然存在,请联系 Cloudflare 客户支援部门,并提供以下信息,以进行洗下一步调查。

  • 重现错误的步骤
  • 两个HAR文件,一个把请求直接发送到源服务器,另外一个通过 Cloudflare代理。
  • 错误中显示的 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 提供技术支持