Vor Kurzem wurde ein System bereitgestellt, das nginx als Reverse-Proxy verwendet, wobei nginx in Docker ausgeführt wird: $ docker run -d --name nginx $PWD:/etc/nginx -p 80:80 -p 443:443 nginx:1.15 Der API-Dienst, der geproxied werden muss, läuft auf Port 1234 des Host-Rechners. Die entsprechende Konfiguration von nginx.conf lautet wie folgt: Server { ... Standort /API { Proxy-Passwort http://localhost:1234 } ... } Als ich darauf zugegriffen habe, stellte ich fest, dass immer ein 502 Bad Gateway-Fehler gemeldet wurde und das Fehlerprotokoll zeigte, dass keine Verbindung zum Upstream hergestellt werden konnte. Wenn ich es mir recht überlege, scheint mit localhost in nginx.conf etwas nicht zu stimmen. Da nginx in einem Docker-Container ausgeführt wird, ist dieser Localhost der Localhost des Containers und nicht der Localhost des Hosts. An diesem Punkt stellt sich das Problem, das dieser Artikel lösen soll: Wie greife ich vom Container aus auf das Host-Netzwerk zu? Es gibt mehrere Möglichkeiten, im Internet zu suchen: Host-IP verwenden Bei der Installation von Docker wird auf dem Host ein virtuelles Gateway docker0 installiert. Wir können die IP-Adresse des Hosts auf docker0 anstelle von localhost verwenden. Verwenden Sie zunächst den folgenden Befehl, um die IP-Adresse des Hosts abzufragen: $ IP-Adresse anzeigen docker0 3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue status UP-Gruppenstandard Link/Ether 02:42:d5:4c:f2:1e brd ff:ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 Bereich global docker0 valid_lft für immer preferred_lft für immer inet6 fe80::42:d5ff:fe4c:f21e/64 Bereichslink valid_lft für immer preferred_lft für immer Es kann festgestellt werden, dass die IP des Hostcomputers 172.17.0.1 ist. Daher kann das Ändern des Proxy-Passworts http://localhost:1234 in das Proxy-Passwort http://172.17.0.1:1234 den Fehler 502 Bad Gateway beheben. Die IP-Adresse des Hostcomputers ist jedoch in verschiedenen Systemen unterschiedlich. Beispielsweise lautet sie unter Linux normalerweise 172.17.0.1 und unter macOS 192.168.65.1. Diese IP-Adresse kann auch geändert werden. Daher kann die Verwendung von IP zum Konfigurieren von nginx.conf nicht umgebungsübergreifend verwendet werden. Hostnetzwerk verwenden Wenn der Docker-Container ausgeführt wird, stehen drei Netzwerktypen zur Konfiguration zur Verfügung: Host, Bridge und Keine. Die Standardeinstellung ist „Bridge“, was „Bridge-Netzwerk“ bedeutet und im Bridge-Modus mit dem Host verbunden ist; „Host“ bedeutet das Host-Netzwerk, was bedeutet, dass das Netzwerk mit dem Host geteilt wird; „None“ bedeutet, dass kein Netzwerk vorhanden ist und der Container keine Verbindung zum Internet herstellen kann. Wenn der Container das Hostnetzwerk verwendet, teilen sich der Container und der Host das Netzwerk, sodass im Container auf das Hostnetzwerk zugegriffen werden kann und der lokale Host des Containers der lokale Host des Hosts ist. Verwenden Sie --network host in Docker, um das Host-Netzwerk für den Container zu konfigurieren: $ docker run -d --name nginx --network host nginx Im obigen Befehl muss zum Zuordnen von Ports nicht wie zuvor -p 80:80 -p 443:443 verwendet werden, da der Container das Netzwerk mit dem Host teilt und die freigegebenen Ports im Container den freigegebenen Ports auf dem Host entsprechen. Die Verwendung des Hostnetzwerks erfordert keine Änderung von nginx.conf und localhost kann weiterhin verwendet werden. Es ist also vielseitiger als die vorherige Methode. Da das Host-Netzwerk jedoch nicht so isoliert ist wie das Bridge-Netzwerk, ist die Sicherheit bei der Verwendung des Host-Netzwerks nicht so hoch wie bei der Bridge. Zusammenfassen In diesem Artikel werden zwei Methoden vorgeschlagen: die Verwendung der Host-IP und die Verwendung des Host-Netzwerks, um vom Container aus auf das Host-Netzwerk zuzugreifen. Beide Methoden haben ihre eigenen Vor- und Nachteile. Die Verwendung der Host-IP bietet eine bessere Isolierung, aber eine geringe Vielseitigkeit; die Verwendung des Host-Netzwerks bietet eine gute Vielseitigkeit, birgt jedoch das Risiko, das Host-Netzwerk offenzulegen. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Mehrere Methoden zum Ändern des MySQL-Root-Passworts (empfohlen)
>>: JavaScript ermittelt, ob der Browser IE ist
Statistik der QPS-Werte der letzten N Sekunden (i...
Inhaltsverzeichnis Herunterladen und Installieren...
In einer komplexen Tabellenstruktur erstrecken si...
1. Überprüfen Sie zunächst, ob auf dem System MyS...
Nach drei Tagen voller Schwierigkeiten habe ich d...
Inhaltsverzeichnis Einführung in Bootstrap und di...
1. Einführung in das Geschäftsszenario Angenommen...
1. Vorbereitung vor der Installation Überprüfen S...
Ich habe viele relevante Tutorials im Internet ge...
1. Erstellen Sie mit der Methode Object.create() ...
Bei der Suchmaschinenoptimierung (SEO) sind viele ...
Einführung Nach dem Kompilieren, Installieren und...
Jeder, der HTML studiert oder verwendet hat, soll...
Ideen: Eine äußere Box legt den Hintergrund fest;...
Inhaltsverzeichnis 1. Lösung auslösen 2. Partitio...