Snippet

Nginx Restart, Start und Stop

Wie kann man den WebserverNginx neu startenunter Debian / Ubuntu Linux oder ähnlichen Unix-basierten Betriebssystemen?

von Oli Feiler · 28. April 2016

Wie kann man den Webserver Nginx neu starten unter Debian / Ubuntu Linux oder ähnlichen Unix-basierten Betriebssystemen? Nginx hat sich in den letzten Jahren als leistungsstarke Alternative zu Apache etabliert – ob als eigenständiger Webserver, Reverse Proxy oder Load Balancer. Die Dienstverwaltung läuft dabei über systemctl, das zentrale Werkzeug von systemd.

Konfiguration testen – immer zuerst

Bevor Nginx neu gestartet wird, sollte die Konfiguration auf Fehler geprüft werden. Ein Syntaxfehler in einer Konfigurationsdatei reicht aus, damit Nginx nach dem Neustart nicht mehr hochkommt – und alle Webseiten auf dem Server offline gehen.

            sudo nginx -t
        

Die Ausgabe zeigt entweder syntax is ok und test is successful, oder sie nennt die fehlerhafte Datei mit Zeilennummer. Erst nach einem erfolgreichen Test sollte der Neustart erfolgen.

Nginx neu starten auf Debian / Ubuntu

Restart (harter Neustart)

            sudo systemctl restart nginx
        

Alle aktiven Verbindungen werden sofort beendet, der Prozess komplett gestoppt und neu gestartet. Nötig bei grundlegenden Änderungen wie dem Wechsel von Listening-Ports, dem Laden neuer Module oder Änderungen am Master-Prozess.

Reload (sanfter Neustart)

            sudo systemctl reload nginx
        

Nginx liest die Konfiguration neu ein, ohne bestehende Verbindungen zu unterbrechen. Der Master-Prozess startet neue Worker mit der aktualisierten Konfiguration, während die alten Worker ihre laufenden Requests noch abarbeiten. Das ist der bevorzugte Weg nach Änderungen an Server-Blöcken, SSL-Zertifikaten, Proxy-Einstellungen oder Weiterleitungen.

Graceful Shutdown über Nginx-Signal

            sudo nginx -s reload
        

Erreicht dasselbe wiesystemctl reload, spricht aber direkt den Nginx-Master-Prozess über ein Signal an. Manche Admins bevorzugen diesen Weg, weil er unabhängig von systemd funktioniert. Weitere Signale:

            sudo nginx -s stop      # sofortiger Stop
sudo nginx -s quit      # Graceful Shutdown (laufende Requests abarbeiten)
sudo nginx -s reopen    # Logdateien neu öffnen (für Log-Rotation)
        

Nginx stoppen auf Debian / Ubuntu

            sudo systemctl stop nginx
        

Fährt den Webserver herunter. Alle Verbindungen werden beendet, der Dienst bleibt gestoppt bis zum nächsten manuellen Start oder Systemreboot.

Nginx starten auf Debian / Ubuntu

            sudo systemctl start nginx
        

Startet einen gestoppten Nginx-Dienst. Falls Nginx bereits läuft, passiert nichts – im Gegensatz zu restart wird kein Neustart ausgelöst.

Status prüfen

            sudo systemctl status nginx
        

Zeigt an, ob Nginx läuft, die Prozess-ID des Master-Prozesses, die Anzahl der Worker und die letzten Logzeilen. Hilfreich zur schnellen Diagnose bei Problemen.

Für eine kompaktere Prüfung, etwa in Skripten:

            systemctl is-active nginx
        

Gibt active oder inactive zurück – nützlich in Monitoring-Skripten und Health-Checks.

Nginx beim Systemstart aktivieren oder deaktivieren

            sudo systemctl enable nginx
sudo systemctl disable nginx
        

enable sorgt dafür, dass Nginx nach einem Reboot automatisch startet. disable entfernt den Autostart, ohne den aktuell laufenden Dienst zu beeinflussen.

RHEL-basierte Distributionen (Rocky Linux, AlmaLinux, CentOS Stream)

Auf Red-Hat-basierten Systemen heißt der Dienst ebenfalls nginx – hier gibt es keinen Namensunterschied wie bei Apache/httpd. Die Befehle sind identisch:

            sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl status nginx
        

Der Konfigurationstest funktioniert überall gleich mit sudo nginx -t. Der Hauptunterschied liegt im Paketmanager bei der Installation: apt install nginx auf Debian/Ubuntu, dnf install nginx auf RHEL-basierten Systemen.

Reload vs. Restart – wann was?

Die Faustregel: reload reicht für die allermeisten Konfigurationsänderungen und sollte der Standard sein. Ein restart ist nur in wenigen Fällen nötig:

  • Neue Module geladen oder entfernt
  • Änderungen an der worker_processes-Direktive
  • Wechsel der Listening-Ports (in manchen Fällen)
  • Nach einem Nginx-Update

Im Zweifelsfall schadet ein restart nicht – er unterbricht nur kurz alle aktiven Verbindungen.

Häufige Stolperfallen

Nginx startet nach dem Restart nicht? Fast immer ein Konfigurationsfehler. sudo nginx -t zeigt Datei und Zeilennummer. Häufige Ursachen: fehlende Semikolons, falsche Pfade zu SSL-Zertifikaten oder doppelte server_name-Einträge.

Port bereits belegt? Wenn Apache oder ein anderer Dienst auf Port 80 oder 443 läuft, kann Nginx nicht starten. sudo ss -tlnp | grep ':80' zeigt, welcher Prozess den Port belegt.

Berechtigungsprobleme? Nginx muss die Konfigurationsdateien, SSL-Zertifikate und Webroot-Verzeichnisse lesen können. Der Worker-Prozess läuft üblicherweise als Benutzer www-data (Debian/Ubuntu) oder nginx (RHEL-basiert).

Logdateien werden nicht rotiert? Nach einer Log-Rotation muss Nginx die Dateien neu öffnen. Das erledigt sudo nginx -s reopen oder ein postrotate-Skript in der Logrotate-Konfiguration.

Nginx-Kurzreferenz

AufgabeBefehl
Neustartsudo systemctl restart nginx
Reloadsudo systemctl reload nginx
Stoppensudo systemctl stop nginx
Startensudo systemctl start nginx
Statussudo systemctl status nginx
Konfig testensudo nginx -t
Graceful Shutdownsudo nginx -s quit
Logs neu öffnensudo nginx -s reopen
Autostart aktivierensudo systemctl enable nginx
Autostart deaktivierensudo systemctl disable nginx

Weitere Snippets