nginx proxy_pass zu einer verlinkten docker-container
Habe ich zwei docker-Container mit nginx. container1 ist mit container2. Andockfenster dann ein Eintrag Hinzugefügt, der /etc/hosts, die ich eingetragen in die nginx-Konfiguration so:
server {
location ~ ^/some_url/(.*)$ {
proxy_pass http://container1/$1;
}
}
Kann ich ping container1 von container2, aber nginx nicht lösen:
*1 keine resolver definiert zu beheben container1
Wie kann ich proxy_pass eine Anfrage zu einem anderen docker-container?
- Können Sie Ihre hosts-Datei? Wie hast du die Verbindung der beiden Behälter? (Welchen Namen hat den link haben?) Auch gotcha: In Fall, dass Sie
rm
d einen der Behälter aus und starten Sie es später, die IP wird geändert (hosts werden nicht aktualisiert) - Ich habe gerade versucht Konfiguration ähnlich wie deine und es funktionierte gut für mich mit
nginx:1.7.9
. Können Sie starten Sie die bash in container2 und curl container1 ? Sie sind nicht mit den gleichen Konfigurationen sowohl container1 und 2, sind Sie? - Ich kann ping und curl und was nicht container1 von container2. Mein problem ist, dass nginx nicht zu sein scheinen in der Lage, es zu beheben. Ich bin nicht mit den gleichen Konfigurationen, Nein (wenn Sie ' re unter Bezugnahme auf nginx-config).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie einen Blick auf diese Antwort über die Verwendung von /etc/hosts als Ihre resolver: Die Verwendung von /etc/hosts als resolver für url-rewriting
Grundsätzlich, Ihre dns-oder resolver nicht verwendet /etc/hosts zur Namensauflösung während eine Suche, aber Sie können umgehen dies, indem Sie
dnsmasq
und mit127.0.0.1
als Ihre Auflösung. Sie können fügen Sie 127.0.0.1 als den resolver, der direkt in Ihrem nginx-config:Verwendung eines upstream-block, anstatt die container-Namen direkt
Damit sollte die normale Namensauflösung auftreten, eine Möglichkeit bieten, leicht zu verwenden, um das Andockfenster Verknüpfungen mit nginx.
container1
muss eingerichtet sein und laufen, bevor Sie beginnen können, Ihre nginx-container, sonst startet es nichtbash -c "while ! curl -s container1:8080 > /dev/null; do echo waiting for container1; sleep 3; done; start_nginx.sh"
wostart_nginx.sh
tatsächlich startet der nginx-Dienst.--link
das ist eine Anforderung jedenfalls.Könnten Sie eingebettet Andockfenster DNS-Dienst, wenn Sie aktiviert ist, überprüfen Sie Ihren container resolver:
Werden sollte:
Verwenden Sie diese als IP-resolver:
etc/resolv.conf
für die nameserver-IP.