Nginx kann nicht neu geladen werden - wie kann man herausfinden, warum?

96

Hallo, ich hatte meinen Nginx-Server für eine Weile großartig auf Ubuntu Server 12.04 laufen.

Ich habe nach und nach verschiedene Dinge durchgearbeitet und es geschafft, die Ladezeiten auf meiner WordPress-Seite zu optimieren.

Nachdem ich ein paar Änderungen an meiner Hosts-Datei vorgenommen hatte, beschloss ich:

sudo /etc/init.d/nginx reload

Zu dem bekomme ich:

  • Nginx-Konfiguration neu laden nginx [fehlgeschlagen]

Es werden keine zusätzlichen Informationen oder Argumente angegeben. Wie kann ich meinen Server neu starten, damit er beim erneuten Laden alle Fehleranweisungen ausgibt, damit ich den Fehler aufspüren kann?

Für eine Bonusfrage:

Wenn Sie für diese Nginx-Systemadministratoren einige Änderungen an Hosts vorgenommen und ein paar andere Komponenten hinzugefügt haben und Ihr Nginx-Server plötzlich nicht mehr neu geladen wird (übrigens scheint immer noch alles zu laufen!), Wie können Sie mit dem Isolieren beginnen warum oder fangen Sie an, Dinge zu zerlegen, um zu debuggen!

Huw
quelle
4
Überprüfen Sie Ihre Syntax mit sudo nginx -t(oder sudo nginx -p /etc/nginx -c nginx.confwo /etc/nginxist Ihr Konfigurationspräfix und nginx.confdie Hauptkonfigurationsdatei).
Lekensteyn
sudo nginx -s reload schien mir auch eine Anzeige zu geben!
Huw

Antworten:

145

Überprüfen Sie das Syslog (/ var / log / syslog) auf Meldungen zu Problemen mit der Konfigurationsdatei.

Über die Befehlszeile können Sie Folgendes ausführen:

nginx -c /etc/nginx/nginx.conf -t

Damit Nginx Ihre Konfiguration auf Fehler überprüft.

Dlloyd
quelle
ah ha! Sehr nützlich Ich erhalte anscheinend: Speicherort "/ blog / wp-admin" befindet sich außerhalb des Speicherorts "/blog/.*\.php$" in /etc/nginx/site-configs/wordpress.conf:1 ... interessant , gibt mir etwas zum weitermachen!
Huw
2
ARGH! Drei Stunden Suche und es stellte sich heraus, dass ich eine verpasst hatte; Vielen Dank für die Hilfe, die sich als unerlässlich erwiesen hat, um sie aufzuspüren. Übrigens, wenn jemand jemals auf diese Frage stößt, nachdem er die von Ars Technica im Internet bereitgestellten Beiträge verfolgt hat. Ich glaube, ich habe sie jetzt mit einem feinen Zahnkamm durchgemacht!
Huw
4
Wenn ich diesen Befehl nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successfulausführe, kann ich Nginx immer noch nicht zum Starten bringen
Bill Garrison,
1
@ BillGarrison überprüfen Syslog und das Nginx-Fehlerprotokoll für weitere Informationen
Dlloyd
44

Führen Sie diesen Befehl aus, um ein Problem zu finden.

sudo nginx -t
Nanhe Kumar
quelle
7

Sie sollten wahrscheinlich nach Fehlern in suchen /var/log/nginx/error.log.

In meinem Fall habe ich den Port für ipv6 nicht hinzugefügt. Sie sollten dies auch tun (falls Sie Nginx auf einem anderen Port als 80 ausführen): listen [::]:8000 default_server ipv6only=on;

Arvind07
quelle
1
Hinweis: Wenn Ihre Berechtigungen für falsch sind /var/log/nginx/error.log, kann nginx den Fehler nicht darauf schreiben und schlägt im Hintergrund fehl. Überprüfen Sie Ihre Konfiguration wie in der akzeptierten Antwort ( nginx -c /etc/nginx/nginx.conf -t).
User898763452
5

Ich habe die folgenden Befehle ausgeführt, um Nginx wieder zum Laufen zu bringen:

# remove nginx conf files
apt-get purge nginx

# reinstall
apt-get install nginx

# make sure the default site is enabled
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

# start nginx
sudo /etc/init.d/nginx start 

Nginx funktioniert jetzt !!

Aaron Lelevier
quelle
2
Sie müssen nicht entfernen und spülen, sondern nur spülen. Und schwer zu wissen, ob dies der Fall ist, um die Frage zu beantworten, da durch das Löschen alle Konfigurationsdateien entfernt werden.
Panther
1
Im Idealfall - und für andere Benutzer hätte ich es vorgezogen, die maximale Menge an Auslesung zu erhalten, wo wurde der Fehler auftritt , und statt der Spülung installieren meine aktuelle reparieren und von vorne anfangen
Huw
1
@ bodhi.zazen Ich habe meine Antwort korrigiert. Und was "Huw" anbelangt, stimme ich zu. Es ist nur so, dass ich am Anfang des Installierens und Einrichtens war, nginxso dass es keine große Sache war, es einfach zu entfernen und von vorne zu beginnen, anstatt den Fehler aufzuspüren. Vielen Dank für Ihr Verständnis.
Aaron Lelevier
in meinem Fall musste ich nur diesen Befehl verwenden sudo /etc/init.d/nginx start
Sizzling Code
3

Überprüfen Sie Ihre /etc/nginx/sites-available/defaultoder eine von Ihnen verwendete Kopie, und stellen Sie sicher, dass Sie #etwaige }im Zusammenhang mit der {wahrscheinlich nicht kommentierten Kopie erforderliche Kommentare entfernen . Das war mein Problem.

Kenisfis
quelle
2

Um nginx zu bereinigen, geben Sie Folgendes in die Befehlszeile ein:

ln -s /etc/nginx/sites-availbale/default .etc/nginx/sites-enabled/default
user445400
quelle
Meinst du apt-get purge?
RolandiXor
2

Öffnen Sie alle Dateien erneut mit

nginx -s reopen

dann benutze

nginx -s reload

Wie die Nginx-Hilfe zeigt, wird das Nginx neu geladen, indem das Signal an den Master-Prozess gesendet wird. Es sollte funktionieren.

Bitte geben Sie keine purgeBefehle ohne Vorsicht ein, da dies für Anfänger zu Problemen führen kann (alle Konfigurationen gehen verloren).

Anto
quelle
1

Wenn es Ihnen solche Fehler gibt, können Sie auschecken journalctl -xe.
Es enthält eine Reihe von Informationen darüber, was in einem Betriebssystem passiert ist.
Sie können die Zeile finden oder einfach journalctl -xe | grep nginxherausfinden, was mit nginx passiert ist, als es versuchte, sich selbst auszuführen.

AmirHossein
quelle