InfrawireInfrawire LogoDokumentation

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

Bash
sudo apt update

Nginx installieren

Bash
sudo apt install nginx -y

Installation überprüfen

Bash
1# Überprüfen, dass Nginx installiert ist 2nginx -v 3 4# Überprüfen, dass Nginx läuft 5sudo systemctl status nginx

Wenn alles korrekt ist, sollten Sie active (running) sehen.

Nginx in Firewall (UFW) erlauben

Bash
1# HTTP (Port 80) erlauben 2sudo ufw allow 'Nginx HTTP' 3 4# HTTPS (Port 443) erlauben 5sudo ufw allow 'Nginx HTTPS' 6 7# Regeln überprüfen 8sudo 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

Bash
1# Ordner erstellen (ersetzen Sie meineseite.com durch Ihre Domain) 2sudo mkdir -p /var/www/meineseite.com 3 4# Berechtigungen setzen 5sudo chown -R $USER:$USER /var/www/meineseite.com 6sudo chmod -R 755 /var/www/meineseite.com

Einfache HTML-Seite erstellen

Bash
# Index-Seite erstellen nano /var/www/meineseite.com/index.html

Fügen Sie diesen einfachen Inhalt hinzu:

HTML
1<!DOCTYPE html> 2<html lang="de"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Meine Website</title> 7</head> 8<body> 9 <h1>Willkommen auf meiner Website!</h1> 10 <p>Ihre Website funktioniert korrekt mit Nginx.</p> 11</body> 12</html>

Speichern Sie mit Strg + X, dann Y, dann Eingabe.

Nginx-Konfiguration erstellen

Bash
# Konfigurationsdatei erstellen sudo nano /etc/nginx/sites-available/meineseite.com

Fügen Sie diese Konfiguration hinzu:

Nginx
1server { 2 listen 80; 3 listen [::]:80; 4 5 server_name meineseite.com www.meineseite.com; 6 7 root /var/www/meineseite.com; 8 index index.html; 9 10 location / { 11 try_files $uri $uri/ =404; 12 } 13}

Speichern Sie die Datei.

Website aktivieren

Bash
1# Symbolischen Link erstellen, um die Website zu aktivieren 2sudo ln -s /etc/nginx/sites-available/meineseite.com /etc/nginx/sites-enabled/ 3 4# Nginx-Konfiguration testen 5sudo nginx -t

Wenn Sie syntax is ok und test is successful sehen, ist alles in Ordnung!

Standard-Website entfernen (optional)

Bash
1# Standard-Website entfernen 2sudo rm /etc/nginx/sites-enabled/default 3 4# Nginx neu laden 5sudo 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

Bash
# Certbot und Nginx-Plugin installieren sudo apt install certbot python3-certbot-nginx -y

SSL-Zertifikat erhalten

Bash
# 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

Bash
# Ü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

Bash
# 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:

Bash
1# Timer überprüfen 2sudo systemctl status certbot.timer 3 4# Wenn Timer nicht aktiv ist, aktivieren 5sudo systemctl enable certbot.timer 6sudo 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

Bash
1# Dienststatus 2sudo systemctl status nginx 3 4# Konfiguration testen 5sudo nginx -t

Überprüfen, dass SSL funktioniert

Bash
1# Zertifikate anzeigen 2sudo certbot certificates 3 4# Ablaufdatum überprüfen 5sudo 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

Bash
1# Nginx starten 2sudo systemctl start nginx 3 4# Nginx stoppen 5sudo systemctl stop nginx 6 7# Nginx neu starten 8sudo systemctl restart nginx 9 10# Nginx neu laden (ohne Unterbrechung) 11sudo systemctl reload nginx 12 13# Konfiguration testen 14sudo nginx -t

SSL-Zertifikatsverwaltung

Bash
1# Alle Zertifikate manuell erneuern 2sudo certbot renew 3 4# Ein bestimmtes Zertifikat erneuern 5sudo certbot renew --cert-name meineseite.com 6 7# Alle Zertifikate anzeigen 8sudo certbot certificates 9 10# Ein Zertifikat löschen 11sudo certbot delete --cert-name meineseite.com

Logs anzeigen

Bash
1# Nginx-Logs 2sudo tail -f /var/log/nginx/error.log 3sudo tail -f /var/log/nginx/access.log 4 5# Certbot-Logs 6sudo tail -f /var/log/letsencrypt/letsencrypt.log

🆘 Fehlerbehebung

Nginx startet nicht

Bash
1# Konfigurationsfehler überprüfen 2sudo nginx -t 3 4# Fehlerprotokolle anzeigen 5sudo 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:

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

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

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

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

    Bash
    sudo nginx -t sudo cat /etc/nginx/sites-enabled/meineseite.com
  3. Stellen Sie sicher, dass die Firewall Port 443 erlaubt:

    Bash
    sudo ufw allow 443/tcp

502 Bad Gateway Fehler

Dieser Fehler bedeutet, dass Nginx nicht mit Ihrer Anwendung kommunizieren kann.

Bash
1# Nginx-Logs überprüfen 2sudo tail -f /var/log/nginx/error.log 3 4# Überprüfen, dass Ihre Anwendung läuft 5sudo 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! 🚀🔒