- 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 を使ってログインすることができます。
- シェルスクリプトで最新のフ... (1)
- 情報処理安全確保支援士の登... (1)
- どうしてみんな firewalld で... (1)
- Windows のディスクのプロパ... (1)
- Teams を複数起動させる( ba... (1)
2 . Word で数式がグレーアウトされていて挿入できないときは(7391)
3 . Windows 10 で勝手にログアウトされないようにする(5467)
4 . Firefox でパスワードが保存されるページとされないページの違い(4094)
5 . awk で指定した n カラム目以降を出力する(3705)