Sparen Sie 15% bei allen Hosting-Diensten

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code: Skills Anfangen
Abschnitte
Linux Sicherheit

Wie man HTTP auf HTTPS unter Linux mit Nginx umleitet (Vollständiger Leitfaden)

Die Sicherung Ihrer Website mit HTTPS ist nicht mehr optional — sie ist eine grundlegende Anforderung zum Schutz von Benutzerdaten, zur Wahrung des Vertrauens und zur Erreichung starker SEO-Rankings. Suchmaschinen wie Google bestrafen unverschlüsselte HTTP-Websites aktiv, während moderne Browser sie als "Nicht sicher" kennzeichnen. Die Umleitung des gesamten HTTP-Verkehrs zu HTTPS stellt sicher, dass jeder Besucher automatisch die verschlüsselte Version Ihrer Website erreicht, ohne manuelle Eingriffe.

Dieser umfassende Leitfaden führt Sie durch den gesamten Prozess: Verständnis des Unterschieds zwischen HTTP und HTTPS, Installation eines kostenlosen SSL-Zertifikats über Let’s Encrypt, Konfiguration einer permanenten 301-Umleitung in Nginx und Überprüfung, dass alles auf Ihrem Linux-Server korrekt funktioniert.

1. HTTP vs. HTTPS: Was ist der Unterschied?

Bevor wir uns in die Konfiguration vertiefen, ist es wichtig zu verstehen, warum diese Umleitung wichtig ist.

HTTP (Hypertext Transfer Protocol)

HTTP ist das grundlegende Protokoll, das für die Datenübertragung zwischen einem Webbrowser und einem Server verwendet wird. Es überträgt jedoch alle Daten im Klartext, was bedeutet, dass alle Informationen — Anmeldedaten, Zahlungsdetails, persönliche Daten — von Angreifern durch einen Man-in-the-Middle-Angriff (MITM) abgefangen werden können. HTTP bietet keine Verschlüsselung, Authentifizierung oder Garantien für die Datenintegrität.

HTTPS (HTTP Secure)

HTTPS ist die sichere Erweiterung von HTTP. Es umhüllt das Standard-HTTP-Protokoll mit SSL/TLS-Verschlüsselung und schafft einen verschlüsselten Tunnel zwischen Client und Server. Dies gewährleistet:

  • Vertraulichkeit — Daten können von Dritten während der Übertragung nicht gelesen werden.
  • Integrität — Daten können während der Übertragung nicht manipuliert werden.
  • Authentifizierung — Benutzer können überprüfen, dass sie mit dem legitimen Server kommunizieren.
  • SEO-Vorteil — Google verwendet HTTPS als Ranking-Signal und gibt sicheren Websites einen messbaren Vorteil.
  • Browser-Vertrauen — Chrome, Firefox und Edge zeigen ein Schlosssymbol für HTTPS-Websites und eine Warnung „Nicht sicher” für HTTP-Websites an.

Das Fazit: Eine Website ohne HTTPS in der heutigen Umgebung zu betreiben ist ein ernstes Sicherheits- und Geschäftsrisiko.

2. Voraussetzungen

Stellen Sie vor dem Befolgen dieser Anleitung sicher, dass Sie Folgendes eingerichtet haben:

  • Ein Linux-Server (Ubuntu 20.04/22.04, Debian 11/12 oder ähnlich) mit Nginx
  • Ein registrierter Domainname, der auf die IP-Adresse Ihres Servers verweist
  • Root- oder sudo Zugriff auf Ihren Server
  • Grundkenntnisse der Linux-Befehlszeile

Wenn Sie nach einer zuverlässigen Serverumgebung zum Hosten Ihrer Website suchen, bietet VPS Hosting von AlexHost vollständig verwaltete und nicht verwaltete Linux VPS-Pläne, die für Webanwendungen optimiert sind, mit SSD-Speicher und hochverfügbarem Netzwerk.

