Mehrere Dienste hinter einem Server mit Nginx Proxy Manager
Wenn auf einem Server mehr als ein Projekt läuft, stößt man früher oder später auf die Ports 80 und 443, die nur ein einziger Prozess belegen kann. Ein Habr-Artikel aus dem Selectel-Blog zeigt Schritt für Schritt, wie sich das mit Nginx Proxy Manager lösen lässt.
Der Autor erklärt zunächst das Problem: privilegierte Ports, die Regel „ein Port, ein Listener“, CORS-Probleme, wenn Frontend und Backend über verschiedene Ports laufen, und das Fehlen von HTTPS. Ein Reverse Proxy löst das als Vermittler, indem er den Datenverkehr nach Domain und Pfad verteilt. Ein weiterer Vorteil: In der Firewall müssen nur die Ports 22, 80 und 443 offen sein.
Die Testumgebung ist ein VDS mit 2 vCPUs, 2 GB RAM und 40 GB NVMe, mit Ubuntu 24.04 und Docker aus dem offiziellen Repository. Das Netzwerk wird mit docker network create proxy angelegt, dann startet der Container jc21/nginx-proxy-manager mit Volumes für Daten und Zertifikate. Gut gefallen hat mir, dass das Admin-Interface auf Port 81 nur an 127.0.0.1 gebunden ist und der Zugriff über einen SSH-Tunnel erfolgt.
Als Nächstes wird ein Proxy-Host eingerichtet: Im Feld Forward Hostname steht der Containername, das SSL-Zertifikat wird auf dem Reiter SSL zugewiesen. Zum Testen dient traefik/whoami. Außerdem behandelt der Artikel den Fall, dass die Anwendung direkt auf dem Host läuft: Die Gateway-Adresse des Docker-Netzwerks ermittelt man mit docker network inspect, und die Firewall wird so eingestellt, dass man die Anwendung nicht am Proxy vorbei erreichen kann.
Es gibt auch Kritikpunkte. Die Beispiele vermischen verschiedene Domains, und das Image nutzt das Tag latest, wodurch die Reproduzierbarkeit mit der Zeit leiden kann. Trotzdem ist es ein guter Einstieg für alle, die mehrere Dienste zu Hause oder auf einem VDS betreiben wollen, ohne nginx-Konfigurationen von Hand zu bearbeiten.
Quelle: Habr (Selectel-Blog)
Der Autor erklärt zunächst das Problem: privilegierte Ports, die Regel „ein Port, ein Listener“, CORS-Probleme, wenn Frontend und Backend über verschiedene Ports laufen, und das Fehlen von HTTPS. Ein Reverse Proxy löst das als Vermittler, indem er den Datenverkehr nach Domain und Pfad verteilt. Ein weiterer Vorteil: In der Firewall müssen nur die Ports 22, 80 und 443 offen sein.
Die Testumgebung ist ein VDS mit 2 vCPUs, 2 GB RAM und 40 GB NVMe, mit Ubuntu 24.04 und Docker aus dem offiziellen Repository. Das Netzwerk wird mit docker network create proxy angelegt, dann startet der Container jc21/nginx-proxy-manager mit Volumes für Daten und Zertifikate. Gut gefallen hat mir, dass das Admin-Interface auf Port 81 nur an 127.0.0.1 gebunden ist und der Zugriff über einen SSH-Tunnel erfolgt.
Als Nächstes wird ein Proxy-Host eingerichtet: Im Feld Forward Hostname steht der Containername, das SSL-Zertifikat wird auf dem Reiter SSL zugewiesen. Zum Testen dient traefik/whoami. Außerdem behandelt der Artikel den Fall, dass die Anwendung direkt auf dem Host läuft: Die Gateway-Adresse des Docker-Netzwerks ermittelt man mit docker network inspect, und die Firewall wird so eingestellt, dass man die Anwendung nicht am Proxy vorbei erreichen kann.
Es gibt auch Kritikpunkte. Die Beispiele vermischen verschiedene Domains, und das Image nutzt das Tag latest, wodurch die Reproduzierbarkeit mit der Zeit leiden kann. Trotzdem ist es ein guter Einstieg für alle, die mehrere Dienste zu Hause oder auf einem VDS betreiben wollen, ohne nginx-Konfigurationen von Hand zu bearbeiten.
Quelle: Habr (Selectel-Blog)
Kommentare 0
Schreib den ersten Kommentar, in jeder Sprache.
Zum Kommentieren anmelden