
Nginx als Reverse-Proxy
Ein Reverse-Proxy nimmt eingehende Verbindungen entgegen und leitet sie intern an den richtigen Dienst weiter — praktisch, um mehrere Anwendungen über eine einzige IP-Adresse mit eigenen Domains und HTTPS zu betreiben.
- Betriebssystem
- Ubuntu / Debian
- Schwierigkeit
- Fortgeschritten
- Dauer
- ~25 Minuten
Was ist ein Reverse-Proxy?
Ein Reverse-Proxy sitzt zwischen dem Internet und den eigentlichen Diensten auf dem Server. Statt jeden Dienst über einen eigenen Port erreichbar zu machen, hört Nginx auf Port 80/443 und leitet Anfragen anhand der aufgerufenen Domain intern an den passenden Dienst weiter (z. B. an Uptime Kuma auf Port 3001). Das bringt einen zentralen Ort für HTTPS-Zertifikate und erlaubt mehrere Dienste über dieselbe IP-Adresse.
Voraussetzungen
- Eigene Domain, deren DNS-A-Record bereits auf die Server-IP zeigt
- Der dahinterliegende Dienst läuft bereits lokal auf einem Port (z. B. 127.0.0.1:3000)
- Ports 80 und 443 in der Firewall offen
Nginx installieren
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginxFirewall-Ports freigeben, falls UFW aktiv ist:
sudo ufw allow 'Nginx Full'Server-Block einrichten
Eine neue Konfigurationsdatei anlegen, z. B. /etc/nginx/sites-available/meinapp.conf (Domain und Ziel-Port entsprechend anpassen):
server {
listen 80;
server_name meinapp.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}Konfiguration aktivieren, testen und Nginx neu laden:
sudo ln -s /etc/nginx/sites-available/meinapp.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxsudo nginx -t prüft die Konfiguration auf Syntaxfehler, bevor sie aktiv geschaltet wird — bei Fehlermeldung nicht reloaden, sonst kann Nginx komplett ausfallen.
HTTPS mit Let's Encrypt (Certbot)
Certbot besorgt und erneuert kostenlose Let's-Encrypt-Zertifikate automatisch und passt die Nginx-Konfiguration selbstständig an:
sudo apt install -y certbot python3-certbot-nginxsudo certbot --nginx -d meinapp.example.comCertbot fragt nach einer E-Mail-Adresse für Ablauf-Benachrichtigungen und bietet an, HTTP automatisch auf HTTPS umzuleiten (empfohlen, "Yes"). Die Domain muss zu diesem Zeitpunkt bereits per DNS auf den Server zeigen, sonst schlägt die Domain-Validierung fehl.
Automatische Verlängerung prüfen
Certbot richtet beim Installieren automatisch einen systemd-Timer für die Verlängerung ein (Zertifikate sind 90 Tage gültig). Testen, ohne ein echtes Zertifikat zu verbrauchen:
sudo certbot renew --dry-runNützliche Befehle
Nginx-Referenz
sudo nginx -tsudo systemctl reload nginxsudo systemctl status nginxsudo tail -f /var/log/nginx/error.logsudo certbot certificatesReverse-Proxy live
Der Dienst ist jetzt über die eigene Domain mit automatischem HTTPS erreichbar. Für weitere Dienste einfach einen zusätzlichen Server-Block mit eigener Subdomain anlegen.