Sie benötigen auch ein gültiges SSL-Zertifikat. Diese Anleitung verwendet das kostenlose Let’s Encrypt Zertifizierungsstellen über Certbot. Wenn Sie ein erweitertes Validierungs- (EV) oder organisationsvalidiertes (OV) Zertifikat für geschäftliche Zwecke benötigen, erwägen Sie die Erkundung von SSL-Zertifikaten von AlexHost.

3. Schritt 1: Installieren Sie ein SSL-Zertifikat mit Let’s Encrypt

Let’s Encrypt ist eine kostenlose, automatisierte und offene Zertifizierungsstelle. Certbot ist der offizielle Client, der den Prozess der Beschaffung und Erneuerung von SSL/TLS-Zertifikaten von Let’s Encrypt und der Konfiguration Ihres Webservers automatisiert.

Installieren Sie Certbot und das Nginx-Plugin

Aktualisieren Sie Ihren Paketindex und installieren Sie Certbot zusammen mit dem Nginx-Plugin:

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

Erhalten und installieren Sie Ihr SSL-Zertifikat

Führen Sie Certbot mit dem --nginx Flag aus, um automatisch ein Zertifikat zu erhalten und Nginx so zu konfigurieren, dass es verwendet wird:

sudo certbot --nginx -d example.com -d www.example.com

Ersetzen Sie example.com durch Ihren tatsächlichen Domänennamen. Certbot wird:

  1. Domänenbesitz über eine ACME-Herausforderung überprüfen
  2. Ein signiertes Zertifikat von Let’s Encrypt erhalten
  3. Ihre Nginx-Konfiguration automatisch ändern, um HTTPS auf Port 443 zu aktivieren
  4. Optional automatische HTTP-zu-HTTPS-Umleitung einrichten (Sie können diesen Schritt in Certbot überspringen und ihn wie unten gezeigt manuell konfigurieren, um vollständige Kontrolle zu haben)

Aktivieren Sie die automatische Zertifikatverlängerung

Let’s Encrypt-Zertifikate verfallen alle 90 Tage. Certbot installiert einen systemd-Timer oder Cron-Job, um Verlängerungen automatisch zu verarbeiten. Überprüfen Sie, ob er aktiv ist:

sudo systemctl status certbot.timer

Sie können auch einen Testlauf zur Verlängerung durchführen:

sudo certbot renew --dry-run

4. Schritt 2: Nginx konfigurieren, um HTTP zu HTTPS umzuleiten

Mit Ihrem installierten SSL-Zertifikat müssen Sie nun Nginx konfigurieren, um den gesamten HTTP-Verkehr (Port 80) dauerhaft zu HTTPS (Port 443) umzuleiten. Dies geschieht mit einer 301 Moved Permanently-Umleitung, die der richtige Umleitungstyp für SEO ist – sie überträgt Link-Equity auf die HTTPS-Version Ihrer Seiten.

Öffnen Sie Ihre Nginx-Server-Block-Konfiguration

Nginx-Site-Konfigurationen werden normalerweise in /etc/nginx/sites-available/ gespeichert. Öffnen Sie die Konfigurationsdatei für Ihre Domain:

sudo nano /etc/nginx/sites-available/example.com

Konfigurieren Sie den HTTP-zu-HTTPS-Umleitungsblock

Ihre Konfigurationsdatei enthält einen oder mehrere server-Blöcke. Suchen Sie den Block, der auf Port 80 (HTTP) lauscht, und ersetzen oder aktualisieren Sie ihn mit der folgenden Umleitungsregel:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    # Permanently redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}

Ihr HTTPS-Server-Block (Port 443), den Certbot wahrscheinlich automatisch konfiguriert hat, sollte ähnlich wie folgt aussehen:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/example.com/html;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

> Warum return 301 statt rewrite verwenden?

> Die return 301-Direktive ist schneller und effizienter als eine rewrite-Regel. Sie gibt die Umleitungsantwort sofort zurück, ohne dass Nginx zusätzliche Location-Blöcke verarbeiten muss, was den Server-Overhead reduziert und die Antwortzeit verbessert.

Verstehen der Umleitungs-Direktive

