„Test pliku konfiguracyjnego /etc/nginx/nginx.conf nie powiódł się”: Skąd mam wiedzieć, dlaczego tak się stało?

91

Jestem noobem Nginx i wypróbowuję ten samouczek dotyczący Nginx 1.1.19 na Ubuntu 12.04. Mam ten plik konfiguracyjny nginx.

Po uruchomieniu tego polecenia test kończy się niepowodzeniem:

$ 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

Skąd mam wiedzieć, dlaczego test nginx.conf nie powiódł się?

bernie2436
źródło
1
Czy nadal masz „default” w swoim „/ etc / ngix / sites-enabled”?
RickyA,
@RickyA masz na myśli plik „domyślny”? Tak, nadal mam ten plik w tym katalogu. Przeniosłem ten plik i uruchomiłem ponowne ładowanie nginx -s i nadal widzę to samo zachowanie z serwera
bernie2436
błąd wspomina o pliku csv, sprawdź ten plik na stronach z włączoną obsługą stron
Mohammad AbuShady
1
Ad sudo service nginx restart) Nginx ma również narzędzie CLI: nginx -s reloaddo ponownego załadowania konfiguracji w przypadku jej zmiany. To znacznie szybciej.
Kaiser

Odpowiedzi:

168

sudo nginx -t powinien przetestować wszystkie pliki i zwrócić błędy i lokalizacje ostrzeżeń

Mohammad AbuShady
źródło
1
testuje tylko jeden plik, tj .: /etc/nginx/nginx.conf, ale jak mogę przetestować witryny-włączone / domyślne?
aitchkhan
4
to sądzę, żeby to przetestować wszystko, tak długo jak są one zawarte w pliku domyślnym, jeśli nie używasz domyślnej ścieżki pliku config następnie spróbuj użyć (co zakładam, że są?), -cflagę, więcnginx -c /etc/nginx/sites-enabled/default -t
Mohammad AbuShady
Potwierdzam, co powiedział @MohammadAbuShady. Chociaż strona podręcznika dla -tniejasno mówi Nie uruchamiaj, po prostu przetestuj plik konfiguracyjny. Nginx sprawdza konfigurację pod kątem poprawnej składni, a następnie próbuje otworzyć pliki, o których mowa w konfiguracji. pliki są nie tylko sprawdzane pod kątem istnienia, ale analizowane. Zgodnie z oczekiwaniami kod zakończenia wynosi 1 w przypadku znalezienia błędu i 0 w przeciwnym razie.
Günther Eberl
5

To konkretne polecenie zadziałało dla mnie. sudo apt-get remove --purge nginx nginx-full nginx-common

i sudo apt-get install nginx

zasługa tej odpowiedzi na stackexchnage

Eric
źródło