私はLinuxホストマシンで複数のDockerコンテナを実行しており、そのうちの1つとしてNginx プロキシ マネージャー(以下、NPM) は、使いやすい UI を備えた Nginx です。
NPM はポート 80 と 443 を公開し、指定されたプロキシ ルール (従来の一般的なリバース プロキシ構成) に従って各コンテナーにトラフィックをリダイレクトします。すべてのコンテナーはブリッジ Docker ネットワークに接続するように指示されるため、NPM は簡単にコンテナーにアクセスできます。
すべてうまくいきました。今度は、NPM を使用して公開する必要がある新しいサービスがあります。違いは、サービスがコンテナー上ではなくホスト マシン上で実行され、ポート 3711 でアクセスできることです。
調査した結果、この提案に至りました:
extra_hosts:
- "host.docker.internal:host-gateway"
これを NPM サービスの docker-compose ファイルに追加することで、ホスト マシン上の任意のポートにアクセスできるようになります。実際、NPM コンテナー内から ping を実行すると、host.docker.internal
応答が得られました。問題は、いつものようにプロキシ ルールを設定した後、次のようになることです。
インターネットから ci-server.domain.com でサービスにアクセスしようとすると、502 が返されます。ただし、ci-server.domain.com:3711 を実行するとアクセスできます。
ドメインに内部ポートを追加する必要があるのはなぜですか?コンテナ上で実行されている他のすべてのサービスは 80/443 に応答し、内部的にポートにリダイレクトされます。