Spawnpunkt
Serverraum mit Racks — hier läuft der Reverse-Proxy vor den eigentlichen Diensten
Web-Server

Nginx als Reverse-Proxy einrichten

von Spawnpunkt System·09/04/2026
Linux Tutorial

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.

Eigene Domain vor einem DienstAutomatisches HTTPS per CertbotMehrere Dienste, eine IP
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

bash
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx

Firewall-Ports freigeben, falls UFW aktiv ist:

bash
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):

nginx
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:

bash
sudo ln -s /etc/nginx/sites-available/meinapp.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

sudo 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:

bash
sudo apt install -y certbot python3-certbot-nginx
bash
sudo certbot --nginx -d meinapp.example.com

Certbot 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:

bash
sudo certbot renew --dry-run

Nützliche Befehle

Nginx-Referenz

Konfiguration auf Fehler prüfen
sudo nginx -t
Konfiguration ohne Verbindungsabbruch neu laden
sudo systemctl reload nginx
Status anzeigen
sudo systemctl status nginx
Fehlerlog live verfolgen
sudo tail -f /var/log/nginx/error.log
Vorhandene Zertifikate + Ablaufdatum anzeigen
sudo certbot certificates

Reverse-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.

Server-Block aktivHTTPS per Let's EncryptAutomatische Verlängerung geprüft