因為OpenResty近期更新到了支持HTTP/3的nginx,需要注意以下事項。
打開reuseport
在多worker配置下需要打開HTTP/3埠的reuseport選項,否則會導致兩個UDP包被不同的worker處理,從而客戶端報ERR_DRAINING錯誤。
多個Host在同一個埠監聽的話,只需在其中的任意一個listen directive中添加reuseport。
把$http_host替換成$host
由於HTTP/3不再發送 Host 頭而改用 :authority
偽頭來,$http_host 變數變為空值。因此$http_host和ngx.var.http_host都需要改為$host和ngx.var.host。
添加Alt-Svc頭
瀏覽器不會默認通過 HTTP/3 連接,但在看到 Alt-Svc 頭後才開始嘗試使用 HTTP/3 協議。
另外,隨著http3的加入,http2
從listen directive中被棄用,改為單獨的http2 on/off;
directive。
我將以上更改寫成一個自動化腳本,用來批量更新多個nginx conf文件。