Nginx als Reverse Proxy mit kostenlosem SSL-Zertifikat
Eine Anwendung hinter Nginx stellen und per Let's Encrypt mit HTTPS absichern.
Viele Anwendungen laufen auf einem internen Port, etwa Node.js auf 3000 oder ein Docker-Container auf 8080. Mit Nginx als Reverse Proxy erreichst du sie über deine Domain und mit HTTPS.
Voraussetzungen
- Ein A-Record deiner Domain zeigt auf die IP deines Servers.
- Die Ports 80 und 443 sind offen (
ufw allow 80/tcp,ufw allow 443/tcp).
1. Nginx installieren
apt install -y nginx
2. Seite anlegen
Lege /etc/nginx/sites-available/app.conf an:
server {
listen 80;
server_name app.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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Aktivieren und prüfen:
ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
3. SSL-Zertifikat mit Let's Encrypt
apt install -y certbot python3-certbot-nginx
certbot --nginx -d app.example.com
Certbot trägt das Zertifikat ein, leitet HTTP auf HTTPS um und verlängert das Zertifikat automatisch. Ob die Verlängerung klappt, testest du mit certbot renew --dry-run.
Häufige Fehler
- 502 Bad Gateway: Die Anwendung läuft nicht oder auf einem anderen Port. Prüfe mit
ss -tlnp. - Certbot scheitert: Die Domain zeigt noch nicht auf den Server oder Port 80 ist zu.
Hat dir das geholfen?