Apacheで立てたWEBサーバーへHTTPSアクセスをさせ、そのアクセスをWEBサーバー内のDockerコンテナのWEBサーバーへ転送することで、DockerコンテナのWEBサーバーでTLS証明書管理を不要にする設定方法です。
ここでは例として、ホストの 60443番ポートへのHTTPSアクセスで、ホストの 127.0.0.1:50443番を通してDockerコンテナ内の 80番へ転送する設定です。
ホストのApache でリバースプロキシとSSL設定を行います。
RockyLinuxでは /etc/httpd/conf.d/下に confファイルを次の内容で作成します。
SSLCertificateFile,SSLCertificateKeyFile,SSLCertificateChainFile は各自の環境のものを設定してください。
Listen 60443
<VirtualHost *:60443>
RequestHeader set X-Forwarded-Proto "https"
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:50443/
ProxyPassReverse / http://127.0.0.1:50443/
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
</VirtualHost>Docker では docker run の -pオプションを次のようにしておきます。
-p 127.0.0.1:50443:80これで、https://example.com:60443 のようにホストへHTTPS接続すると、Docker内のWEBサーバーに接続できます。またTLS証明書はホストで管理すれば良く、Docker内のWEBサーバーでは管理不要です。
コメント