诊断并解决 Cloudflare 代理的站点的 5XX 错误。
- 概述
- 500: internal server error
- 502: bad gateway or 504: gateway timeout
- 503: service temporarily unavailable
- 520: web server returns an unknown error
- 521: web server is down
- 522: connection timed out
- 523: origin is unreachable
- 524: a timeout occurred
- 525:SSL handshake failed
- 526: invalid SSL certificate
- 527:Railgun listener to origin
- Error 530
- 相关资源
概述
在排查 5XX 错误时,正确的操作步骤是先联系您的主机提供商或站点管理员来排除故障并收集数据。
需要向主机提供商提供的错误详情
- 具体的 5XX 错误代码和消息
- 发生 5XX 错误的时间和时区
- 造成 HTTP 5XX 错误的 URL(例如:https://www.example.com/images/icons/image1.png)
下方的各个错误描述中列出了应向主机提供商或站点管理员提供的其他详情。Cloudflare Custom Error Pages 可更改本文探讨的默认错误页面的外观。
Error 500: internal server error
500 错误通常表示您的源站 Web 服务器存在问题。 Error establishing database connection 是源站 Web 服务器生成的常见 HTTP 500 错误消息。 联系您的主机提供商来解决。
解决方案
向主机提供商提供详细信息,协助对问题进行故障排除。
不过,如果 500 错误的 HTML 响应代码中包含“cloudflare”或“cloudflare-nginx”,请将以下信息提供给 Cloudflare 支持:
- 您的域名
- 发生 500 错误的时间和时区
- 观察到 500 错误的浏览器的 www.example.com/cdn-cgi/trace 输出(将 www.example.com 替换为您实际的域名和主机名)。
Error 502 bad gateway 或 Error 504 gateway timeout
当 Cloudflare 无法与您的源站 Web 服务器建立联系时,会发生 HTTP 502 或 504 错误。
可能的原因有两种:
502/504 源自您的源站 Web 服务器
当您的源站 Web 服务器标准的 HTTP 502 网关损坏或 504 网关超时错误响应时,Cloudflare 将返回带有 Cloudflare 标志的 HTTTP 502 或 504 错误:
解决方案
联系您的主机提供商,在您的源站 Web 服务器上排查这些常见的原因:
- 确保在请求生成 生成 502 或 504 错误的访问者 URL 中的主机名和域名时,源站服务器能够响应请求。
- 调查服务器过载、崩溃或网络故障。
- 识别发生超时或被阻止的应用程序或服务。
502/504 源自 Cloudflare
源自 Cloudflare 的 502 或 504 错误如下方所示:
如果错误未提及“cloudflare”,请联系主机提供商来寻求与源自源站的 502/504 错误相关的帮助。
解决方案
为避免处理您的查询时发生延迟,请向 Cloudflare 支持提供以下必要详情:
- 发生问题的时间和时区
- 造成 HTTP 502 或 504 错误的 URL(例如:https://www.example.com/images/icons/image1.png)
- 浏览 www.example.com/cdn-cgi/trace 时的输出(将 www.example.com 替换为导致 HTTP 502 或 504 错误的域名和主机名)
Error 503: service temporarily unavailable
HTTP 错误 503 在源站 Web 服务器过载时发生。可能的原因有两种,可通过错误消息来辨别:
- 错误的 HTML 响应正文中不包含“cloudflare”或“cloudflare-nginx”。
解决方案:联系您的主机提供商,以核实是否针对您的源站 Web 服务器的请求实施了速率限制。
- 错误的 HTML 响应正文中包含“cloudflare”或“cloudflare-nginx”。
解决方案:Cloudflare 数据中心中发生了连接问题。向 Cloudflare 支持提供以下信息:
- 您的域名
- 发生 503 错误的时间和时区
- 观察到 503 错误的浏览器的 www.example.com/cdn-cgi/trace 输出(将 www.example.com 替换为您实际的域名和主机名)。
Error 520: web server returns an unknown error
当源站服务器向 Cloudflare 返回空白、未知或意外响应时,会发生 520 错误。
解决方案
联系您的主机提供商或站点管理员,请他们核查您的源站 Web 服务器日志中的崩溃并检查以下常见原因:
- 源站 Web 服务器应用程序崩溃
- 您的源站上未将 Cloudflare IP 列入白名单。
- 源站 Web 服务器 TCP 空闲超时短于 300 秒
- 标头超过 8 KB(通常因为 Cookie 数量过多)
- 源站 Web 服务器的空响应中缺少 HTTP 状态代码或响应正文
- 缺少响应标头或源站 Web 服务器未返回正确的 HTTP 错误响应
如果在联系主机商或站点管理员后仍然出现 520 错误,请向 Cloudflare 支持提供以下信息:
- 发生错误时所请求资源的完整 URL
- 520 错误消息中的 Cloudflare Ray ID
- www.example.com/cdn-cgi/trace 的输出(将 www.example.com 替换为您遇到 520 错误的域名和主机名)。
- 两个 HAR 文件:
- 一个在您网站上启用了 Cloudflare 时生成
- 另一个在临时禁用 Cloudflare 后生成。
Error 521: web server is down
源站 Web 服务器拒绝来自 Cloudflare 的连接时,会发生 521 错误。源站上的安全解决方案可能阻止了来自某些 Cloudflare IP 地址的合法连接。
521 错误的两个最常见原因:
- 源站 Web 服务器应用程序离线
- Cloudflare 请求被阻止
解决方案
联系您的站点管理员或主机提供商以排除这些常见原因:
- 确保您的源站 Web 服务器正常响应
- 查看源站 Web 服务器错误日志,以确定 Web 服务器应用程序崩溃或中断。
- 确认没有阻止 Cloudflare IP 地址或对其施加速率限制
- 在您的源站 Web 服务器的防火墙或安全软件中,将所有 Cloudflare IP 地址 列入白名单
Error 522: connection timed out
Cloudflare 联系源站 Web 服务器时超时会发生 522 错误。有两种不同的错误导致 HTTP 错误 522,具体取决于 Cloudflare 和源站 Web 服务器之间发生超时的时间:
- 在连接建立之前,源站 Web 服务器未在 Cloudflare 发送 SYN 后 15 秒内将 SYN + ACK 返回给 Cloudflare。
- 在连接建立之后,源站 Web 服务器未在 90 秒内确认(ACK)Cloudflare 的资源请求。
解决方案
联系您的主机提供商,从源站 Web 服务器上排查下列常见原因:
- (最常见).htaccess、iptables 或防火墙中阻止了 Cloudflare IP 地址或对其设置了速率限制。确认您的主机提供商已将 Cloudflare IP 地址列入白名单。
- 源站 Web 服务器过载或离线,因而丢弃了传入的请求。
- 源站 Web 服务器上禁用了 Keepalives 功能。
- Cloudflare DNS 应用中的源站 IP 地址与主机提供商当前为您的源站 Web 服务器置备的 IP 地址不匹配。
- 您的源站 Web 服务器上丢弃了数据包。
如果上述原因都未能促成解决方案,请向主机提供商或站点管理员索取以下信息,然后联系 Cloudflare 支持:
- 从源站 Web 服务器到发生问题前最常连接您的源站 Web 服务器的 Cloudflare IP 地址 的 MTR 或 traceroute 结果。在源站 Web 服务器日志记录的 IP 中,找到一个可成功连接的 IP。
- 来自主机提供商调查的详细信息,如相关的日志或与主机提供商的对话。
Error 523: origin is unreachable
当 Cloudflare 无法联系您的源站 Web 服务器时,会发生 523 错误。这通常在 Cloudflare 和源站 Web 服务器之间的网络设备没有通向源站 IP 地址的路由时发生。
解决方案
联系您的主机提供商,在您的源站 Web 服务器上排查下列常见原因:
- 确认您的 Cloudflare DNS 应用中为 A 或 AAAA 记录列出了正确的源站 IP 地址。
- 对源站与 Cloudflare 之间的互联网路由问题进行故障排除,或者对源站本身的问题进行故障排除。
如果上述原因都未能促成解决方案,请向主机提供商或站点管理员索取以下信息:
- 从源站 Web 服务器到发生问题前最常连接您的源站 Web 服务器的 Cloudflare IP 地址 的 MTR 或 traceroute 结果。从源站 Web 服务器日志查找一个可连接的 Cloudflare IP。
- 如果您通过 Cloudflare 托管服务合作伙伴使用 Railgun,请联系您的主机提供商来排查 523 错误。
- 如果您自己管理 Railgun 安装,请先 Cloudflare 支持提供以下信息:
- 从 Railgun 服务器到源站 Web 服务器的 traceroute 结果。
- 来自 Railgun 服务器的最新系统日志文件。
Error 524: a timeout occurred
524 错误表明 Cloudflare 成功连接了源服务器,但源站 Web 服务器没有在默认的 100 秒连接超时结束前提供 HTTP 响应。
解决方案
联系您的主机提供商,从您的源站 Web 服务器上排查下列常见原因:
- 源站 Web 服务器上长时间运行的进程。
- 发生过载的源站 Web 服务器。
如果您经常运行需要超过 100 秒才能完成的 HTTP 请求(例如大量数据导出),请在 Cloudflare DNS 应用中将这些进程移动到未由 Cloudflare 代理的子域后面。
Error 525:SSL handshake failed
525 错误通常由源站 Web 服务器中的配置问题引起。满足以下两个条件时会发生 525 错误:
- Cloudflare 与源站 Web 服务器之间的 SSL 握手失败;
- Cloudflare SSL/TLS 应用中设置了 Full 或 Full (Strict) SSL。
解决方案
联系您的主机提供商,从您的源站 Web 服务器上排查下列常见原因:
Error 526: invalid SSL certificate
满足以下两个条件时会发生 526 错误:
- Cloudflare 无法验证您的源站 Web 服务器上的 SSL 证书;
- Cloudflare SSL/TLS 应用中设置了 Full SSL (Strict) SSL。
解决方案
请您服务器管理员或主机提供商核查源站 Web 服务器的 SSL 证书,并进行以下验证:
- 证书没有到期
- 证书没有撤销
- 证书由证书颁发机构签名(而非自签名)
- 所请求的域名和主机名列在证书的 Common Name 或 Subject Alternative Name 中
- 您的源站 Web 服务器接受通过 SSL 端口 443 进行连接
- 暂停 Cloudflare 并访问 https://www.sslshopper.com/ssl-checker.html#hostname=www.example.com(将 www.example.com 替换为您的主机名和域名),以验源站 SSL 证书并无问题:
如果源站服务器使用自签名证书,请将域配置为使用 Full SSL 而非 Full SSL (Strict)。请参考适用于您的源站的 SSL 推荐设置。
527 Error:Railgun Listener to origin error
527 错误表示 Cloudflare 和源站的 Railgun 服务器(rg-listener)之间发生连接中断。常见的原因包括:
- 防火墙干扰
- Railgun 服务器和 Cloudflare 之间网络故障或数据包丢失
527 错误的最常见原因包括:
如果要联系 Cloudflare 支持,请提供以下来自 Railgun Listener 的信息:
- railgun.conf 文件的完整内容
- railgun-nat.conf 文件的完整内容
- 详述观察到的错误的 Railgun 日志文件
连接超时
下列 Railgun 日志错误表明 Railgun Listener 和源站 Web 服务器之间存在连接故障:
connection failed 0.0.0.0:443/example.com: dial tcp 0.0.0.0:443: i/o timeoutno response from origin (timeout) 0.0.0.0:80/example.com
解决方案
联系您的主机提供商,以协助测试源站 Web 服务器和 Railgun Listener 之间的连接问题。例如,运行 netcat 命令可以测试从 Railgun Listener 到源站 Web 服务器的 SERVERIP 和 PORT(80 用于 HTTP,或 443 用于 HTTPS)的连接:
nc -vz SERVERIP PORT
超过 LAN 超时
如果源站 Web 服务器未在 30 秒默认超时内向 Railgun Listener 发送 HTTP 响应,则生成以下 Railgun Listener 日志错误:
connection failed 0.0.0.0:443/example.com: dial tcp 0.0.0.0:443: i/o timeout
可以通过 railgun.conf 文件的 lan.timeout 参数调整这一时间。
解决方案
提高 railgun.conf 中的 lan.timeout 限值,或检查 Web 服务器配置。联系您的主机提供商,以确认源站 Web 服务器是否过载。
连接遭拒
当来自 Railgun Listener 的请求遭到拒绝时,Railgun 日志中会出现以下错误:
Error getting page: dial tcp 0.0.0.0:80:connection refused
解决方案
将 Railgun Listener 的 IP 列在源站 Web 服务器防火墙的白名单中。
TLS/SSL 相关错误
如果 TLS 连接失败,Railgun 日志中会出现以下错误:
connection failed 0.0.0.0:443/example.com: remote error: handshake failureconnection failed 0.0.0.0:443/example.com: dial tcp 0.0.0.0:443:connection refusedconnection failed 127.0.0.1:443/www.example.com: x509: certificate is valid forexample.com, not www.example.com
解决方案
如果发生 TLS/SSL 错误,请在源站 Web 服务器上检查并确保:
- 已开启 443 端口
- 源站 Web 服务器出示了 SSL 证书
- 源站 Web 服务器的 SSL 证书的 SAN 或 Common Name 中包含请求的主机名
- Cloudflare SSL/TLS 应用中的 SSL 设为 Full 或 Full (Strict)
Error 530
返回 HTTP 错误 530 时会同时显示 1XXX 错误。在 Cloudflare 帮助中心中搜索具体的 1XXX 错误,以了解故障排除信息。
相关资源