nginx - nginx: [emerg] bind() a [::]:80 falló (98: dirección ya en uso)
De repente aparece el siguiente error de nginx
* Restarting nginx
* Stopping nginx nginx
...done.
* Starting nginx nginx
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
...done.
...done.
si corro
lsof -i :80 or sudo fuser -k 80/tcp
No consigo nada. Nada en el puerto 80
Luego ejecuto lo siguiente:
sudo netstat -pan | grep ":80"
tcp 0 0 127.0.0.1:8070 0.0.0.0:* LISTEN 15056/uwsgi
tcp 0 0 10.170.35.97:39567 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39564 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39584 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39566 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39571 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39580 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39562 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39582 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39586 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39575 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39579 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39560 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39587 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39591 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39589 10.158.58.13:8080 TIME_WAIT -
Estoy perplejo. ¿Cómo depuro esto?
Estoy usando uwsgi con un pase de proxy en el puerto 8070. uwsgi se está ejecutando. Nginx no lo es. estoy usando ubuntu 12.4
A continuación se muestran las partes relevantes de mi archivo de configuración nginx
upstream uwsgi_frontend {
server 127.0.0.1:8070;
}
server {
listen 80;
server_name 127.0.0.1;
location = /favicon.ico {
log_not_found off;
}
location / {
include uwsgi_params;
uwsgi_buffering off;
uwsgi_pass 127.0.0.1:8070;
}
}
Así es como instalo nginx en ubuntu 12.04
nginx=stable;add-apt-repository ppa:nginx/$nginx;
apt-get update
apt get install nginx-full
Lo arreglé ejecutando:
sudo apachectl stop
Resulta que Apache se estaba ejecutando en segundo plano e impidió que nginx se iniciara en el puerto deseado.
En Ubuntu, ejecute:
sudo /etc/init.d/apache2 stop
Mi caso es diferente, tuve que finalizar el proceso de Nginx en ejecución para reiniciarlo.
En lugar de
sudo systemctl restart nginx
Tuve que usar:
sudo pkill -f nginx & wait $!
sudo systemctl start nginx
[::]:80
es una dirección ipv6.
Este error puede ocurrir si tiene una configuración de nginx que escucha en el puerto 80 y también en el puerto [::]:80
.
Tenía lo siguiente en mi archivo de sitios disponibles predeterminados:
listen 80;
listen [::]:80 default_server;
Puedes solucionar este problema agregando ipv6only=on
algo [::]:80
como esto:
listen 80;
listen [::]:80 ipv6only=on default_server;
Para más información, ver:
http://forum.linode.com/viewtopic.php?t=8580
http://wiki.nginx.org/HttpCoreModule#listen
intenta hacer este comando
sudo fuser -k 443/tcp
service nginx restart
el comando fusor encontrará la identificación del proceso (PID) y el indicador -k finalizará el proceso permitiendo el reinicio de nginx.