NGINX / Cloudflare 在 NGINX 中启用 HTTP2 时出现随机 520 HTTP 错误

NGINX / Cloudflare 在 NGINX 中启用 HTTP2 时出现随机 520 HTTP 错误

我发现一个问题,Cloudflare 大约对 10% 的请求返回 520 HTTP 错误代码。但是,如果我绕过 Cloudflare 代理并直接从服务器发出请求,则不会出现此问题。

经过大量的故障排除后,我发现如果我删除http2后面的两个参数listen,那么问题就会消失,并且 Cloudflare 不会再返回 520 错误。

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate         *path to key*;
    ssl_certificate_key     *path to key*;
    server_name example.com;
    root *path to directory*;
    location / {
        proxy_pass         http://localhost:5000; // proxying asp.net core app
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

有没有办法解决这个问题,让我能够保留 HTTP2 功能?

答案1

简单的解释是,根据了解 Cloudflare HTTP/2 和 HTTP/3 支持

Cloudflare 仅在原始 Web 服务器和 Cloudflare 之间使用 HTTP/1.x。

您可以在原始服务器上禁用 HTTP/2,但仍然可以在浏览器和 Cloudflare 之间受益,因为如果您在 Cloudflare 的边缘网络中拥有 TLS,它会默认启用。

相关内容