nginx - nginx: [emerg] bind() a [::]:80 falló (98: dirección ya en uso)

Resuelto Tampa asked hace 11 años • 26 respuestas

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
Tampa avatar Feb 20 '13 12:02 Tampa
Aceptado

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
random-forest-cat avatar May 28 '2013 17:05 random-forest-cat

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
Dan D. avatar Aug 03 '2018 03:08 Dan D.

[::]:80es 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=onalgo [::]:80como 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

Nathan avatar Feb 26 '2013 23:02 Nathan

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.

jack avatar Mar 29 '2018 04:03 jack