Nginx no pudo iniciarse. ¿No se puede asignar la dirección solicitada?

Nginx no pudo iniciarse. ¿No se puede asignar la dirección solicitada?

Cuando reinicio mi servidor (no nginx, todo el servidor), Nginx no se inicia automáticamente. Después de iniciar sesión en el servidor, puedo iniciar nginx manualmente (servicio nginx start). Funciona. Pero si reinicio de nuevo, tengo que iniciar Nginx manualmente. Al verificar el error.log para Nginx, vi este error repetido varias veces:

2012/08/27 09:19:23 [emerg] 1066#0: bind() to [ipv6]:80 failed (99: Cannot assign requested address)

¿Cómo puedo arreglar esto? ¿Cuál es este problema? (Estoy ejecutando un servidor Ubuntu 12.04)

Respuesta1

bind() a [ipv6]:80 falló (99: no se puede asignar la dirección solicitada)

Parece que su dirección IPv6 acaba de ser asignada a eth0 y todavía está en elestado tentativo, por lo tanto, Nginx no puede establecer una escucha en esa IP.

Cualquiera de los turnos de PAPÁ (Detección de direcciones duplicadas) mediante la ejecución:

sysctl -w net.ipv6.conf.eth0.dad_transmits=0

(insertar en /etc/sysctl.confpara permanente)

o agregue esta línea en /etc/network/interfaces, en la definición de interfaz inet6

post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done

Fuente:http://pyro.eu.org/how-to/micro/nginx-cannot-assign-requested-address-ipv6.txt

Respuesta2

Tuve síntomas similares, pero una configuración diferente. El servidor ejecuta Debian Wheezy con direcciones IPv4 e IPv6 estáticas configuradas.

# /etc/network/interfaces
auto lo eth0
iface lo inet loopback

iface eth0 inet static
 address 192.0.2.3
 netmask 255.255.255.0
 gateway 192.0.2.1

iface eth0 inet6 static
 address 2001:db8::3
 netmask 64
 gateway 2001:db8::1        

En cada arranque, nginx no pudo iniciarse:

bind() to [2001:db8::3]:80 failed (99: Cannot assign requested address)

El inicio manual funciona bien y la inspección manual también mostró que las direcciones y rutas están configuradas. Simplemente configurar la dirección IPv6 interfaces(sin la dirección IPv4) funcionó. La eliminación de la puerta de enlace IPv6 estática también funcionó, pero luego se utiliza una dirección de puerta de enlace local de enlace. Después de una mayor depuración, descubrí que el proceso de arranque arrojaría:

RTNETLINK answers: File exists
Failed to bring up eth0.

Resulta que el enrutador asigna automáticamente una dirección IPv6 y una puerta de enlace cuando se activa la interfaz. Para evitar este comportamiento, configúrelo accept_ra 0en la iface eth0 inet6sección. La inet6sección también debe moverse antes de la inetsección o la ruta predeterminada seguirá apuntando a la dirección local del enlace.

Respuesta3

En mis hosts Ubuntu 14.04 solo necesitaba mover la entrada IPv6 (inet6) ANTES de la entrada IPv4 (inet).

Entonces esto funciona:

auto eth0
iface eth0 inet6 static
    address fd57:c87d:f1ee:2::6
    netmask 64
    up /sbin/ip -6 route add fd57:c87d:f1ee::/48 via fe80::1 dev $IFACE

iface eth0 inet static
   address 10.0.3.29
   netmask 255.255.255.0
   gateway 10.0.3.1
   dns-nameserver 10.0.3.1

información relacionada