"Test der Konfigurationsdatei /etc/nginx/nginx.conf fehlgeschlagen": Woher weiß ich, warum dies passiert ist?

88

Ich bin ein Nginx-Neuling , der dieses Tutorial auf Nginx 1.1.19 unter Ubuntu 12.04 ausprobiert. Ich habe diese Nginx-Konfigurationsdatei.

Wenn ich diesen Befehl ausführe, schlägt der Test fehl:

$ sudo service nginx restart
Restarting nginx: nginx: [crit] pread() "/etc/nginx/sites-enabled/csv" failed (21: Is a directory)
nginx: configuration file /etc/nginx/nginx.conf test failed

Woher weiß ich, warum der Test nginx.conf fehlgeschlagen ist?

bernie2436
quelle
1
Haben Sie noch "Standard" in Ihrem "/ etc / ngix / sites-enabled"?
RickyA
@ RickyA meinst du die "Standard" -Datei? Ja, ich habe diese Datei immer noch in diesem Verzeichnis. Ich habe diese Datei verschoben und nginx -s reload ausgeführt und sehe immer noch das gleiche Verhalten vom Server
bernie2436
Der Fehler erwähnt die Datei CSV, überprüfen Sie diese Datei in Sites-fähig
Mohammad AbuShady
1
Ad sudo service nginx restart) Nginx hat auch ein CLI-Tool: nginx -s reloadum die Konfiguration neu zu laden, falls sie sich ändert. Das geht viel schneller.
Kaiser

Antworten:

161

sudo nginx -t sollte alle Dateien testen und Fehler und Warnungen zurückgeben

Mohammad AbuShady
quelle
1
Es wird nur eine Datei getestet, z. B.: /etc/nginx/nginx.conf. Wie kann ich Sites-enabled / default testen?
Aitchkhan
4
Ich denke, es würde alle testen, solange sie in der Standarddatei enthalten sind (was nehme ich an?). Wenn Sie nicht den Standardpfad der Konfigurationsdatei verwenden, versuchen Sie es mit -cflag, alsonginx -c /etc/nginx/sites-enabled/default -t
Mohammad AbuShady
Kann bestätigen, was @MohammadAbuShady gesagt hat. Obwohl die Manpage für -tetwas vage sagt: Nicht ausführen, testen Sie einfach die Konfigurationsdatei. Der Nginx überprüft die Konfiguration auf korrekte Syntax und versucht dann, die in der Konfiguration genannten Dateien zu öffnen. Die Dateien werden nicht nur auf ihre Existenz überprüft, sondern auch analysiert. Wie erwartet ist der Exit-Code 1, wenn ein Fehler gefunden wurde, und 0, wenn dies nicht der Fall ist.
Günther Eberl
1

Diese speziellen Befehle haben bei mir funktioniert. sudo apt-get remove --purge nginx nginx-full nginx-common

und sudo apt-get install nginx

Gutschrift auf diese Antwort auf stackexchnage

Eric
quelle