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

3

Quando eu reinicio meu servidor (não o nginx, o servidor inteiro), o Nginx falha ao iniciar automaticamente. Depois que eu entrei no servidor, posso iniciar o nginx manualmente (service nginx start). Funciona. Mas se eu reiniciar novamente, eu tenho que iniciar manualmente o Nginx. Ao verificar o error.log para 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? O que é esse problema? (Estou rodando um servidor Ubuntu 12.04)

    
por THpubs 27.08.2012 / 05:56

3 respostas

4

bind() to [ipv6]:80 failed (99: Cannot assign requested address)

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

Qualquer turno do DAD ( Detecção de endereço duplicado ) executando:

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

(insira em /etc/sysctl.conf para permanente)

ou adicione esta linha em /etc/network/interfaces , sob inet6 interface definition

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

Fonte: link

    
por 27.08.2012 / 07:16
0

Eu 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 falhou 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 as rotas estão definidos. Basta definir o endereço IPv6 em interfaces (sem o endereço IPv4). A remoção do gateway IPv6 estático também funcionou, mas um endereço de gateway local de link é usado. Depois de mais depuração, descobri que o processo de boot seria cuspido:

RTNETLINK answers: File exists
Failed to bring up eth0.

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

    
por 21.02.2014 / 16:31
0

Em meus hosts do Ubuntu 14.04, precisei apenas 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
    
por 17.02.2016 / 03:44

Tags