nginx 同时配置了 quic <http/3> 和 ssl 时,HTTP/3 并没有生效,浏览器不能使用 HTTP/3 连接服务器,自动回落到 HTTP/2,使用 curl --http3 强制通过 HTTP/3 连接,得到以下错误。
- curl: (55) ngtcp2_conn_writev_stream returned error: ERR_DRAINING
复制代码- server {
- listen 443 ssl;
- listen 443 quic;
- listen [::]:443 ssl;
- listen [::]:443 quic;
- http3 on;
- http2 on;
- ......
- }
复制代码 给 listen 指令添加 reuseport 可以解决这个问题。- server {
- listen 443 ssl reuseport;
- listen 443 quic reuseport;
- listen [::]:443 ssl reuseport;
- listen [::]:443 quic reuseport;
- http3 on;
- http2 on;
- ......
- }
复制代码 需要注意的是,在多个 server 配置块中使用 reuseport 可能因为重复绑定相同的地址和端口号而导致 nginx 无法启动。- nginx: [emerg] duplicate listen options for 0.0.0.0:443 in /server/wuxiancheng.cn/nginx/conf/nginx.conf:78
复制代码- nginx: [emerg] duplicate listen options for [::]:443 in /server/wuxiancheng.cn/nginx/conf/nginx.conf:80
复制代码 相关链接 nginx:listen quic |
|