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

Это сделал трюк! Еще раз спасибо.