Wie konfiguriert man Nginx für HTTP und HTTPS?

Veröffentlicht 13. Oktober 2024

Problem: Konfiguration von Nginx für HTTP und HTTPS

Die Einrichtung von Nginx zur Verarbeitung von HTTP- und HTTPS-Verkehr kann eine Herausforderung sein. Der Server muss so konfiguriert werden, dass er auf verschiedenen Ports lauscht und SSL/TLS-Zertifikate verwaltet, während gleichzeitig eine korrekte Weiterleitung zwischen den Protokollen eingerichtet wird.

Lösung: Anpassung des Nginx-Serverblocks für die Unterstützung beider Protokolle

Anpassung der Nginx-Konfigurationsdatei

Um Nginx für die Verarbeitung von HTTP- und HTTPS-Verkehr zu aktivieren, müssen Sie Ihre Serverblock-Konfiguration ändern. Die wichtigsten Änderungen umfassen:

  • Entfernen der Direktive 'ssl on': Diese Direktive erzwingt SSL für alle Verbindungen, was zu Problemen mit HTTP-Anfragen führen kann.
  • Einrichten separater Listen-Direktiven für HTTP und HTTPS: Dies ermöglicht dem Server, Verbindungen auf den Ports 80 (HTTP) und 443 (HTTPS) anzunehmen.

Beispiel eines korrigierten Serverblocks

Hier ist ein Beispiel für einen Serverblock, der HTTP und HTTPS unterstützt:

server {
    listen 80;
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /pfad/zu/ihrem/ssl_zertifikat.crt;
    ssl_certificate_key /pfad/zu/ihrem/ssl_zertifikat.key;

    # Weitere SSL-Einstellungen...

    root /var/www/ihre_website;
    index index.html;

    # Weitere Server-Konfigurationen...
}

In dieser Konfiguration:

  • Die Direktive 'ssl on' wird entfernt.
  • Es werden zwei 'listen'-Direktiven verwendet: eine für Port 80 (HTTP) und eine für Port 443 (HTTPS).
  • Der Parameter 'ssl' wird zur listen 443-Direktive hinzugefügt, wodurch SSL nur für HTTPS-Verbindungen aktiviert wird.
  • Die Pfade zu den SSL-Zertifikaten werden mit den Direktiven ssl_certificate und ssl_certificate_key angegeben.

Diese Änderungen ermöglichen es dem Server, HTTP- und HTTPS-Anfragen korrekt zu verarbeiten und beheben den 400-Fehler für HTTP-Anfragen.

Tipp: Testen Sie Ihre Konfiguration

Testen Sie nach Änderungen an Ihrer Nginx-Konfiguration immer, bevor Sie den Server neu starten. Verwenden Sie den Befehl nginx -t, um auf Syntaxfehler und potenzielle Probleme zu prüfen. Dies hilft, Konfigurationsfehler zu vermeiden, die zu Server-Ausfällen führen könnten.