Nginx will not start (Address already in use)
I have a problem with nginx. I tried different solutions, but for me nothing work. That is my error:
4 root@BANANAS ~ # 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.
Can you help me?
Probably other process is using specified port:
sudo netstat -tulpn
Get the PID of the process that already using 443. And send signal with kill command.
sudo kill -2 <PID>
sudo service nginx restart
Aternatively you can do:
sudo fuser -k 443/tcp
Make sure you dont use old syntax:
server {
listen :80;
listen [::]:80;
}
The above syntax will cause
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Correct syntax:
server {
listen 80;
listen [::]:80 ipv6only=on;
}
or
server {
listen [::]:80;
}
Both above syntax will achieve the same thing, listening on both ipv4 and ipv6.
Another way (from my experience) is just force quit the process that running on that port 443
sudo fuser -k 443/tcp
or if you running on port 80
just change the port to
sudo fuser -k 80/tcp
Hope it helps someone who had the same issue
Alternative using lsof
:
Find the PID & kill the process which running on port 443
sudo kill -9 $(lsof -t -i :443)
Thank you for the answer. After running
sudo netstat -tulpn
I realised that I had apache2 running on port 80. This was probably done after I used Certbot to install SSL on the server. I removed Apache2 and the server was up and running.
apt remove apache2
This did the trick! Thank you again.
I received the above error due to accidentally repeating the listen directive twice within the same server block as follows:
server {
listen [::]:443 ssl ipv6only=off;
listen 443 ssl;
...
}
changing it to:
server {
listen 443 ssl;
...
}
or
server {
listen [::]:443 ssl ipv6only=off;
...
}
resolved the problem when restarting the server: sudo service nginx start