因为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文件。