Nginx 1.26.0 穩定版終於加入了對 HTTP3 協定的支援,這讓許多網路管理員和開發者感到興奮。但是,設定 HTTP3 協定需要注意一些重要的步驟,讓我們一起來看看吧!
防火牆設定:首先,確保防火牆已經打開了 443 的 UDP Port。如果你的加密網站使用的是非 443 Port,請確保對應的 UDP Port 也同時被打開,因為 HTTP3 協定使用 UDP 來傳輸資料。
Docker 設定:如果你是在 Docker 中運行 Nginx,請確保 Docker 對外 Publish port 也已經打開了 SSL 的 UDP Port。
TLS 1.3 設定:Nginx 必須配置以支援 TLS 1.3,因為 HTTP/3 只能與 TLS 1.3 一同使用。
Virtual Host 設定:在 Nginx Virtual Host 環境中,如果要支援 TLS 1.3,請確保第一個 VHost 設定支援 1.3。由於 ssl_protocols 設定只有第一個 VHost 會生效,其他的 VHost 都會沿用第一個 VHost 的設定。
Reverse Proxy 設定:如果你使用 reverse proxy 到內部的 php-fpm,可能會遇到 400 Bad Request 的問題。這可能是由於 Header Host 沒有正確傳遞造成的。請確保設定了 proxy_set_header Host $http_host;,並將 $http_host 直接改為固定字串的 Domain Name。
測試方法:在測試 HTTP/3 時,建議先不要使用瀏覽器。你可以使用最新版本的 curl,或者開啟無痕視窗進行測試。由於 HTTP/3 設定一旦出錯,瀏覽器可能會長時間只使用 HTTP/2 來連線。必須等到 Header 'alt-svc' 中指定的 h3 ma 時間過期後,才可能再次嘗試使用 HTTP/3。
這些步驟可以幫助你順利地設定 Nginx 支援 HTTP3 協定,讓你的網站更加現代化和高效率!
AI 參考資料
https://www.pigo.idv.tw/archives/3473