Ligação adiada Nginx

2

Estou usando o nginx no debian e tenho um servidor configurado com

server {
  listen 172.30.0.172 deferred;
}

Quando eu testo a configuração do nginx eu ainda recebo

[emerg] bind() to 172.30.0.172:443 failed (99: Cannot assign requested address)

É um host ssl e está usando o marcapasso para HA, por isso eu preciso adiar a ligação

    
por aussiegeek 25.05.2012 / 08:20

4 respostas

6

Se eu estou entendendo corretamente, você está tentando fazer nginx ouvir em um IP que pode ou não existir na máquina local no momento em que o nginx é iniciado, correto?

Se sim, então a solução está fora do nginx, já que esta operação está sendo desaprovada pelo kernel Linux.

Para permitir que os processos se liguem a um IP que não existe, defina o sysctl net.ipv4.ip_nonlocal_bind. No Debian / Ubuntu você faria isso:

echo net.ipv4.ip_nonlocal_bind=1 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
    
por 26.05.2012 / 16:04
0

A opção adiada não adia o socket bind (), adia o accept (), então isso não é o que você está procurando. Não conheço nenhum servidor da Web que forneça explicitamente esse recurso e, em qualquer caso, você precisa sinalizar para o servidor da Web quando ligar. Sua melhor opção é simplesmente ligar para 0.0.0.0 para que não importe quais endereços IP estão anexados no momento. Se isso realmente não for possível, e o nginx demorar mais para iniciar do que você pode pagar no tempo de failover (o que me surpreenderia), sua única opção é inicialmente iniciar a escuta em um IP diferente e, em seguida, no tempo de failover, arquivo de configuração e envie o nginx SIGHUP para recarregar sua configuração.

    
por 25.05.2012 / 08:56
0

De acordo com a resposta (em russo) do autor do nginx, Igor Sysoev considera tanto o deffer quanto o accept_filters sendo um tanto de desutilidade ao nginx ao contrário do apache. Ele aponta que para esse tipo de conexão não há timeouts provisionados, então eles são fechados apenas no estouro, e isso significa que com o backlog configurado para 10.000, cerca de 15.000 soquetes seriam desperdiçados como "pendurados" no estado inativo.

    
por 26.05.2012 / 15:43
-1

Existe algum motivo pelo qual você deseja ouvir um determinado IP? Seria muito mais simples ouvir em todos. De qualquer forma, ele receberá tráfego apenas quando o HA entrar em ação e o backup se tornar primário.

    
por 26.05.2012 / 15:28

Tags