在WordPress网站上使用Cloudflare等内容交付网络 (CDN)可以帮助您大幅减少加载时间。但是,您可能偶尔会遇到Cloudflare特定的问题,例如“521错误”。此特定错误会阻止平台连接到您的网站,这意味着您可能也无法访问网站。
在本文中,我们将讨论Cloudflare反馈521错误是什么以及导致它的原因。然后我们将介绍三种方法来修复它。
Cloudflare的521错误是什么?
像Cloudflare这样的CDN将您网站的缓存副本存储在位于全球各地的服务器网络上。当访问者尝试访问您的网站时,Cloudflare 会“拦截”该连接并从最接近其位置的服务器加载缓存副本。这种方法通常会加快加载速度,同时降低站点主服务器的工作量。
正如您在上面了解到的,521错误消息是特定于Cloudflare的错误消息。
从本质上讲,这意味着您的Web浏览器能够成功连接到Cloudflare,但Cloudflare无法连接到源Web服务器 – 也就是您的WordPress站点的服务器。
具体来说,Cloudflare尝试连接到您的WordPress站点的服务器,但收到连接拒绝错误作为响应。
由于Cloudflare无法连接到您的站点,因此无法向访问者显示您的站点,而是显示521错误消息:
默认情况下,Cloudflare会告诉您它无法连接到网站的服务器,因为该服务器已关闭。但是,CDN可能无法连接到您的站点还有其他几个潜在原因。
在我们讨论这些原因之前,重要的是要注意521错误不是特定于WordPress的。无论您使用什么内容管理系统 (CMS)以及在外部网站上,您都可能遇到此错误。但是,您使用WordPress的事实为您提供了一种解决问题的额外方法,我们将在后面详细介绍。
什么导致Cloudflare返回521错误
正如我们之前提到的,当Cloudflare无法与您网站的服务器建立连接时,会发生521错误。通常,发生这种情况是由于以下三个原因之一:
- 您网站服务器已关闭。即使其他一切配置正确,如果您的WordPress站点的服务器处于离线状态,Cloudflare也将无法连接。如果您使用的是信誉良好的WordPress服务器主机,您应该拥有近乎完美的正常运行时间率(大约 99.9%)。这意味着在大多数情况下,服务器停机不是521错误背后的根本原因。
- 您服务器可能阻止Cloudflare请求。 您的Web服务器可能运行良好,但由于某种原因阻止了Cloudflare的请求。由于Cloudflare的工作方式,某些服务器端安全解决方案可能会无意中拦截Cloudflare的IP地址。比如,一些防火墙会阻止他们认为可疑的 IP,而Cloudflare请求可能会被该网络捕获。因为Cloudflare是一个反向代理,所以进入您的源服务器的所有流量看起来都好像来自一小范围的Cloudflare IP(而不是每个访问者的唯一IP地址)。因此,一些安全解决方案会将来自有限数量IP地址的高流量视为攻击并阻止它们。
- 您的Cloudflare证书有问题。Cloudflare 可以使用自己的安全套接字层 (SSL) 证书对您的网站与其服务器之间的流量进行加密。如果该证书有问题,源服务器可能会拒绝连接。
这似乎有很多潜在的领域需要覆盖。但是,在故障排除过程中,大多数这些原因很容易排除,我们将在下一节中讨论。
如何修复Cloudflare返回521错误
现在我们已经介绍了基础知识,我们将向您介绍如何解决WordPress中的Cloudflare返回的521错误。我们将逐步完成整个过程,首先排除最常见的原因(也是最容易修复的)。让我们从检查您网站的服务器是否已关闭开始。
1. 查明您站点的服务器是否停机
在信誉良好的托管服务提供商中,服务器停机是相当罕见的。许多提供商都吹嘘近乎完美的正常运行时间。因此,除非您使用的是不可靠的 Web 主机,否则您可以将其排除为521错误的根源。
在继续之前,您需要确保您的WordPress站点的服务器在线且运行正常。如果不是,则深入研究进一步的故障排除步骤是没有意义的。
但是,确保这不是问题仍然是一个好主意,特别是如果您不熟悉当前的托管服务提供商。如果由于错误521而无法访问您的网站,还有其他方法可以检查它是否在线。例如,您可以在命令终端中使用ping 命令,无论您使用的是哪种操作系统 (OS),它都应该可以工作。
Ping命令运行一个简单的测试,以确定服务器是否可达,并确保你没有任何连接问题。例如,这里我们正在为Google.com运行一个简单的ping 测试(通过输入“ping google.com”):
如果您收到来自服务器的回复,则它已启动并可访问。
查看服务器是否关闭的另一种方法是使用免费的在线服务,例如IsItDownRightNow?这个工具可以让你输入任何你想要的URL,并检查它是否可以访问:
你还可以运行cURL命令。如果您使用的是Mac或Linux,则可以直接从终端运行它。
Windows默认没有安装cURL,虽然您可以安装它,但更简单的方法是使用KeyCDN的在线HTTP标头检查工具。
您所做的只是插入http://1.2.3.4,其中1.2.3.4是您服务器的实际IP地址。
KeyCDN标头检查工具
如果您的服务器已启动,您应该会看到HTTP 200响应。或者,您也可能看到404 Not Found,这也意味着网络服务器已启动(只是没有与该IP关联的页面):
成功连接的示例
如果出现问题,您会看到类似Host Not Found或Failed to connect的信息:
您的服务器出现问题的示例
如果服务说该网站已启动,那么您就可以开始了。这意味着您的521错误的原因在于其他地方。如果您的服务器由于某种原因停机,您需要与您的托管服务提供商联系以找出原因。
2. 移除 Cloudflare 和您网站之间的拦截
如果您的网站在线,错误 521 可能是由于错误配置导致 Cloudflare 无法访问您的网站文件。
问题可能出在您的 .htaccess 文件、IP Blocker 规则或安全插件中。让我们看看如何逐一修复。
2.1 将Cloudflare IP范围列入白名单
您可以尝试的下一个修复是确保您的服务器的防火墙知道让Cloudflare请求通过。根据您使用的托管计划类型,您可能无法手动更改服务器的配置。例如,在大多数共享和托管计划中,您将无法修改服务器的防火墙设置。
如果您使用的是非托管虚拟专用服务器 (VPS)或专用服务器,您应该拥有对必要选项的完全访问权限。如果您使用防火墙,则可以修改其设置并将Cloudflare的IP范围列入白名单。
您需要确保没有在.htaccess、iptables或防火墙中阻止这些IP地址。而且您还需要确保您的托管服务提供商不会限制或阻止来自Cloudflare IP地址的IP请求。如果您不确定如何执行此操作,请联系您的主机支持人员。
或者,您可以联系您的托管服务提供商,让他们检查服务器的防火墙是否阻止了Cloudflare的任何地址。由于CDN的流行,情况不应该是这样。但是,您的网络托管服务商的支持团队将能够给您一个明确的答案。
下面介绍如何在服务器配置中将 IP 地址列入白名单:
1. 通过 FTP 客户端或使用 cPanel 中的文件管理器打开 .htaccess 文件。
2. 添加以下代码:
3. 从 [Cloudflare IP 地址] 添加允许。将 [Cloudflare IP 地址] 替换为每行中的一个实际 IP 地址,如下图所示。
4. 保存 .htaccess 文件。
2.2 检查 IP Blocker 设置
如果您使用的是基于 cPanel 的主机,IP Blocker 可以帮助您从特定 IP 地址或 IP 地址范围阻止您的网站。
查看 IP Blocker 设置,确保管理员没有错误地添加 Cloudflare IP 范围。
2.3 禁用您的安全插件
您的安全或防火墙插件有可能阻止了 Cloudflare 请求。要排除这种可能性,请禁用该插件,看看是否能解决错误 521。如果可以,请联系插件开发人员或更换安全插件。
3. 设置Cloudflare Origin 证书
Cloudflare使您能够配置CDN应如何处理 SSL 证书。它为您提供了多种SSL模式选项,包括:
- Flexible。在此模式下,Cloudflare 将使用 HTTP 连接到您的网站。理想情况下,除非您尚未为网站设置 SSL 证书,否则不应使用此模式。
- Full。此模式让用户决定是使用HTTP还是HTTPS连接您的网站。但是,如果他们使用HTTPS,Cloudflare将不会验证您网站的证书。
- Strict。此模式还使访问者能够决定使用哪种协议。但是,它会告诉Cloudflare检查您网站证书的有效性。
如果您的证书存在导致521错误的问题,通常会在您使用 Full (strict) 模式时发生。这是因为Cloudflare还需要在其末端使用原始证书来加密与您网站的流量。
如果您网站的 SSL 证书过期、自签名或与域名不匹配,Cloudflare 就会切断连接。在这种情况下,您的访客将在浏览器中看到错误 521。
您可能需要在服务器上安装 Cloudflare 起源证书颁发机构 (CA) 证书来解决这个问题。您可以通过导航至 [yourwebsite.com] > SSL/TLS > Origin server 并单击 Create certificate 来获取 Cloudflare Origin CA 证书。
之后,您可以按照托管服务提供商的指示,将 Cloudflare 起源证书添加到您的网站服务器上。
生成Cloudflare源证书很简单,一旦你这样做了,你应该能够访问你的网站,而不会出现错误521。如果您站点的证书有问题,您将看到完全不同的错误代码(526错误)。
不过,如果你管理的是敏感数据或需要遵守 PCI-DSS 要求,最好还是使用高级 SSL 证书。
4. 查看 Cloudflare DNS 设置
登录 Cloudflare 帐户并导航至 [yourwebsite.com] > DNS > Records。
然后,确保所有 A 记录的内容都与源网站服务器的 IP 地址相匹配,并且 CNAME 记录的内容包含您网站的域名。
如果其中一条记录不正确,您可以单击 “Edit” 修改该记录。
5. 停用 mod_reqtimeout 和 mod_antiloris
您可能在 Apache HTTP 服务器上启用了 mod_reqtimeout 和 mod_antiloris 模块,以防止拒绝服务(DoS)和分布式拒绝服务(DDoS)攻击。这些模块通过限制 IP 服务器与服务器的连接次数,使网络服务器免受这些攻击。
虽然 mod_reqtimeout 和 mod_antiloris 可以保护您的托管服务器,但它们可能与 Cloudflare 存在不兼容问题。
例如,Cloudflare 依靠数量有限的 IP 地址来引导流量到您的服务器,但这些模块可能会因为连续的连接尝试而阻止这些地址。
6. 联系客户支持
如果上述解决方案对您都不起作用,那么是时候寻求外部帮助了。
如果您的网站在没有 Cloudflare CDN 的情况下也能正常运行,请导航到 Support > Contact Cloudflare 通过 “ticket”、”chat” 或 phone 获取 Cloudflare 的支持。
如果网站托管服务器出现故障,请联系网站托管提供商的支持团队。
小结
如果您将Cloudflare与WordPress一起使用,您可能会遇到521错误。当Cloudflare无法与您网站的服务器建立连接时,会出现此特定错误代码。这可能是因为服务器已关闭、其防火墙阻止了Cloudflare,或者其SSL证书存在问题。
总而言之,您可以通过以下方式对Cloudflare中的521错误进行故障排除:
- 检查您站点的服务器是否已关闭。
- 配置您服务器的防火墙以将Cloudflare IP范围列入白名单。
- 设置Cloudflare源证书。