TDLR
nginx 1.25以降で バーチャルドメインを同一IPアドレスでhttp/3(QUIC)運用する方法
nginx.confでのreuseport
は1つのポートに対して1箇所のみ指定しましょう
Install
HTTP/3が使えるようにコンパイルされたnginxが各自用意してください
e.g.
エッセンシャルなところだけ
2つ目以降のlisten
には reuseport
をつけずに quic
だけ記述するのがミソ
あと、ワイルドカード証明書を使う場合は、その証明書を使っている全てのバーチャルドメインで同一の設定にしておかないと、コネクションを使い回そうとするのでエラーが出たりするので注意
nginx.conf
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
listen 443 quic reuseport;
listen [::]:443 quic reuseport;
http2 on;
http3 on;
server_name _;
location / {
root /default_root/;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
listen 443 quic;
listen [::]:443 quic;
http2 on;
server_name virtual1.example.org;
location / {
add_header Alt-Svc 'h3=":443"; ma=86400' always;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
listen 443 quic;
listen [::]:443 quic;
http2 on;
server_name virtual2.example.org;
location / {
add_header Alt-Svc 'h3=":443"; ma=86400' always;
}
}
Conclusion
- 全ての
listen
にreuseportをつけるとハマる。 - 設定するのは最初の一つだけ