KomponenteErklärung
listen 80Nginx lauscht auf eingehende Verbindungen auf HTTP-Port 80
listen [::]:80Aktiviert IPv6-Unterstützung auf Port 80
server_nameDefiniert, auf welche Domain-Namen dieser Block angewendet wird
return 301Gibt eine permanente Umleitung aus (am besten für SEO)
https://$hostBehält den ursprünglichen Hostnamen in der Umleitung bei
$request_uriBehält den vollständigen ursprünglichen URI-Pfad und die Abfragezeichenfolge bei

5. Schritt 3: Testen Sie Ihre Nginx-Konfiguration

Laden Sie Nginx niemals neu oder starten Sie es neu, ohne Ihre Konfiguration vorher zu testen. Ein Syntaxfehler in Ihrer Konfigurationsdatei führt dazu, dass Nginx nicht startet und Ihre Website offline geht.

Führen Sie den integrierten Nginx-Konfigurationstest aus:

sudo nginx -t

Ein erfolgreicher Test erzeugt die folgende Ausgabe:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Wenn Sie Fehler sehen, überprüfen Sie die Ausgabe sorgfältig. Nginx zeigt die Datei und Zeilennummer an, in der das Problem erkannt wurde. Häufige Probleme sind:

  • Fehlende Semikola am Ende von Direktiven
  • Nicht geschlossene geschweifte Klammern {}
  • Falsche Dateipfade für SSL-Zertifikate
  • Doppelte server_name Einträge

Beheben Sie alle gemeldeten Fehler, bevor Sie fortfahren.

6. Schritt 4: Nginx neu laden, um Änderungen anzuwenden

Sobald der Konfigurationstest erfolgreich ist, laden Sie Nginx neu, um Ihre Änderungen anzuwenden. Die Verwendung von reload anstelle von restart wird bevorzugt, da die neue Konfiguration ohne Unterbrechung aktiver Verbindungen angewendet wird:

sudo systemctl reload nginx

Um zu bestätigen, dass Nginx nach dem Neuladen korrekt ausgeführt wird:

sudo systemctl status nginx

Sie sollten active (running) in der Ausgabe sehen.

7. Schritt 5: Überprüfen Sie, ob die Umleitung funktioniert

Nach dem Neuladen von Nginx ist es an der Zeit, zu bestätigen, dass die Umleitung ordnungsgemäß funktioniert.

Methode 1: Browser-Test

  1. Öffnen Sie Ihren Webbrowser.
  2. Navigieren Sie zu http://example.com (mit HTTP, nicht HTTPS).
  3. Beobachten Sie, dass der Browser Sie automatisch zu https://example.com umleitet.
  4. Bestätigen Sie, dass das Schlosssymbol in der Adressleiste angezeigt wird, was auf eine gültige SSL-Verbindung hinweist.

Methode 2: Befehlszeilentest mit curl

Verwenden Sie curl mit dem Flag -I, um nur die HTTP-Antwortheader abzurufen, ohne den Seitenkörper herunterzuladen:

curl -I http://example.com

Eine korrekt konfigurierte Umleitung erzeugt die folgende Antwort:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 01 Jan 2025 12:00:00 GMT
Content-Type: text/html
Location: https://example.com/
Connection: keep-alive

Wichtige Indikatoren zur Überprüfung:

  • Statuscode 301 Moved Permanently — Bestätigt, dass eine permanente Umleitung vorhanden ist.
  • Location: https://example.com/ — Bestätigt, dass der Datenverkehr zur HTTPS-Version umgeleitet wird.

Methode 3: Online-Umleitungsprüfer

Sie können auch kostenlose Online-Tools wie redirect-checker.org oder httpstatus.io verwenden, um die vollständige Umleitungskette zu verfolgen und zu bestätigen, dass es keine Umleitungsschleifen oder unnötigen Sprünge gibt.

8. Häufige Probleme und Fehlerbehebung

Weiterleitungsschleife

Symptom: Browser zeigt Fehler „Zu viele Weiterleitungen” an.

Cause: Ihr HTTPS-Serverblock löst auch eine Weiterleitung zurück zu HTTP aus, was eine Endlosschleife erzeugt.

