によるとこれウェブサイトでは、コンテナのネットワークが設定されている場合、各コンテナはデフォルトでポート 80 をリッスンするため、着信トラフィック間で競合が発生する可能性があります。これは、VIRTUAL_HOST 変数を検索し、トラフィックを適切なコンテナにルーティングする Nginx リバース プロキシ (ポート 80 をリッスン) を使用して解決します。
しかし、ここで理解できないことがあります。Nginx も (他のすべてのコンテナーと同様に) ポート 80 でリッスンしている場合、トラフィックの競合の問題はどのようにして解決されるのでしょうか。Nginx がポート 80 でリッスンしているのであれば、競合の問題は依然として残るのではないでしょうか。Nginx は、他のコンテナーのポート番号に関係なく、すべての着信トラフィックを自動的にキャプチャするのでしょうか。この概念全体が非常にわかりにくいと思います。
答え1
Nginx も (他のすべてのコンテナと同様に) ポート 80 でリッスンしている場合、トラフィックの競合の問題はどのようにして解決されるのでしょうか?
おそらく私は記事を誤読しているのでしょうが、「他のすべてのコンテナ」はポート 80 をリッスンしていないようです (強調追加):
デフォルトでは、Docker サービスはすべてポート 80 でリッスンするため、着信トラフィックの競合が発生します。もちろん、リッスン ポートを変更することもできますが、お気に入りのサイトにアクセスするために coolwebsite.com:34567 と入力したい人はいないでしょう。
代わりに、nginx を使用して、coolwebsite.com に到着するトラフィックを 34567 ポートでリッスンしているコンテナーにルーティングし、anothercoolwebsite.net に到着するトラフィックを 45678 ポートでリッスンしている 2 番目のコンテナーにルーティングできるとしたらどうでしょうか。
このシナリオでは、ポート 80 でリッスンしている Web サーバーは Nginx のみであるようです。
Nginx は、他のコンテナのポート番号に関係なく、すべての着信トラフィックを自動的にキャプチャしますか?
Nginx はポート 80 のすべてのトラフィックをキャプチャします。つまり、ほとんどのソフトウェアhttp://coolwebsite.com
と実質的に同等ですhttp://coolwebsite.com:80
。その後、Nginx は、ホスト名に応じて、ポート 80 と Docker コンテナーが実行されているポートの間でトラフィックを中継します。