EntsprechendDasWenn auf einer Website ein Netzwerk von Containern eingerichtet wird, lauscht jeder Container standardmäßig auf Port 80, was zu Konflikten im eingehenden Datenverkehr führen kann. Dies wird durch die Verwendung des Nginx-Reverse-Proxys (der ebenfalls auf Port 80 lauscht) gelöst, der nach der Variable VIRTUAL_HOST sucht und den Datenverkehr an den richtigen Container weiterleitet.
Aber das verstehe ich nicht. Wenn Nginx auch auf Port 80 lauscht (wie alle anderen Container), wie löst das dann das Problem des Verkehrskonflikts? Da Nginx auf Port 80 lauscht, sollte das Konfliktproblem dann nicht weiterhin bestehen? Erfasst Nginx automatisch den gesamten eingehenden Verkehr, unabhängig von der Portnummer der anderen Container? Ich finde dieses ganze Konzept ziemlich verwirrend.
Antwort1
Wenn Nginx (wie alle anderen Container) auch auf Port 80 lauscht, wie wird dann das Problem der Verkehrskonflikte gelöst?
Vielleicht verstehe ich den Artikel falsch, aber es scheint wahrscheinlich, dass „alle anderen Container“ nicht auf Port 80 lauschen (Hervorhebung hinzugefügt):
Standardmäßig lauschen alle Docker-Dienste auf Port 80, was zu Konflikten beim eingehenden Datenverkehr führen würde. Sie können den Abhörport natürlich ändern, aber niemand möchte coolwebsite.com:34567 eingeben, um auf seine Lieblingssite zuzugreifen.
Was wäre, wenn Sie stattdessen nginx verwenden könnten, um den bei coolwebsite.com eingehenden Datenverkehr an einen eindeutigen Container umzuleiten, der auf Port 34567 lauscht, und den bei anothercoolwebsite.net eingehenden Datenverkehr an einen zweiten Container umzuleiten, der auf Port 45678 lauscht?
In diesem Szenario scheint Nginx der einzige Webserver zu sein, der auf Port 80 lauscht.
Erfasst Nginx automatisch den gesamten eingehenden Datenverkehr, unabhängig von der Portnummer der anderen Container?
Nginx würde den gesamten Datenverkehr auf Port 80 erfassen. Das http://coolwebsite.com
entspricht praktisch dem http://coolwebsite.com:80
bei den meisten Programmen. Nginx würde dann den Datenverkehr zwischen Port 80 und dem Port weiterleiten, auf dem die Docker-Container ausgeführt werden, abhängig vom Hostnamen.