521 错误:源服务器关闭

概述

发生 521 错误是因为源服务器拒绝来自 Cloudflare 的连接。更具体地说,Cloudflare 尝试通过端口 80 或 443 连接到您的源服务器,但却收到连接被拒绝的错误。

Error 521


常见原因

两个导致 521 错误的最常见原因:

源服务器在处于关机状态

源服务器进程(例如,Apache 或 Nginx)可能不在运行状态或已崩溃。在这种情况下:

  • 确保您的源服务器能够正常运行。
  • 查看源服务器的错误日志以了解导致错误的原因。

如果您无法执行以上任务,请与您的网页寄存服务供应商联系。

Cloudflare 请求被阻止

源服务器或网页寄存服务供应商的网络可能阻止 了Cloudflare 的请求。

作为反向代理,Cloudflare 从 Cloudflare IP 连接到您的源服务器,所有后续流量全部来自不同的 Cloudflare IP 集。因此,有些服务器端的保安系统可能误以为来自这些 IP 集的合法连的增长为攻击。这导致一些 Cloudflare IP 被堵,或受速率限制。

要解决此问题,请把所有 Cloudflare IP 范围加入源服务器的防火墙中或其他任何保安软件的白名单。按这里查看 Cloudflare IP 范围列表

如果您无法将 Cloudflare IP 范围加入白名单,请联系您的网页寄存服务供应商。


排查 521 错误

您可以使用 cURL Telnet 等第三方工具来测试源服务器的响应。 

 
如下面的例子所显,您需要将 IP 地址 1.2.3.4 改为源服务器的 IP 地址。此外,您也可以选择对端口 443 运行这些测试。

使用 cURL 进行测试

cURL 允许您模拟 HTTP 请求,以检查您的源服务器是否正常运作。您可以在 Mac OS 或 Linux 上的终端窗口 (Terminal) 运行 cURL命令。 

在Cloudflare 仪表板的 DNS 应用中所显示着您的域名的 A 记录和 CNAME记录,您可以用它们来运行针对您的源服务器 IP的 cURL 命令。

curl http://1.2.3.4 -v

如果成功的话,您应该可以看到 HTTP 200 响应以及您的网站的 HTML。失败的 cURL 请求通常如下:

# curl 1.2.3.4
curl:(7) Failed to connect to 1.2.3.4 port 80:Connection refused

使用 Telnet 进行测试

Windows 用户可以使用 Telnet (利用命令提示符(Command Prompt))测试连接。

运行以下命令:

telnet 1.2.3.4 80

出错的范例如下:

Unable to connect to remote host:Connection refused

这表示您的源服务器没在运行或正在阻止请求。

拒绝连接错误如下:

# telnet 1.2.3.4 80
Trying 1.2.3.4...
telnet: connect to address 1.2.3.4:Connection refused
telnet:Unable to connect to remote host
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 提供技术支持