- blogs:
- cles::blog

Docker で HTTP/3 対応の nginx のリバースプロキシを立ててみた






リバースプロキシはこれまで Apache HTTPd で構築していましたが、今回の Docker 化を機に Nginx に移行することにしました。
TLS 化のための証明書は Let's Encrypt を使い、折角なので HTTP/3 にも対応させてみることにします。具体的には以下の2つのイメージを組み合わせています。
- dasskelett/nginx-quic(DasSkelett / nginx-quic-docker · GitLab)
- vdhpieter/letsencrypt-webroot(vdhpieter/docker-letsencrypt-webroot: Letsencrypt cert auto renewal for nginx base image)
ファイルを配置したら、コンテナを起動する前にファイル中にあるfoo.example.com
は、全てサーバの FQDN に合わせて書き換えてください。リバースプロキシについては先日立てた Gitbuket に接続する例を書いてみましたが、この部分についても必要なサービス宛に書き換える必要があります。
また、初回起動時には TLS の証明書がないので TLS の設定が入った Nginx の設定ファイル(nginx.conf)だと Nginx が起動しません。このため、初回起動時だけ TLS の設定が入っていない設定ファイル(nginx.conf.wossl)で一度コンテナを起動し、TLS 証明書を取得してから TLS を有効化するという手順が必要になります。
いつも通りコンテナの起動は以下のコマンドです。
Nginx の設定が初めてなので、ちょっと設定の追い込みはまだ甘いと思います。。。。。。
† Let's Encrypt のレートリミットに注意
追加の注意事項として、Let's Encrypt には一定時間内に取得できる証明書の数にレートリミットがあります*1。これを認識せずに、設定に不備があるままの状態で不用意にコンテナの up / down を繰り返すと証明書が取得できなくなることがあります。
このような事態を避けるため、レート制限が緩いテスト環境(STAGING=1
)で TLS 対応の Nginx が起動するまで設定を調整し、最後に STAGING=0
にして正規の証明書を取得するようにした方が良いです。
† ファイル構成
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12311
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110622)
3 . 年次の人間ドックへ(110253)
4 . 2023 年分の確定申告完了!(1つめ)(109799)
5 . 三菱鉛筆がラミーを買収(109697)