Nginx не удается перезагрузить - как отследить почему?

96

Привет, у меня уже некоторое время отлично работает мой сервер Nginx на сервере Ubuntu 12.04.

Я постепенно разбирался с различными битами и дошел до оптимизации времени загрузки на моей странице WordPress.

После внесения нескольких изменений в мой файл hosts я решил:

sudo /etc/init.d/nginx reload

На что я попадаю:

  • Перезагрузка конфигурации nginx nginx [сбой]

Никакой дополнительной информации или рассуждений не приводится. Как я могу перезапустить свой сервер, чтобы он печатал любые сообщения об ошибках во время перезагрузки, чтобы я мог начать отслеживать ошибку.

Для бонусного вопроса:

Для тех системных администраторов Nginx, когда вы внесли несколько изменений в хосты и добавили несколько других битов, и вдруг ваш сервер nginx не перезагружается (кстати, все, похоже, все еще работает!), Как вы начинаете свой подход к изоляции почему или начать ломать вещи для отладки!

Huw
источник
4
Проверьте ваш синтаксис с sudo nginx -t(или sudo nginx -p /etc/nginx -c nginx.confгде /etc/nginxваш префикс конфигурации и nginx.confосновной файл конфигурации).
Лекенштейн
Перезагрузка sudo nginx -s также показала мне вывод информации!
Huw

Ответы:

145

Проверьте системный журнал (/ var / log / syslog) на наличие сообщений о проблемах файла конфигурации.

Из командной строки вы можете запустить:

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

чтобы nginx проверил вашу конфигурацию на наличие ошибок.

Dlloyd
источник
ах ха! мне кажется, что это очень полезно: расположение "/ blog / wp-admin" находится вне расположения "/blog/.*\.php$" в /etc/nginx/site-configs/wordpress.conf:1 ... интересно , дает мне что-то, чтобы продолжить!
Huw
2
ARGH! Три часа поисков, и оказывается, я пропустил; Спасибо за всю помощь, оказавшуюся незаменимой в поиске. Между прочим, если кто-нибудь когда-нибудь ответит на этот вопрос после того, как будет следить за публикациями в Ars Technica. Я думаю, что я прошел через них с прекрасным зубным гребнем теперь!
Huw
4
выполнение этой команды дает мне, nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successfulи все же я все еще не могу запустить nginx
Билл Гаррисон
1
@BillGarrison проверить системный журнал и журнал ошибок nginx для получения дополнительной информации
Dlloyd
44

Запустите эту команду, вы можете найти проблему.

sudo nginx -t
Наньхэ Кумар
источник
7

Вы, вероятно, должны проверить на наличие ошибок в /var/log/nginx/error.log.

В моем случае я не добавил порт для ipv6. Вы также должны сделать это (если вы используете nginx на порте, отличном от 80): listen [::]:8000 default_server ipv6only=on;

Arvind07
источник
1
Примечание: если у вас неправильные права доступа /var/log/nginx/error.log, nginx не сможет записать в него ошибку и молча потерпит неудачу. Проверка вашего конфига как в принятом ответе ( nginx -c /etc/nginx/nginx.conf -t) поможет.
user898763452
5

Я запустил эти команды, чтобы восстановить работу nginx:

# 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 сейчас работает !!

Аарон Лелевье
источник
2
Вам не нужно удалять и очищать, просто очистить. И трудно понять, собирается ли это пойти, чтобы ответить на вопрос, поскольку чистка удалит все файлы конфигурации.
Пантера
1
В идеале - и для других пользователей я бы предпочел получить максимальное количество информации о том, где произошел сбой, и восстановить мою текущую установку вместо очистки и начала с нуля
Huw
1
@ bodhi.zazen Я исправил свой ответ. А что касается того, что сказал "Хью", я согласен. Просто я был в начале установки и настройки, nginxтак что было не сложно просто удалить его и начать все сначала, вместо того, чтобы отследить ошибку. Спасибо вам обоим за вашу поддержку.
Аарон Лелевье
в моем случае я только должен был начать использовать эту команду sudo /etc/init.d/nginx start
Sizzling Code
3

Проверьте свою /etc/nginx/sites-available/defaultили какую-либо ее копию, которую вы используете, и убедитесь, что вы раскомментировали (удалили #) все, что }вам может понадобиться в связи с тем, {что, вероятно, было оставлено без комментариев. Это была моя проблема.

kenisfis
источник
2

Нужно удалить nginx, затем набрать в командной строке:

ln -s /etc/nginx/sites-availbale/default .etc/nginx/sites-enabled/default
user445400
источник
Вы имеете в виду apt-get purge?
RolandiXor
2

сделать заново все файлы, используя

nginx -s reopen

затем используйте

nginx -s reload

Как показывает справка nginx, перезагрузите nginx, отправив сигнал ведущему процессу. Он должен работать.

Запрос: пожалуйста, не предоставляйте purgeкоманды без предупреждения, так как это может вызвать проблемы у начинающих (все конфигурации будут потеряны) ... БОЛЬШАЯ проблема.

Анто
источник
1

Если это дает вам такие ошибки, вы можете проверить journalctl -xe.
Он имеет кучу информации о том, что произошло в операционной системе.
Вы можете найти строку или просто journalctl -xe | grep nginxузнать, что случилось с nginx, когда он попытался запустить сам.

AmirHossein
источник