私には 2 つのサービスがあり、どちらもきちんと Docker 化されており、それぞれ独自の を持っていますdocker-compose.yml
。
各サービスには独自のドメイン名があります。
どちらのサービスも HTTPS を使用し、Lets Encrypt 証明書を持っています。
どちらのサービスも完全に自己完結型で、80 と 443 でリッスンします。
.--[http]-[https]--. .--[http]-[https]--.
| | | |
| Service A | | Service B |
| | | |
'------------------' '------------------'
同じホスト上で両方のサービスを起動できるようにリバース プロキシを設定するにはどうすればよいですか?
.--------------[http]-[https]--------------.
| |
| REVERSE PROXY |
| |
'---+--------+---------------+--------+----'
| | | |
http https http https
req. req. req. req.
domainA domainA domainB domainB
| | | |
V V V V
.--[http]-[https]--. .--[http]-[https]--.
| | | |
| Service A | | Service B |
| | | |
'------------------' '------------------'
サービスを自己完結型にしておきたいです。つまり、サービス コンテナーから証明書を抽出しないようにしたいのです。
私の実験によると、nginxは証明書なしでHTTPSリクエストを転送できないようですが、そうみたいですこれを実現することは可能だと思います。おそらく他のリバース プロキシ ソフトウェアを使用すれば実現できるのではないでしょうか。
両方のサービスが制御できますdocker-compose.yml
。必要に応じてポートなどを変更することもできます。
理想的には、次のような設定を受け入れるシンプルなデーモンを見つけたいです。
[service a]
domain: domainA.tld
localPort: 8080
[service b]
domain: domainB.tld
localPort: 8081
必死に探しましたが、そのようなツールは見つかりませんでした。
答え1
あなたはjwilder/nginx-プロキシは、自動化されたリバース プロキシ機能を提供し、簡単な docker-compose 統合が付属しています (サービスが実行されているポートとサービスが利用可能になるドメインという、いくつかの環境変数を指定するだけです)。
Let's Encryptの証明書生成を自動化することもできます。jrcs/letsencrypt-nginx-プロキシコンパニオン。