Heim >Betrieb und Instandhaltung >Nginx >Verwenden Sie Nginx, um mehrere Docker-Container als Reverse-Proxy zu verwenden

Verwenden Sie Nginx, um mehrere Docker-Container als Reverse-Proxy zu verwenden

藏色散人
藏色散人nach vorne
2019-09-21 10:05:466566Durchsuche

Einführung

Als ich Docker vorstellte, sagte ich, dass einer seiner Vorteile darin besteht, dass es mehrere Umgebungen auf demselben Server erstellen und diese voneinander isolieren kann. Ich habe gestern den eigentlichen Vorgang durchgeführt und hätte nie erwartet, dass es so viele Fallstricke geben würde und dass es zeitaufwändiger sein würde, als zuvor einen Server von Grund auf neu zu erstellen. Nachdem ich mehrere Pläne geändert habe, habe ich es endlich gelöst. Ich werde die Traurigkeit in der Mitte ignorieren und nur über die Operationsmethode sprechen.

Empfohlenes Tutorial: Nginx-Tutorial

Architektur

Das Laradock-Image ist bereits auf dem Server vorhanden, auf dem Laravel ausgeführt werden kann Umgebung und anderes PHP umfassen Nginx, MySQL, Redis usw.

Meine Idee ist, einen weiteren Nginx-Container für den Reverse-Proxy hinzuzufügen. Nach Subdomain-Namen verteilen, kann an Laradock oder an jeden anderen Container (einschließlich WordPress, Python, Java) usw. verteilt werden.

Lradock ändern

Zu sein geändert Es gibt nur einen Ort, nämlich den Port, den Nginx abhört.

1. Geben Sie das Laradock-Verzeichnis ein

2. Ändern Sie die .env-Datei und ändern Sie den NGINX_HOST_HTTP_PORT-Wert von 80 auf 8000

3

4. Installieren Sie Nginx neu, Docker-Compose Build Nginx

5. Starten Sie Docker-Compose Up -d Nginx

Zu diesem Zeitpunkt können Sie im Browser nicht erfolgreich darauf zugreifen . Weil Nginx nicht mehr auf Port 80 lauscht.

Nginx-Container hinzufügen

Neuen Nginx-Container für Reverse-Proxy hinzufügen. Bei der Installation von Laradock ist bereits ein Image von nginx:alpine vorhanden und der Container kann direkt generiert werden. Natürlich können Sie auch wieder ein neues Bild ziehen. (Alpine-Version wird empfohlen)

1. Überprüfen Sie die Nginx-Image-ID, Docker-Iamges

2. Erzeugen Sie einen neuen Nixn-Container, Docker run --name Proxy_nginx -p 80:80 -d [ Nginx-Image-ID]. Sie können auch den Parameter -v hinzufügen, um die Konfigurationsdatei zuzuordnen, die in meiner Umgebung mit weniger Änderungen nicht benötigt wird

3 Wenn Sie zu diesem Zeitpunkt im Browser darauf zugreifen, sollte es sich um die Standardseite von Nginx handeln. Zeigt an, dass der Start erfolgreich war

4. Geben Sie den generierten Container „docker exec -it Proxy_nginx sh“ ein , /sbin/ip route |. awk '/default/ { print $3 }'

7. Fügen Sie eine neue Konfigurationsdatei laradock.conf im Verzeichnis /etc/nginx/conf.d/ mit dem folgenden Inhalt hinzu

server {
    listen  80;
    server_name  you_site;
    location / {
        proxy_set_header  Host  $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://[宿主机IP]:8000;
    }
}

1. Beenden Sie den Container und starten Sie dann den Docker-Restart-Proxy_nginx

Öffnen Sie Port 8000, siehe hier

Fazit

Wenn Sie zu diesem Zeitpunkt besuchen, können Sie einen Proxy für Laradock Nginx darin erstellen. Wenn Sie später weitere Container hinzufügen möchten, müssen Sie nur neue Proxy-Regeln in Proxy_nginx hinzufügen.

Das obige ist der detaillierte Inhalt vonVerwenden Sie Nginx, um mehrere Docker-Container als Reverse-Proxy zu verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen