Wie behebt man den Nginx "Duplicate Default Server"-Fehler?

Veröffentlicht 13. Oktober 2024

Problem: Doppelter Standard-Server in Nginx

Der Fehler "Duplicate Default Server" in Nginx tritt auf, wenn mehrere Server-Blöcke als Standard-Server für die gleiche IP-Adresse und Port-Kombination festgelegt sind. Dieses Konfigurationsproblem kann dazu führen, dass Nginx inkonsistent auf eingehende Anfragen reagiert.

Lösung: Entfernen von doppelten Standard-Server-Konfigurationen

Überprüfen des Verzeichnisses /etc/nginx/sites-enabled

Um das Problem des doppelten Standard-Servers zu beheben, überprüfen Sie das Verzeichnis /etc/nginx/sites-enabled. Dieses Verzeichnis enthält symbolische Links zu aktiven Server-Block-Konfigurationen. Suchen Sie nach Dateien mit widersprüchlichen default_server-Direktiven.

Verwenden Sie folgenden Befehl, um widersprüchliche Konfigurationsdateien zu finden:

grep -R "default_server" /etc/nginx/sites-enabled

Dieser Befehl zeigt alle Vorkommen von "default_server" in den Konfigurationsdateien an. Überprüfen Sie die Ausgabe, um doppelte default_server-Direktiven zu finden.

Nachdem Sie die widersprüchlichen Dateien gefunden haben, entfernen oder ändern Sie die unnötigen Standard-Server-Direktiven. Wenn Sie eine Standard-Konfigurationsdatei haben, die Sie nicht benötigen, entfernen Sie sie mit:

sudo rm /etc/nginx/sites-enabled/default

Tipp: Backup vor dem Entfernen

Bevor Sie Konfigurationsdateien entfernen, erstellen Sie ein Backup, um wichtige Einstellungen nicht zu verlieren. Verwenden Sie diesen Befehl, um ein Backup zu erstellen:

sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default.bak

Ändern der Nginx-Konfiguration

Wenn Sie mehrere Server-Blöcke beibehalten müssen, ändern Sie die listen-Direktive in Ihren Konfigurationsdateien. Stellen Sie sicher, dass nur ein Server-Block den Parameter default_server für jede IP-Adresse und Port-Kombination hat.

Um eine Konfigurationsdatei zu ändern, verwenden Sie einen Texteditor wie nano:

sudo nano /etc/nginx/sites-enabled/ihre_konfig_datei

Ändern Sie die listen-Direktive, um den Parameter default_server nach Bedarf zu entfernen oder hinzuzufügen. Zum Beispiel:

listen 80;  # Entfernen Sie default_server, wenn es nicht benötigt wird

Oder, wenn Sie möchten, dass dieser Server-Block der Standard ist:

listen 80 default_server;

Denken Sie daran, den Parameter default_server nur einmal pro IP:Port-Kombination in allen Ihren Konfigurationsdateien zu verwenden.

Speichern Sie nach diesen Änderungen die Datei und verlassen Sie den Texteditor. Wiederholen Sie diesen Vorgang für andere Konfigurationsdateien, die Änderungen benötigen.

Überprüfen der Behebung

Neustarten von Nginx

Nach Änderungen an Ihrer Nginx-Konfiguration testen und starten Sie den Dienst neu, um die Änderungen anzuwenden. Verwenden Sie diesen Befehl, um zu prüfen, ob Ihre Konfiguration gültig ist:

sudo nginx -t

Dieser Befehl testet die Nginx-Konfigurationsdateien auf Syntaxfehler. Wenn der Test erfolgreich ist, sehen Sie eine Meldung, die den erfolgreichen Konfigurationstest bestätigt.

Wenn der Test bestanden wurde, starten Sie den Nginx-Dienst neu, um die Änderungen anzuwenden:

sudo systemctl restart nginx

Für Systeme, die nicht systemd verwenden, nutzen Sie:

sudo service nginx restart

Tipp: Sanfter Neustart

Um Nginx ohne Unterbrechung aktiver Verbindungen neu zu starten, verwenden Sie den folgenden Befehl:

sudo systemctl reload nginx

Diese Methode lädt die Konfiguration neu, ohne Verbindungen zu unterbrechen.

Überwachen der Fehlerprotokolle

Überprüfen Sie nach dem Neustart von Nginx die Fehlerprotokolle, um sicherzustellen, dass der Fehler des doppelten Standard-Servers verschwunden ist. Greifen Sie mit diesem Befehl auf das Nginx-Fehlerprotokoll zu:

sudo tail -f /var/log/nginx/error.log

Dieser Befehl zeigt die neuesten Einträge im Fehlerprotokoll in Echtzeit an. Achten Sie auf neue Vorkommnisse des Fehlers des doppelten Standard-Servers.

Um zu überprüfen, ob Ihr Server korrekt funktioniert, versuchen Sie, Ihre Website über einen Webbrowser aufzurufen. Wenn die Seite ohne Probleme lädt, ist das ein gutes Zeichen dafür, dass die Konfiguration ordnungsgemäß funktioniert.

Sie können auch diesen Befehl verwenden, um zu überprüfen, ob Nginx ohne Fehler läuft:

sudo systemctl status nginx

Dieser Befehl zeigt den aktuellen Status des Nginx-Dienstes an, einschließlich kürzlich aufgetretener Fehlermeldungen oder Warnungen.

Wenn Sie keine Fehler im Zusammenhang mit doppelten Standard-Servern sehen und Ihre Website zugänglich ist, haben Sie das Problem behoben.