Wie behebt man den '[emerg] server directive is not allowed here'-Fehler in Nginx?

Veröffentlicht 8. September 2024

Problem: Nginx Server-Direktiven-Fehler

Bei der Einrichtung von Nginx kann die Fehlermeldung '[emerg] "server" directive is not allowed here' auftreten. Dieser Fehler tritt auf, wenn die Server-Direktive an der falschen Stelle in der Nginx-Konfigurationsdatei platziert wird. Dies bedeutet, dass Nginx die Konfiguration aufgrund dieses Fehlers nicht verwenden kann, was den Webserver daran hindern kann, ordnungsgemäß zu starten oder neu zu laden.

Lösungen zur Behebung des '[emerg] "server" directive is not allowed here' Fehlers

Korrekte Struktur der Nginx-Konfigurationsdatei

Um den Fehler '[emerg] "server" directive is not allowed here' zu beheben, müssen Sie Ihre Nginx-Konfigurationsdatei richtig strukturieren. Der Server-Block muss sich innerhalb eines http-Blocks befinden. Hier ist die Vorgehensweise:

  1. Öffnen Sie Ihre Haupt-Nginx-Konfigurationsdatei (/etc/nginx/nginx.conf).
  2. Suchen Sie den http-Block. Wenn er fehlt, fügen Sie ihn hinzu:
http {
    # Ihre Server-Blöcke kommen hier hin
}
  1. Platzieren Sie Ihren Server-Block innerhalb des http-Blocks:
http {
    server {
        # Ihre Server-Konfiguration
    }
}
  1. Überprüfen Sie die Struktur Ihrer nginx.conf-Datei, um sicherzustellen, dass sie diesem Layout folgt:
events {
    # Einstellungen für den Event-Kontext
}

http {
    # Globale HTTP-Einstellungen

    server {
        # Server-Block 1
    }

    server {
        # Server-Block 2
    }
}

Verwendung von Include-Direktiven für modulare Konfiguration

Sie können Include-Direktiven verwenden, um Ihre Konfiguration auf mehrere Dateien aufzuteilen:

  1. Fügen Sie in Ihrer Haupt-nginx.conf-Datei eine Include-Anweisung innerhalb des http-Blocks hinzu:
http {
    include /etc/nginx/sites-enabled/*;
}
  1. Erstellen Sie separate Konfigurationsdateien für jeden Server-Block im Verzeichnis /etc/nginx/sites-available/.

  2. Um eine Konfiguration zu aktivieren, erstellen Sie einen symbolischen Link von sites-available zu sites-enabled:

sudo ln -s /etc/nginx/sites-available/ihre-config /etc/nginx/sites-enabled/

Diese Methode hält Ihre Hauptkonfigurationsdatei übersichtlich und erleichtert die Verwaltung mehrerer Server-Blöcke.

Überprüfen der Syntax und Testen der Konfiguration

Bevor Sie Änderungen an Ihrer Nginx-Konfiguration vornehmen, testen Sie diese immer:

  1. Verwenden Sie den Befehl nginx -t, um auf Syntaxfehler zu prüfen:
sudo nginx -t
  1. Wenn Fehler vorliegen, zeigt der Befehl die Zeilennummer und die Datei an, in der das Problem auftritt.

  2. Beheben Sie alle Probleme und führen Sie den Test erneut aus, bis Sie eine Erfolgsmeldung erhalten.

  3. Sobald der Test erfolgreich ist, laden Sie Nginx neu, um die Änderungen anzuwenden:

sudo systemctl reload nginx