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.conf
para 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 0
en la iface eth0 inet6
sección. La inet6
sección también debe moverse antes de la inet
secció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