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埠給它!