Nginx v1.27.0でHTTP/2とHTTP/3に対応させる
3 min read
こんにちは、無能です。
東京の家が一回見つかったと思ったらまた振り出しに戻り、なんやかんやでいい物件が見つかったような気がする今日この頃です。最悪、どっかしらのシェアハウスにでも転がり込みます。
今の職場では同じプロジェクトメンバーに送別会やろーぜ!と言ってくれ有り難いという今日この頃。
人生で人に恵まれているなあとつくづく思います。
ところで、こないだのDenoにプルリクエストを送ったらマイルストーンを設定してくれたので焦ることなく淡々とソース追うだけです。なんやかんやですごい量になっているDenoのRustコード自体の最適解を見つけ出すのはしょうもない機能でも出来る限り変更点無いようにするのは説明書がソースコードみたいなことになっているので色々試してくしかないですね。
うまくいかなかったらうまくいかなかったとき考えます。
NginxでHTTP/2とHTTP/3対応しよう
PHPの開発者であるラスマス・ラードフのインタビュー記事を読んでいたら、HTTP/2に未来を感じるだとかを言っているのを見て「あれ、俺のNginxサーバーどうなっていたかな」と気になり対応してみることに。
どうやらNginx
のHTTP/3対応はv1.25
以降であるらしいからバージョン確認。
# nginx -v
nginx version: nginx/1.27.0
対応しているっぽいですね。
自分のNginx
はpkg
から入れたものではなく、自分でビルドしてきたものなので同じFreeBSD
環境でも差異はあるかと思います。
難しいことは考えずに一旦対応させてみることにします。
confファイルへの記述
リバースプロキシとして稼働させているだけのNginx
サーバなのでサクサクやっていきます。
server {
listen 443 ssl;
listen 443 quic reuseport;
listen [::]:443 quic reuseport;
http2 on;
http3 on;
server_name soulminingrig.com www.soulminingrig.com;
なんかHTTP/3
って確かGoogleが推進しようとしているものでQUIC
プロトコル自体Google作ったものだった気がします。
ヘッダー情報に以下を追記
add_header Alt-Svc 'h3=":443"; ma=86400';
add_header X-Content-Type-Options nosniff;
そして、nginx -t
でテストを行い何も無ければ再起動。
rootユーザで作業しているので以下で実行。
service nginx restart
そして、QUIC
自体が443/UDP
を使うらしくコレをポート開放してあげないといけないみたい。。。
第3章 詳解HTTP/3 ~ いかにしてQUICを活用し、いかにして高速化を実現したか
現在多くの実装は、デフォルトではUDPの443番ポートを使用しているようです。
上記の通りに見れば
add_header Alt-Svc 'h3=":443"; ma=86400';
で設定したのが443番ポートだから、443番開けてあげて変更する場合は別ポート開放で良さそうですね。
vim /etc/pf.conf
これで以下を追記
set skip on lo
exsrv1 = 167.179.75.206
~~~
# HTTP/3 Protocol
pass in inet proto udp from any to $exsrv1 port 443
これで以下で-nf
オプションでテストしてから-f
で適応。
pfctl -nf /etc/pf.conf
pfctl -f /etc/pf.conf
ちゃんと適応されたかな?
適応されたかどうか、Curl
で確認する方法もあるみたいですがだいたいこういうときには自分のネットワークと関係ないところから確認したほうがうまく検証出来るのでブラウザ上から確認します。
HTTP/3 Check
うん、うまく行きました!
もっと細かく設定している方も居ますが、一旦ここまででよいかなあ。と思っています。
それでは。またよろしくお願いします。