🌐 Nginx mit SSL-Zertifikat installieren (Certbot)
Diese Anleitung zeigt Ihnen, wie Sie Nginx installieren, eine Website konfigurieren und ein kostenloses SSL-Zertifikat mit Certbot erhalten, um Ihre Website mit HTTPS zu sichern.
📋 Voraussetzungen
- Ein VPS-Server mit Root- oder sudo-Zugriff
- Ein Domainname, der auf die IP Ihres Servers zeigt (Beispiel:
meineseite.com) - Ports 80 (HTTP) und 443 (HTTPS) in Ihrer Firewall geöffnet
💡 Infrastruktur-Empfehlung
Nginx und Certbot funktionieren perfekt auf unseren NVMe VPS, die außergewöhnliche Festplattenleistung für das schnelle Bereitstellen Ihrer Websites bieten. NVMe-Laufwerke gewährleisten optimale Antwortzeiten für Ihre Besucher.
🚀 Schritt 1: Nginx installieren
Pakete aktualisieren
sudo apt update
Nginx installieren
sudo apt install nginx -y
Installation überprüfen
# Überprüfen, dass Nginx installiert ist nginx -v # Überprüfen, dass Nginx läuft sudo systemctl status nginx
Wenn alles korrekt ist, sollten Sie active (running) sehen.
Nginx in Firewall (UFW) erlauben
# HTTP (Port 80) erlauben sudo ufw allow 'Nginx HTTP' # HTTPS (Port 443) erlauben sudo ufw allow 'Nginx HTTPS' # Regeln überprüfen sudo ufw status
Nginx testen
Öffnen Sie Ihren Browser und gehen Sie zu:
http://ihre-server-ipoderhttp://ihre-domain.com
Sie sollten die Standard-Nginx-Seite sehen, die bestätigt, dass die Installation funktioniert!
📝 Schritt 2: Ihre Website konfigurieren
Ordner für Ihre Website erstellen
# Ordner erstellen (ersetzen Sie meineseite.com durch Ihre Domain) sudo mkdir -p /var/www/meineseite.com # Berechtigungen setzen sudo chown -R $USER:$USER /var/www/meineseite.com sudo chmod -R 755 /var/www/meineseite.com
Einfache HTML-Seite erstellen
# Index-Seite erstellen nano /var/www/meineseite.com/index.html
Fügen Sie diesen einfachen Inhalt hinzu:
<!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Meine Website</title> </head> <body> <h1>Willkommen auf meiner Website!</h1> <p>Ihre Website funktioniert korrekt mit Nginx.</p> </body> </html>
Speichern Sie mit Strg + X, dann Y, dann Eingabe.
Nginx-Konfiguration erstellen
# Konfigurationsdatei erstellen sudo nano /etc/nginx/sites-available/meineseite.com
Fügen Sie diese Konfiguration hinzu:
server { listen 80; listen [::]:80; server_name meineseite.com www.meineseite.com; root /var/www/meineseite.com; index index.html; location / { try_files $uri $uri/ =404; } }
Speichern Sie die Datei.
Website aktivieren
# Symbolischen Link erstellen, um die Website zu aktivieren sudo ln -s /etc/nginx/sites-available/meineseite.com /etc/nginx/sites-enabled/ # Nginx-Konfiguration testen sudo nginx -t
Wenn Sie syntax is ok und test is successful sehen, ist alles in Ordnung!
Standard-Website entfernen (optional)
# Standard-Website entfernen sudo rm /etc/nginx/sites-enabled/default # Nginx neu laden sudo systemctl reload nginx
Ihre Website testen
Öffnen Sie Ihren Browser und gehen Sie zu http://ihre-domain.com. Sie sollten Ihre HTML-Seite sehen!
🔒 Schritt 3: Certbot installieren und SSL-Zertifikat erhalten
Certbot ist ein Tool, das automatisch kostenlose SSL-Zertifikate von Let's Encrypt abruft.
Certbot installieren
# Certbot und Nginx-Plugin installieren sudo apt install certbot python3-certbot-nginx -y
SSL-Zertifikat erhalten
# SSL-Zertifikat für Ihre Domain erhalten sudo certbot --nginx -d meineseite.com -d www.meineseite.com
Certbot wird Ihnen einige Fragen stellen:
- E-Mail: Geben Sie Ihre E-Mail-Adresse ein (für Erneuerungsbenachrichtigungen)
- Nutzungsbedingungen: Akzeptieren Sie mit
A(Agree) - E-Mail teilen: Wählen Sie
J(Ja) oderN(Nein) nach Ihren Vorlieben - HTTP zu HTTPS umleiten: Wählen Sie
2(Automatische Umleitung empfohlen)
Zertifikat überprüfen
# Überprüfen, dass das Zertifikat erstellt wurde sudo certbot certificates
Sie sollten Ihr Zertifikat mit Ablaufdaten aufgelistet sehen.
Ihre HTTPS-Website testen
Öffnen Sie Ihren Browser und gehen Sie zu https://ihre-domain.com.
Sie sollten sehen:
- Ein grünes Schloss 🔒 in der Adressleiste
- Ihre Website über HTTPS geladen (sicher)
Glückwunsch! Ihre Website ist jetzt mit SSL gesichert!
🔄 Schritt 4: Automatische Zertifikatserneuerung
Let's Encrypt-Zertifikate laufen nach 90 Tagen ab. Certbot kann sie automatisch erneuern.
Automatische Erneuerung testen
# Automatische Erneuerung testen sudo certbot renew --dry-run
Wenn Sie The dry run was successful sehen, funktioniert die automatische Erneuerung!
Erneuerungsdienst überprüfen
Certbot erstellt automatisch einen systemd-Timer zum Erneuern von Zertifikaten. Überprüfen Sie ihn:
# Timer überprüfen sudo systemctl status certbot.timer # Wenn Timer nicht aktiv ist, aktivieren sudo systemctl enable certbot.timer sudo systemctl start certbot.timer
Das Zertifikat wird automatisch vor Ablauf erneuert.
📁 Dateistruktur
Hier finden Sie wichtige Dateien:
/var/www/meineseite.com/ # Ihre Websitedateien
/etc/nginx/ # Nginx-Konfiguration
/etc/nginx/sites-available/ # Verfügbare Websites
/etc/nginx/sites-enabled/ # Aktive Websites
/etc/letsencrypt/ # SSL-Zertifikate
✅ Endgültige Überprüfung
Überprüfen, dass Nginx funktioniert
# Dienststatus sudo systemctl status nginx # Konfiguration testen sudo nginx -t
Überprüfen, dass SSL funktioniert
# Zertifikate anzeigen sudo certbot certificates # Ablaufdatum überprüfen sudo certbot certificates | grep "Expiry"
Ihre Website testen
- Gehen Sie zu
https://ihre-domain.com - Überprüfen Sie das grüne Schloss im Browser
- Klicken Sie auf das Schloss, um Zertifikatsdetails zu sehen
🛠️ Nützliche Befehle
Nginx-Verwaltung
# Nginx starten sudo systemctl start nginx # Nginx stoppen sudo systemctl stop nginx # Nginx neu starten sudo systemctl restart nginx # Nginx neu laden (ohne Unterbrechung) sudo systemctl reload nginx # Konfiguration testen sudo nginx -t
SSL-Zertifikatsverwaltung
# Alle Zertifikate manuell erneuern sudo certbot renew # Ein bestimmtes Zertifikat erneuern sudo certbot renew --cert-name meineseite.com # Alle Zertifikate anzeigen sudo certbot certificates # Ein Zertifikat löschen sudo certbot delete --cert-name meineseite.com
Logs anzeigen
# Nginx-Logs sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/nginx/access.log # Certbot-Logs sudo tail -f /var/log/letsencrypt/letsencrypt.log
🆘 Fehlerbehebung
Nginx startet nicht
# Konfigurationsfehler überprüfen sudo nginx -t # Fehlerprotokolle anzeigen sudo journalctl -u nginx -n 50
SSL-Zertifikat wird nicht installiert
Problem: Certbot kann Ihre Domain nicht überprüfen.
Lösungen:
-
Überprüfen Sie, dass Ihre Domain auf die Server-IP zeigt:
dig meineseite.com -
Überprüfen Sie, dass Ports 80 und 443 geöffnet sind:
sudo ufw status -
Überprüfen Sie, dass Nginx auf Port 80 lauscht:
sudo netstat -tlnp | grep nginx -
Stellen Sie sicher, dass Ihre Nginx-Konfiguration den korrekten
server_nameverwendet
Website lädt nicht über HTTPS
-
Überprüfen Sie, dass das Zertifikat existiert:
sudo certbot certificates -
Nginx-Konfiguration überprüfen:
sudo nginx -t sudo cat /etc/nginx/sites-enabled/meineseite.com -
Stellen Sie sicher, dass die Firewall Port 443 erlaubt:
sudo ufw allow 443/tcp
502 Bad Gateway Fehler
Dieser Fehler bedeutet, dass Nginx nicht mit Ihrer Anwendung kommunizieren kann.
# Nginx-Logs überprüfen sudo tail -f /var/log/nginx/error.log # Überprüfen, dass Ihre Anwendung läuft sudo systemctl status ihre-anwendung
📚 Zusätzliche Ressourcen
❓ Häufig gestellte Fragen
F: Muss ich für ein SSL-Zertifikat bezahlen?
A: Nein! Certbot verwendet Let's Encrypt, das kostenlose SSL-Zertifikate anbietet.
F: Läuft mein Zertifikat ab?
A: Ja, nach 90 Tagen, aber Certbot erneuert es automatisch.
F: Kann ich mehrere Websites auf demselben Server haben?
A: Ja! Erstellen Sie eine Konfigurationsdatei für jede Website in /etc/nginx/sites-available/.
F: Wie füge ich eine Subdomain hinzu?
A: Erstellen Sie eine neue Nginx-Konfiguration und erhalten Sie ein Zertifikat mit sudo certbot --nginx -d subdomain.meineseite.com.
F: Was ist, wenn ich vergessen habe, mein Zertifikat zu erneuern?
A: Certbot erneuert es automatisch. Sie können auch sudo certbot renew manuell ausführen.
Ihre Website ist jetzt mit HTTPS gesichert! 🚀🔒