Kapitel 5 · 5.3
Eine App hinter einem Reverse Proxy
Viele Apps haben einen eigenen kleinen Webserver auf einem Port, etwa 3001 oder 5678. Diesen Port öffnen Sie nicht zum Internet. Ihr Webserver empfängt den Datenverkehr auf 443 mit https und leitet ihn an die App weiter: ein Reverse Proxy.
Mit Caddy
Lauscht die App auf dem Server selbst auf Port 3001:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Caddy leitet die richtigen Header (etwa X-Forwarded-For und X-Forwarded-Proto) und Websockets automatisch weiter. Läuft die App in Docker neben Caddy, verwenden Sie den Namen des Containers, wie in Ihr Arbeitsverzeichnis mit compose.yaml, .env und Caddy.
Mit nginx
server {
listen 80;
listen [::]:80;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Danach sudo nginx -t, sudo systemctl reload nginx und sudo certbot --nginx -d status.example.com.
Gut zu wissen
- Lassen Sie die App nur auf
127.0.0.1lauschen, nicht auf allen Adressen. Dann kann niemand Ihren Proxy umgehen. - Viele Apps möchten wissen, unter welcher Adresse sie erreichbar sind, zum Beispiel über eine Einstellung wie
DOMAINoderN8N_HOST. Tragen Sie dort die https-Adresse ein. - Einen Verwaltungsbereich, der nicht für alle gedacht ist, schützen Sie zusätzlich: mit einem Passwort in der App selbst, mit Zwei-Faktor-Authentifizierung oder nur über einen SSH-Tunnel (siehe Eine SSH-Config: mit einem kurzen Namen anmelden).
- Zusätzliche Sicherheits-Header wie HSTS setzen Sie mit
headerin Caddy oderadd_headerin nginx. Aktivieren Sie HSTS erst, wenn https überall einwandfrei funktioniert.
