Я попытался установить сертификат 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.