Nginx
在 NGINX 中啟用 HTTP2 時 NGINX / Cloudflare 隨機 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 功能?
簡單的解釋是,根據了解 Cloudflare HTTP/2 和 HTTP/3 支持:
Cloudflare 僅在源 Web 伺服器和 Cloudflare 之間使用 HTTP/1.x。
您可以在源伺服器上禁用 HTTP/2,但仍然可以在瀏覽器和 Cloudflare 之間受益,因為如果您在 Cloudflare 的邊緣網路上具有 TLS,它會預設啟用。