«Ошибка проверки файла конфигурации /etc/nginx/nginx.conf»: Как узнать, почему это произошло?

91

Я новичок в nginx, пробующий это руководство по nginx 1.1.19 на ubuntu 12.04. У меня есть этот файл конфигурации nginx.

Когда я запускаю эту команду, тест не проходит:

$ 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

Как мне узнать, почему тест nginx.conf не прошел?

bernie2436
источник
1
У вас все еще есть "default" в вашем "/ etc / ngix / sites-enabled"?
RickyA
@RickyA вы имеете в виду файл "по умолчанию"? Да, этот файл все еще находится в этом каталоге. Я переместил этот файл и запустил nginx -s reload и все еще вижу такое же поведение с сервера
bernie2436
в ошибке упоминается файл csv, проверьте этот файл на сайтах с поддержкой
Mohammad AbuShady
1
Ad sudo service nginx restart) Nginx также имеет инструмент командной строки: nginx -s reloadдля перезагрузки конфигурации в случае ее изменения. Это намного быстрее.
kaiser

Ответы:

168

sudo nginx -t должен тестировать все файлы и возвращать ошибки и предупреждения

Мохаммад Абу-Шади
источник
1
он тестирует только один файл, например: /etc/nginx/nginx.conf, но как я могу проверить сайты с включенным / по умолчанию?
aitchkhan
4
он думает, что он проверит все, если они включены в файл по умолчанию (как я полагаю, они есть?), если вы не используете путь к файлу конфигурации по умолчанию, попробуйте использовать -cфлаг, поэтомуnginx -c /etc/nginx/sites-enabled/default -t
Mohammad AbuShady
Могу подтвердить, что сказал @MohammadAbuShady. Хотя в справочной странице для -tнесколько неопределенно сказано « Не запускать», просто проверьте файл конфигурации. Nginx проверяет конфигурацию на правильный синтаксис, а затем пытается открыть файлы, указанные в конфигурации. файлы не просто проверяются на наличие, но и анализируются. Как и ожидалось, код выхода равен 1, если обнаружена ошибка, и 0 в противном случае.
Гюнтер Эберл
5

Эта конкретная команда работала для меня. sudo apt-get remove --purge nginx nginx-full nginx-common

а также sudo apt-get install nginx

кредит на этот ответ на stackexchnage

Эрик
источник
-1

Показать файл и отслеживать ошибку

 systemctl status nginx.service
ГусТаво Морено
источник
Это не дает ответа на вопрос. Как только у вас будет достаточная репутация, вы сможете комментировать любой пост ; вместо этого предоставьте ответы, которые не требуют пояснений от спрашивающего . - Из отзыва
NaN,