排查 HTTP 520 错误响应。
当源站服务器向 Cloudflare 返回空、未知或意外响应时,会发生此错误。
此错误通常由以下情况触发:
- 源站服务器崩溃或配置错误。
- 防火墙或安全插件在源站拦截了 Cloudflare IP ↗。
- 标头超过 128 KB(通常因 Cookie 过多导致)。
- 空响应或格式错误的响应,缺少 HTTP 状态码或响应正文。
- 缺少响应标头,或源站 Web 服务器未返回 正确的 HTTP 错误响应 ↗。
- 源站服务器的 HTTP/2 配置不正确。
- 在 Cloudflare 上启用了 Authentication Origin Pull,但源站 未按预期配置。
-
联系您的托管服务提供商或站点管理员,并提供必要的 错误详情 以协助排查。请对方检查源站 Web 服务器错误日志中是否有崩溃记录,并核对本节前述的 常见原因。
-
如果在源站服务器上启用了 HTTP/2,请确保其配置正确。Cloudflare 会通过 ALPN ↗ 连接到声明支持 HTTP/2 的服务器。如果源站 Web 服务器接受了 HTTP/2 连接,但随后未遵守或不支持该协议,将返回 HTTP
520错误。您可以在 Cloudflare 仪表板的 Speed > Settings(设置) > Protocol Optimization(协议优化) 中禁用 HTTP/2 to Origin。 -
如果在联系托管服务提供商或站点管理员后
520错误仍然存在,请向 Cloudflare 支持 提供以下信息:- 发生错误时请求的资源的完整 URL。
520错误消息中的 Cloudflare cf-ray。http://<YOUR_DOMAIN>/cdn-cgi/trace的输出。- 两个 HAR 文件:
- 一个是在网站启用 Cloudflare 时捕获的。
- 另一个是在 暂时禁用 Cloudflare 时捕获的。
在查看 Cloudflare Logs(通过 Logpush 的 http_requests 数据集)时,OriginResponseStatus 字段显示源站返回的 HTTP 状态码。
OriginResponseStatus 值为 0 根据上下文有两种不同含义:
- 未联系源站(缓存命中或已重新验证的响应): 请求由缓存提供,Cloudflare 未联系源站。计算源站错误率时请过滤掉这些记录——它们并不表示源站存在问题。
- 源站连接失败: Cloudflare 尝试联系源站,但未收到 HTTP 响应。源站可能在发送响应标头前断开了 TCP 连接、在发送标头前超时,或发送了 Cloudflare 无法解析的格式错误响应。Cloudflare 会自行生成错误页面(通常为 520 或 500)。
要区分这两种情况,请检查同一日志记录中的 CacheStatus 字段:
CacheStatus为hit或revalidated→ 未联系源站;OriginResponseStatus = 0是预期行为CacheStatus为miss或expired→ Cloudflare 已联系源站;OriginResponseStatus = 0表示连接失败
使用 Origin Analytics 比较源站返回的内容(originResponseStatus)与 Cloudflare 向最终用户提供的内容(edgeResponseStatus)。如果源站返回了 200 但 Cloudflare 提供了 520,则响应很可能格式有误——例如标头过大或连接提前关闭。Top endpoints 表格可帮助您识别哪些路径正在产生 520 错误。