Nginx не запускается (адрес уже используется)
У меня проблема с nginx. Я пробовал разные решения, но для меня ничего не работало.
Это моя ошибка:
4 [email protected] ~ # sudo service nginx restart :(
Restarting nginx: nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:443 failed (98: Address already in use)
nginx: [emerg] still could not bind()
nginx.
Можете ли вы мне помочь?
Ответы
Ответ 1
Возможно, другой процесс использует указанный порт:
sudo netstat -tulpn
Получить PID процесса, который уже использует 443. И отправить сигнал с командой kill.
sudo kill -2 <PID>
sudo service nginx restart
В качестве альтернативы вы можете:
sudo fuser -k 443/tcp
Убедитесь, что вы не используете старый синтаксис:
server {
listen :80;
listen [::]:80;
}
Вышеупомянутый синтаксис вызовет
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Правильный синтаксис:
server {
listen 80;
listen [::]:80 ipv6only=on;
}
или
server {
listen [::]:80;
}
Оба выше синтаксиса достигнут того же, слушая как ipv4, так и ipv6.
Ответ 2
Другой способ (по моему опыту) - это просто выйти из процесса, выполняющегося на этом порту 443
sudo fuser -k 443/tcp
или если вы используете порт 80
, просто измените порт на
sudo fuser -k 80/tcp
Надеюсь, что это поможет кому-то, у кого была такая же проблема.
Ответ 3
Спасибо за ответ. После запуска
sudo netstat -tulpn
Я понял, что apache2 работает на порту 80. Это, вероятно, было сделано после того, как я использовал Certbot для установки SSL на сервере. Я удалил Apache2, и сервер был запущен.
apt remove apache2
Это сделал трюк! Еще раз спасибо.