De repente recibo el siguiente error 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 el 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 nginx conf
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
Respuestas:
[::]:80
es una dirección ipv6.Este error puede ser causado si tiene una configuración nginx que está escuchando en el puerto 80 y también en el puerto
[::]:80
.Tenía lo siguiente en mi archivo predeterminado de sitios disponibles:
Puede solucionar esto agregando
ipv6only=on
a[::]:80
esto:Para más información, ver:
http://forum.linode.com/viewtopic.php?t=8580
http://wiki.nginx.org/HttpCoreModule#listen
fuente
/etc/nginx/sites-available/default
ayuda con el error anterior.sudo service nginx restart
. Cuando lo hagonetstat -tulpn |grep 80
, obtengo solo una vez el proceso nginx (0.0.0.0:80). ¿Alguna idea de por qué no se reiniciará?ipv6only=on
solucionó el problema, pero nginx realmente debería detectar que está intentando vincularse a la misma interfaz: puerto dos veces.Lo solucioné 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 ejecutar
sudo /etc/init.d/apache2 stop
fuente
sudo /etc/init.d/apache2 stop
para detener apache en Ubuntu 14.04php
archivos), proxy al puerto Apache.Mi caso es diferente, tuve que matar ejecutando Nginx para reiniciarlo.
En vez de
Tuve que usar:
fuente
Encontré el problema que nunca tuve antes.
Solo tuve que eliminar
/etc/nginx/sites-available/default
. Entonces funcionó.Mi conf estaba en
/etc/nginx/default
.fuente
listen 80;
esa misma plantilla ya resuelve el problema y lo hace correctamente. Tu truco funciona, pero no es lo que quisiera que hagan los futuros lectores de tu pregunta. Es por eso que le sugiero que seleccione la respuesta de @ Nathan como la respuesta correcta.apt-get dist-upgrade
, que actualiza el paquete nginx, lo que crea un vínculo en/etc/nginx/sites-enabled
a/etc/nginx/sites-available/default
. nginx estaba tratando de cargar esta configuración predeterminada, que escucha el puerto 80 a través de IPv6, luego también estaba cargando mi lectura de mis configuraciones reales. Eliminar ese enlace simbólico solucionó el problema./etc/nginx/sites-available/default
, simplemente elimine el enlace simbólico a él -sudo rm /etc/nginx/sites-enabled/default
nginx
en el puerto 8080 yvarnish
en el puerto 80 y similar a esta respuesta, encontré el problema con unanginx
configuración predeterminada que todavía escuchaba en el puerto 80 a pesar de quesites-available
todas mis configuraciones escuchaban en el puerto 8080. Esto estaba ubicado en/etc/nginx/conf.d/default
También recibí el mismo error.
y cuando escribí el localhost en el navegador, estaba obteniendo
Esta es la página web predeterminada para este servidor.
El software del servidor web se está ejecutando pero aún no se ha agregado contenido. en lugar de la página de bienvenida de nginx, apache2 se ejecuta en el mismo puerto,
busque el archivo apache2 ports.conf
cambiar el puerto de otro modo
80
, lo hago como70
guarda el archivo
reinicie su sistema
funcionará para usted también, si escribe el localhost en el navegador, obtendrá la página de bienvenida de nginx
fuente
intenta hacer este comando
fuente
Mi problema era que tenía directivas de escucha superpuestas. He logrado descifrar directivas superpuestas ejecutando
Se escuchaban dos archivos en el mismo puerto:
fuente
grep -r listen /etc/nginx/*
gracias por compartir!Tuve el mismo problema en letsencrypt (certbot) y nginx,
ref: https://github.com/certbot/certbot/issues/5486
este error aún no tiene solución
entonces, se cambió un cron para renovar
(poner una recarga después de renovar)(usando la sugerencia de certbot)registros (cortos):
fuente
Primero cambie el puerto de escucha apache 80 a 8080 apache en /etc/apache2/ports.conf include
o
luego agregue nginx como servidor proxy inverso que escuchará el puerto apache
Después de los cambios, reinicie el servidor nginx
Ahora todo el tráfico será manejado por el servidor nginx y enviará todas las solicitudes dinámicas a apache y el servidor nginx atenderá la contención estática.
Para configuración avanzada como caché:
https://www.linode.com/docs/web-servers/nginx/slightly-more-advanced-configurations-for-nginx/#basic-nginx-caching
fuente
Me encontré con un problema similar. el registro es como abajo
El último
[emerg]
muestra lo queduplicate listen options for [::]:80
significa que hay más de un archivo de bloque nginx que contiene[::]:80
.Mi solución es eliminar una de las
[::]:80
configuracionesPD: probablemente tenga un archivo de bloqueo predeterminado. Mi consejo es mantener este archivo como servidor predeterminado para el puerto 80. y eliminarlo
[::]:80
de otros archivos de bloquefuente
Uso supervisor para ejecutar Nginx y Gunicorn lado a lado en un contenedor Docker.
Esta fue la configuración utilizada para el supervisor:
El problema fue cómo lancé Ngnix: por defecto, se ejecuta en primer plano. Esto hace que supervisar vuelva a intentar ejecutar otra instancia de Nginx.
Al agregar
-g 'daemon off;'
a la línea de comando, Nginx permaneció en primer plano, el supervisor dejó de intentar ejecutar otra instancia.fuente
En mi caso, uno de los servicios, ya sea Apache, Apache2 o Nginx, ya se estaba ejecutando y, debido a eso, no pude iniciar el otro servicio.
fuente
Tenía varios archivos * .save (volcados de emergencia de nano) de diferentes archivos de configuración NGINX en el directorio disponible de mis sitios. Una vez que eliminé estos archivos .save, NGINX se reinició bien. Asumí que estos eran inofensivos ya que no había enlaces simbólicos correspondientes, pero supongo que estaba equivocado.
fuente
Para seguir a @ lfender6445 y @SAURABH respuestas:
Mi problema también fue el hecho de que después de actualizar a Vagrant 2.2.2, Apache2 se estaba ejecutando como un servidor web cuando el invitado arrancaba. En el pasado solo tenía nginx como servidor web.
ssh vagabundo en el cuadro y ejecute el siguiente comando para deshabilitar Apache2 de iniciarse cada vez que se inicia el cuadro de invitado:
Salga de ssh, alto vagabundo, vagabundo arriba. Problema resuelto.
fuente
Si el problema persiste después de probar cualquiera de las soluciones anteriores, reinicie su servidor una vez. Funcionó para mí :)
fuente
En mi caso, el culpable resultó ser un bloque de servidor que contenía:
En Linux, un socket que escucha en una IP específica (por ejemplo
[::1]:80
) entra en conflicto con un socket que escucha en el mismo puerto pero cualquier IP (es decir[::]:80
). Normalmente, nginx tratará este problema de forma transparente utilizando un único socket detrás de estas escenas. Sin embargo, especificar explícitamenteipv6only
(o ciertas otras opciones) en la directiva de escucha obliga a nginx a (intentar) crear un socket separado para ello, lo que resulta en elAddress already in use
error.Como
ipv6only=on
es el valor predeterminado de todos modos (desde 1.3.4), la solución fue simplemente eliminar esa opción de esta directiva y asegurarse de queipv6only
no se usara en ningún otro lugar de mi configuración.fuente
Tengo el mismo problema, pero veo que el puerto 80 escuchado por Nginx:
Pero cuando intento reiniciarlo, aparece el error:
Mi problema estaba en el archivo de configuración, estoy configurado como archivo PID y parece que el sistema no puede detectarlo correctamente:
Cuando lo quité, funcionó.
fuente