Назад | Перейти на главную страницу

Конфигурация Nginx не может перезагрузиться. Есть ошибки «bind () to 0.0.0.0:80 не удалось (98: адрес уже используется)»

Я попытался установить сертификат HTTPS, и, ударившись головой о стену в течение нескольких часов, я понял, что Nginx НЕ принимает изменения, которые я внес в файлы конфигурации моего сайта, содержащиеся в /etc/nginx/sites-available/

Когда я бегу service nginx restart он перезагружается нормально. Когда я бегу nginx -t он говорит, что мой синтаксис в порядке, и мой тест конфигурации прошел успешно. Однако когда я бегу service nginx reload Я получаю сообщение об ошибке reload: Not running

Когда я смотрю в /var/log/nginx/error.log У меня есть эти ошибки.

2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:443 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to [::]:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:443 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to [::]:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:443 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to [::]:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:443 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to [::]:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to 0.0.0.0:443 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: bind() to [::]:80 failed (98: Address already in use)
2016/08/29 16:04:40 [emerg] 14744#14744: still could not bind()

После поиска в Google я наткнулся на эту команду netstat -plutn | grep 80 что дает мне ...

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14642/nginx: worker
tcp6       0      0 :::80                   :::*                    LISTEN      14642/nginx: worker

Я понятия не имею, что это на самом деле означает, но, читая вокруг, кажется, что Nginx НЕ должен работать на порту 80? Nginx - это мой веб-сервер, разве я не хочу, чтобы он работал на 80-м порту?

Не знаю, как действовать. Я хочу, чтобы Nginx улавливал изменения, которые я внес в файлы конфигурации моего сайта с помощью service nginx reload command, и в то же время я не решаюсь просто копировать / вставлять команды, которые я нахожу в сети, поскольку у меня есть 10 веб-сайтов, размещенных на этом сервере.

Где я ошибаюсь? Я попытался удалить default файл в моем sites-available папку, как предлагали некоторые, но я просто не совсем понимаю, в чем проблема и как ее исправить.

Проблема исправлена. Как сказал Тим, я запустил ps -ef | grep nginx команда и вручную запустил kill PID для всех процессов. Затем я побежал service nginx restart и все работало хорошо. Когда я тогда побежал service nginx reload Я НЕ получил сообщение об ошибке, и теперь мой сертификат HTTPS работает. Спасибо Тиму и Дмурати за вашу помощь

Похоже на проблему с вашим сценарием инициализации и расположением файла pid для nginx. Вы можете вручную убить nginx так:

судо убить 14642

Затем запустите nginx через сценарий инициализации следующим образом:

запуск службы sudo nginx

Оттуда, если вы скопируете / вставите свой сценарий инициализации и файл nginx.conf, я уверен, что мы сможем найти проблему с pid.