Deutsch

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

Hinweis: Wenn Sie noch keine Domain haben, können Sie mit der IP testen, aber Certbot benötigt eine Domain für SSL-Zertifikate.

💡 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}

Wichtig: Ersetzen Sie meineseite.com durch Ihren tatsächlichen Domainnamen in allen Vorkommen.

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

Wichtig: Ersetzen Sie meineseite.com durch Ihre tatsächliche Domain.

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! 🚀🔒

Noch Fragen?

Fragen zu diesem Tutorial? Unser Team und die Community helfen Ihnen gerne.

Bleiben Sie über die neuesten Angebote, Rabatte und Sonderaktionen informiert.

Aktionen ansehen

Wir verwenden Cookies

Wir verwenden Analyse-Cookies, um Ihre Erfahrung auf unserer Website zu verbessern. Es werden keine Daten an Dritte verkauft. Mehr erfahren Sie in unserer Datenschutzerklärung.