Zuhause / Guides / Nginx + SSL

Nginx Reverse Proxy mit automatisches HTTPS

Eine Nginx vor allem: Ihre Node-App, ein API, ein Dashboard, ein Spielpanel. Fügen Sie kostenlose Let's Encrypt-Zertifikate hinzu, die sich erneuern, und verbinden Sie WebSockets ohne Schmerzen.

1. DNS zuerst

Erstellen Sie einen A-Record: app.example.com → YOUR_SERVER_IPWarten Sie ein paar Minuten und überprüfen Sie vom Server:

getent hosts app.example.com

certbot wird kein Zertifikat ausstellen, bis DNS Punkte auf Ihrem Server.

2. Installieren Sie Nginx und öffnen Sie die Firewall

apt update && apt install -y nginx certbot python3-certbot-nginx
ufw allow 80/tcp
ufw allow 443/tcp

3. Reverse Proxy Config

cat > /etc/nginx/sites-available/app <<'EOF'
server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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";
        proxy_read_timeout 300s;
    }
}
EOF
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/app
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

Die beiden Upgrade Linien ermöglichen WebSockets; die lange Lesezeit verhindert, dass langsame Verbindungen (SSE, lange Umfragen, Spielfelder) nach 60 Sekunden unterbrochen werden. Ersetzen 127.0.0.1:3000 Mit welchem port auch immer ihre app zuhört.

4. HTTPS in einem Befehl

certbot --nginx -d app.example.com --redirect -m [email protected] --agree-tos

certbot bearbeitet die Konfiguration, fügt den 443-Block hinzu, installiert einen Erneuerungs-Timer und setzt HTTP → HTTPS-Redirect. Überprüfung der Erneuerungsarbeiten:

certbot renew --dry-run
systemctl list-timers | grep certbot

5. Weitere Dienste hinzufügen

Eine weitere App auf Port 3001? Kopieren Sie den Serverblock, ändern server_name und proxy_passFühren Sie Certbot erneut aus. Ein Nginx kann Dutzende von Websites halten - ein 6,5-Euro-Server behandelt sie leicht.

Bevorzugen Sie noch weniger Config? Caddy macht HTTPS mit zwei Zeilen - Nginx gewinnt, wenn Sie eine gute Kontrolle über Header, Caching und Timeouts benötigen.

6. Wenn etwas kaputt geht

nginx -t
tail -f /var/log/nginx/error.log
curl -I https://app.example.com

502 bedeutet, dass nginx in ordnung ist, aber ihre app ist unten oder auf dem falschen port. 404 mit einer falschen seite bedeutet, dass ein anderer site-block die anfrage abfängt - überprüfen. server_name.

Schnelle Antworten

Benötige ich eine dedizierte IP für HTTPS?

Für den Standard-Browserzugriff - ja, Sie benötigen einen Plan mit einem dedizierten IPv4, da Let's Encrypt Ihre Domain auf Port 80 oder 443 validiert. Z3z-pläne mit weitergeleiteten ports funktionieren für bots, tunnel und vpns, nicht für öffentliche websites.

Sind Let's Encrypt-Zertifikate wirklich kostenlos?

Ja, und sie erneuern sich automatisch alle 60 tage über die systemd timer certbot-installationen. Es ist kein bezahltes tier für eine normale website erforderlich.

Kann Nginx einen Minecraft- oder Spielserver proxyn?

Nicht UDP-Verkehr - Nginx spricht nur HTTP. Spiele verwenden ihre eigenen Ports und öffnen sie stattdessen direkt in der Firewall.

Holen Sie sich einen Server mit einem dedizierten IPv4 - Pläne starten bei €6.5/Monat.

Related