Fix: Stellen Sie sicher, dass die return 301 Direktive nur im HTTP (Port 80) Serverblock vorhanden ist, nicht im HTTPS (Port 443) Block.

Warnungen zu gemischtem Inhalt

Symptom: Das Schlosssymbol zeigt eine Warnung an, auch nachdem die Weiterleitung funktioniert.

Cause: Ihre HTML-Seiten referenzieren immer noch HTTP-Ressourcen (Bilder, Skripte, Stylesheets) mit http:// URLs.

Fix: Aktualisieren Sie alle internen Ressourcen-URLs, um https:// oder protokollrelative URLs (//) zu verwenden. Verwenden Sie ein Plugin wie Really Simple SSL für WordPress-Seiten.

SSL-Zertifikat nicht gefunden

Symptom: Nginx startet nicht mit einem Fehler über fehlende Zertifikatsdateien.

Cause: Die in ssl_certificate und ssl_certificate_key angegebenen Pfade stimmen nicht mit den tatsächlichen Zertifikatsdateistandorten überein.

Fix: Überprüfen Sie die Zertifikatspfade mit:

sudo ls /etc/letsencrypt/live/example.com/

Certbot-Erneuerung schlägt fehl

Symptom: Automatische Erneuerung schlägt mit Verbindungsfehler fehl.

Cause: Port 80 kann durch eine Firewall blockiert sein, was verhindert, dass die HTTP-01-Herausforderung von Let’s Encrypt abgeschlossen wird.

Fix: Stellen Sie sicher, dass Port 80 in Ihrer Firewall offen ist:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

9. Fazit

Das Umleiten von HTTP zu HTTPS auf Ihrem Linux-Server mit Nginx ist eine unkomplizierte, aber äußerst wichtige Konfigurationsaufgabe. Durch die Implementierung einer permanenten 301-Umleitung stellen Sie sicher, dass jeder Besucher – unabhängig davon, wie er auf Ihre Website zugreift – automatisch die verschlüsselte, sichere Version erhält. Dies schützt sensible Benutzerdaten, schafft Vertrauen bei Besuchern, erfüllt moderne Browser-Sicherheitsanforderungen und bietet einen messbaren SEO-Vorteil.

Zusammenfassung der wichtigsten Schritte aus diesem Leitfaden:

  1. Installieren Sie Certbot und erhalten Sie ein kostenloses SSL-Zertifikat von Let’s Encrypt.
  2. Konfigurieren Sie den Nginx HTTP-Serverblock mit einer return 301-Umleitung zu HTTPS.
  3. Testen Sie Ihre Konfiguration mit sudo nginx -t, bevor Sie Änderungen vornehmen.
  4. Laden Sie Nginx neu mit sudo systemctl reload nginx.
  5. Überprüfen Sie die Umleitung mit Ihrem Browser, curl oder einem Online-Umleitungsprüfer.
  6. Überwachen Sie die Zertifikatverlängerung, um sicherzustellen, dass Ihr SSL-Zertifikat nie abläuft.

Für optimale Ergebnisse führen Sie Ihren Nginx-Webserver auf einer leistungsstarken und zuverlässigen Hosting-Plattform aus. AlexHost bietet VPS-Hosting mit vollständigem Root-Zugriff, SSD NVMe-Speicher und flexiblen Linux-Distributionen – ideal zum Hosten von Nginx-basierten Websites. Wenn Sie eine vorkonfigurierte Control-Panel-Umgebung benötigen, erkunden Sie VPS mit cPanel oder durchsuchen Sie alle verfügbaren VPS Control Panels, um die richtige Verwaltungsoberfläche für Ihren Arbeitsablauf zu finden. Für hochfrequente oder ressourcenintensive Anwendungen bieten Dedicated Server die maximale Leistung und Isolation, die Ihre Infrastruktur benötigt.

Überprüfen Sie regelmäßig die Gültigkeit Ihres SSL-Zertifikats, halten Sie Nginx aktualisiert und überprüfen Sie Ihre Server-Sicherheitskonfiguration regelmäßig, um eine robuste und vertrauenswürdige Web-Präsenz zu gewährleisten.