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.
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.
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.
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.
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)
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.
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.
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.
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.
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.
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:
Im Zweifelsfall schadet ein restart nicht – er unterbricht nur kurz alle aktiven Verbindungen.
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.
| Aufgabe | Befehl |
|---|---|
| Neustart | sudo systemctl restart nginx |
| Reload | sudo systemctl reload nginx |
| Stoppen | sudo systemctl stop nginx |
| Starten | sudo systemctl start nginx |
| Status | sudo systemctl status nginx |
| Konfig testen | sudo nginx -t |
| Graceful Shutdown | sudo nginx -s quit |
| Logs neu öffnen | sudo nginx -s reopen |
| Autostart aktivieren | sudo systemctl enable nginx |
| Autostart deaktivieren | sudo systemctl disable nginx |