Nginx falhou ao iniciar. Não é possível identificar o endereço indicado?

Nginx falhou ao iniciar. Não é possível identificar o endereço indicado?

Quando eu reinicio meu servidor (não o nginx, o servidor inteiro), o Nginx falha ao iniciar automaticamente. Depois de fazer login no servidor, posso iniciar o nginx manualmente (serviço nginx start). Funciona. Mas se eu reiniciar novamente, terei que iniciar manualmente o Nginx. Ao verificar o error.log do Nginx, vi esse erro repetido várias vezes:

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

Como posso consertar isso? Qual é esse problema? (Estou executando um servidor Ubuntu 12.04)

Responder1

bind() to [ipv6]:80 falhou (99: Não é possível atribuir o endereço solicitado)

Parece que seu endereço IPv6 acabou de ser atribuído à eth0 e ainda está noestado provisório, portanto, o Nginx não pode estabelecer uma escuta nesse IP.

Qualquer volta do PAI (Detecção de endereço duplicado) Correndo:

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

(inserir em /etc/sysctl.confpara permanente)

ou adicione esta linha /etc/network/interfaces, na definição da interface inet6

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

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

Responder2

Tive sintomas semelhantes, mas uma configuração diferente. O servidor executa o Debian Wheezy com endereços IPv4 e IPv6 estáticos configurados.

# /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        

A cada inicialização, o nginx falhava ao iniciar:

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

A inicialização manual funciona bem e a inspeção manual também mostrou que os endereços e rotas estão definidos. Apenas definir o endereço IPv6 interfaces(sem o endereço IPv4) funcionou. A remoção do gateway IPv6 estático também funcionou, mas um endereço de gateway local de link é usado. Após mais depuração, descobri que o processo de inicialização seria interrompido:

RTNETLINK answers: File exists
Failed to bring up eth0.

Acontece que um endereço IPv6 e um gateway são atribuídos automaticamente pelo roteador quando a interface é ativada. Para evitar esse comportamento, defina accept_ra 0na iface eth0 inet6seção. A inet6seção também deve ser movida antes da inetseção ou a rota padrão ainda apontará para o endereço do link local.

Responder3

Nos meus hosts Ubuntu 14.04, eu só precisava mover a entrada IPv6 (inet6) ANTES da entrada IPv4 (inet).

Então isso 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

informação relacionada