🌐 Nginx mit SSL-Zertifikat installieren (Certbot)

Vollständige Anleitung zur Installation von Nginx und Konfiguration eines kostenlosen SSL-Zertifikats mit Certbot, um Ihre eigene sichere Website einzurichten.

🌐 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-ip oder
  • http://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:

  1. E-Mail: Geben Sie Ihre E-Mail-Adresse ein (für Erneuerungsbenachrichtigungen)
  2. Nutzungsbedingungen: Akzeptieren Sie mit A (Agree)
  3. E-Mail teilen: Wählen Sie J (Ja) oder N (Nein) nach Ihren Vorlieben
  4. 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:

  1. Überprüfen Sie, dass Ihre Domain auf die Server-IP zeigt:

    dig meineseite.com
  2. Überprüfen Sie, dass Ports 80 und 443 geöffnet sind:

    sudo ufw status
  3. Überprüfen Sie, dass Nginx auf Port 80 lauscht:

    sudo netstat -tlnp | grep nginx
  4. Stellen Sie sicher, dass Ihre Nginx-Konfiguration den korrekten server_name verwendet

Website lädt nicht über HTTPS

  1. Überprüfen Sie, dass das Zertifikat existiert:

    sudo certbot certificates
  2. Nginx-Konfiguration überprüfen:

    sudo nginx -t sudo cat /etc/nginx/sites-enabled/meineseite.com
  3. 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! 🚀🔒