Der Nginx-Reverseproxy erfordert einen internen Port, um beim Umleiten des Datenverkehrs auf den Docker-Hostcomputer zu funktionieren

Der Nginx-Reverseproxy erfordert einen internen Port, um beim Umleiten des Datenverkehrs auf den Docker-Hostcomputer zu funktionieren

Ich habe einen Linux-Hostcomputer mit mehreren Docker-Containern verwendet, einer davon alsNginx Proxy Manager(von jetzt an: NPM), das ist einfach Nginx mit einer benutzerfreundlichen Benutzeroberfläche.

NPM stellt die Ports 80 und 443 bereit und leitet den Datenverkehr gemäß den angegebenen Proxy-Regeln, einer normalen alten Reverse-Proxy-Konfiguration, an jeden Container um. Alle Container werden angewiesen, sich mit einem Bridge-Docker-Netzwerk zu verbinden, damit NPM sie problemlos erreichen kann.

Das alles funktioniert. Jetzt habe ich einen neuen Dienst, der ebenfalls mit NPM verfügbar gemacht werden muss. Der Unterschied besteht darin, dass der Dienst nicht auf einem Container, sondern auf dem Hostcomputer ausgeführt wird und über Port 3711 erreichbar ist.

Ich habe recherchiert und bin zu diesem Vorschlag gekommen:

extra_hosts:
    - "host.docker.internal:host-gateway"

Indem Sie das zur Docker-Compose-Datei unter dem NPM-Dienst hinzufügen, können Sie jeden Port auf dem Hostcomputer erreichen. Tatsächlich host.docker.internalbekomme ich eine Antwort, indem ich aus dem NPM-Container heraus einen Ping ausführe. Das Problem ist, dass nach dem Einrichten der Proxy-Regel, wie ich es immer mache, Folgendes passiert:

Bildbeschreibung hier eingeben

Wenn ich versuche, den Dienst vom Internet aus über ci-server.domain.com zu erreichen, erhalte ich eine 502. ABER wenn ich ci-server.domain.com:3711 eingebe, kann ich ihn erreichen!

Warum muss ich den internen Port zur Domäne hinzufügen?Alle meine anderen auf Containern laufenden Dienste reagieren auf 80/443 und werden intern zu ihren Ports umgeleitet.

verwandte Informationen