nginx代理http2服務

丁少华發表於2024-09-01

NGINX 不支援HTTP/2 到後端,這從官方文件中可以看出,支援後端的最高 HTTP 版本為 v1.1。

其實新增此類支援實際上沒有什麼意義,因為HTTP/2 的主要功能是請求多路複用。
可當NGINX處理 HTTP 代理時,前端 NGINX 會將請求路由到後端的匹配位置(因為NGINX總是檢查單個請求並將其路由到某個地方),即此級會在 HTTP 級別進行流量檢查,以便檢查標頭、URI 以適當地路由請求,從而導致HTTP2多路復特性丟失。

不過Nginx 代理模組目前雖然不支援 HTTP/2(即它無法使用 http2 與後端​​通訊),但它自己的監聽器確是可以使用 http2--->這樣正是大家容易搞混淆的地方。

server {
    http2 on; # 自己本身支援http2
    location / {
        proxy_http_version 2; # 但是代理卻不支援,如此寫2會報錯,最多隻能寫1.1
    }
}

綜上,大家還是帶埠號訪問自己原生HTTP2服務吧,要是覺得不好看,就把433埠給它!

相關文章