修复错误521:如何快速恢复您网站的功能性

访问互联网资源通常涉及向存储资源的命名主机在服务器上发出请求。这可以由计算机、智能手机或任何能够访问互联网的设备完成。

在这种情况下,向服务器请求资源的设备被称为客户端,从服务器请求资源的过程被称为HTTP请求。

HTTP是一种协议或规则,用于在互联网上交换信息。当客户端向服务器发出资源请求时,就称为发出了一个HTTP请求。

当客户端从服务器请求资源时,服务器除了在请求成功的情况下提供资源外,还根据处理请求的方式发出三位数的状态码。

对资源的请求可以是成功的,也可以是重定向的,或者服务器上可能找不到资源。有关向服务器发出的请求的状态的信息是使用状态码进行传递的。

状态码有不同的类别,其通过状态码中的第一个数字来进行识别。以1开头的状态码是信息代码,表示请求已收到并仍在进行中;以2开头的状态码表示客户端的请求已成功接收、理解和接受。

以3开头的表示重定向,以4开头的表示客户端错误,以5开头的表示服务器错误。

有官方定义的状态码,这些状态码由HTTP standard定义,并且有未官方定义的状态码,这些状态码扩展了官方定义的状态码类别。其中一个这样的状态码是521,它表示Web服务器已关闭。这是CloudFlare的反向proxy service使用的一个非官方状态码。

反向代理服务器是一个位于Web服务器前面的中间服务器,它拦截来自客户端的请求并将其传递给Web服务器。这种架构确保没有客户端直接与提供所请求资源的Web服务器进行通信。

反向代理服务器保护Web服务器的身份,同时增强其可靠性、安全性和性能,并在高流量网站中帮助负载平衡。

CloudFlare的反向代理服务的一个示例是其内容传递网络(CDN)。CDN由地理分布的服务器组成,可以将Web内容缓存到用户的物理位置附近。这导致互联网上的内容加载速度更快。

错误521 Web服务器已关闭,当客户端试图从原始服务器获取资源时,原始服务器拒绝与Cloudflare的代理建立连接。为了提供客户端请求的内容,Cloudflare的代理服务会在端口80或443上与具有所请求资源的原始服务器建立连接。

有时,原始服务器直接拒绝与Cloudflare的代理建立连接,并发送一个连接被拒绝的错误。当Cloudflare从原始服务器遇到连接被拒绝的错误时,就会出现错误521 Web服务器已关闭,这就是显示给发出请求的客户端的内容。

错误521的原因

尽管错误521表示您的原始Web服务器已关闭,但并不总是Web服务器关闭的结果,因为还有其他原因可能引起此错误。造成错误521的一些潜在原因包括:

#1. 原始Web服务器已关闭

如果您请求资源的源Web服务器处于离线状态,则Cloudflare反向代理服务无法与其建立连接。这反过来会导致错误521。当源服务器的某些Web服务器进程未正确运行时,也可能发生此错误,从而使Cloudflare无法与其连接。

#2. 您的源Web服务器阻止了来自Cloudflare的请求

Cloudflare的反向代理服务接受来自客户端的请求,并将其传递给请求的资源所在的服务器。结果,源服务器的安全配置或firewall可能会认为Cloudflare的IP地址对资源进行了过多的请求,并将请求标记为攻击。

这将导致阻止Cloudflare的IP地址,使其无法连接到源Web服务器。当发生这种情况时,即使源服务器可能正常工作,也会导致错误521。

#3. 源服务器配置错误

Cloudflare的内容交付网络(CDN)是一种反向代理服务。服务器需要正确配置以与CDN配合使用。如果在设置CDN时出现配置错误,则客户端向源服务器发出请求时将出现错误521。配置防火墙以丢弃数据包而不是拒绝连接也会导致错误521。

#4. Cloudflare的SSL证书问题

Cloudflare支持使用安全套接字层(SSL)证书对服务器和客户端之间的流量进行加密。 SSL证书用于验证网站的身份并建立加密连接。

如果网站的SSL证书或Cloudflare使用的加密模式存在问题,则源服务器将拒绝连接请求,导致错误521。

如何修复错误521

有多种方法可以解决错误521。这些方法包括:

#1. 检查源服务器是否在线

当源服务器处于离线或停机状态时,可能会发生错误521。要检查源服务器是否正在运行,请打开终端窗口,并执行与要检查其源服务器是否在线的站点一起使用的ping命令。

ping yaoweibin.com

如果服务器正在运行,则会收到服务器的响应,如下所示:

在此例中,Geekflare的源服务器正在运行。但是,第二个测试的服务器在撰写本文时处于离线状态。从该服务器没有收到任何数据包,并且它的packet loss为100%。打开网站会显示下面的页面,其中显示了502 error

CTRL + C退出ping命令输出。

另一种检查服务器是否在线的方法是导航到网站isitdownrightnow,并输入要检查的网站。该网站将告诉您服务器是否正在运行,如下所示:

如果您首次使用Cloudflare的CDN与服务器,请确保已正确配置源服务器以侦听端口443并允许Cloudflare的IP地址访问端口443。此外,请确保正确配置防火墙以避免丢弃数据包。这会导致错误521。

#2. 将Cloudflare的IP地址添加到白名单

错误521的另一个原因是Cloudflare的IP地址被标记为可疑并被阻止,因为发出了太多的请求。为了解决这个问题,请与您的托管提供商核实,确保他们没有阻止或限制可以由Cloudflare’s Ip addresses发出的请求。

如果您正在运行自己的专用服务器,请确保防火墙没有阻止Cloudflare的IP地址。此外,禁用和卸载Apache自定义模块,如mod_antiloris和mod_reqtimeout,它们会阻止连接超过22次的IP地址。

#3. 检查使用的SSL证书或加密模式

根据SSL加密模式是设置为Flexible、Full还是Strict,Cloudflare将根据它所接收到的来自源服务器的SSL certificate而以不同的方式工作。这些Cloudflare加密模式在建立Cloudflare的反向代理服务和源服务器之间的连接时非常有用。

Full或Strict模式是使用最广泛的选择或加密模式,因为它们需要一个SSL证书。在使用这些模式时,Cloudflare需要从源服务器获取有效的SSL证书。当您的网站的SSL证书存在问题时,特别是在使用Strict加密模式时,将会发生错误521。

要解决这个问题,向您的源服务器安装Cloudflare origin certificates或使用来自可信任证书认证机构的SSL证书。将加密模式从Strict切换到full也可以帮助解决由源服务器的SSL证书问题引起的错误521。

结论

使用像Cloudflare的CDN这样的Content Delivery Networks已成为在互联网上提供内容的流行方式。使用CDN可以使Web应用程序加载更快,性能更好,并且更可靠和更安全地抵御攻击。

在使用Cloudflare时,您可能会遇到错误521,这可能表示源服务器存在问题。在这种情况下,请考虑上述解决方案。如果所有这些解决方案都失败,请考虑与Cloudflare的客户服务取得联系以获得进一步的帮助。

类似文章