使用NGINX 1.25在多个域上启用QUIC / http/3

x6yk4ghg  于 2023-06-05  发布在  Nginx
关注(0)|答案(2)|浏览(672)

NGINX 1.25 introduced support for http/3 (over QUIC).要启用它,可以添加

listen 443 quic reuseport;

server块,以及可能存在的

listen 443 ssl http2;

但是,如果我为多个服务器块添加quic侦听(它们都有不同的server_name集),那么NGINX会拒绝配置,并出现以下错误:

[emerg] 2611#2611: duplicate listen options for 0.0.0.0:443 in /etc/nginx/sites-enabled/site.conf

可以监听不同域的 * 不同 * 端口,但这似乎对用户不友好- Firefox将在url中显示端口号,即使它首先通过http/2加载页面,然后从Alt-Svc头中获取http/3端口。手动分配端口和为此配置防火墙也很繁琐。
我所有的server块都使用相同的证书。我拥有server块的所有域都是单个证书中的主题替代名称。RFC 9114说http/3客户端必须支持服务器名称指示,但即使没有它,因为我所有的域都使用相同的证书,理论上应该可以建立连接,然后根据Host报头决定提供什么内容。但是,当我通过QUIC发送请求时,NGINX从listen 443 quic所在的server块中提供服务,它似乎忽略了服务器名称。
NGINX 1.25是否可以在端口443上通过http/3服务多个域?

mf98qq94

mf98qq941#

是的,nginx可以在多个虚拟主机上提供http/3服务,但reuseport选项仅支持1个虚拟主机,每个listen IP:PORT指令。
因此,您应该为虚拟主机使用不同的IP或删除reuseport选项。

yptwkmov

yptwkmov2#

您应该只指定一次“reuseport”,nginx将为具有相同主机端口对的所有主机使用它。
不需要不同的IP。nginx文档

相关问题