Espelhamento Nginx sem módulo de espelho

1

Aconteceu que alguém que não está mais na minha empresa decidiu compilar manualmente o nginx sem saber exatamente o que estava fazendo e colocá-lo em produção.

Agora não podemos adicionar módulos e estamos em uma situação em que não podemos simplesmente desativar o nginx e começar de novo com uma nova instância, porque isso interromperia a experiência do cliente (porque está em produção).

Para chegar mais perto do ponto (onde podemos substituir essa instância nginx por uma nova e nova), gostaríamos de implementar o espelhamento. Novamente, não podemos instalar o módulo espelho agora. Nós temos que fazer isso de alguma outra forma.

Eu não sei nada sobre o nginx, mas eu sou aquele que sempre quer aprender e gostaria de explorar a web para discutir as coisas com as pessoas.

Basicamente, temos um nginx que funciona como um proxy reverso. As solicitações enviadas para url/apis* são redirecionadas para um servidor de API interno. Para fins de teste, precisamos espelhar esse tráfego para outro servidor. Alguém no trabalho surgiu com esta solução, usando post_action .

location ~* /apis*$ {
  proxy_pass http://api_server/$1;
  proxy_set_header Host      $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_pass_request_headers      on;
  gzip "on";
  keepalive_timeout 10;
  post_action @mirror_test;
  }

  location @mirror_test{
    proxy_ignore_client_abort on;
    proxy_pass http://test_api_server/$1;
  }
}

Agora, essa solução espelha o tráfego corretamente, mas não temos certeza se as respostas são ignoradas. Ao ler a documentação do módulo espelho , ela diz que as respostas de subsequest espelhadas usando esse módulo são ignoradas, e nós gostaria de obter o mesmo comportamento. As respostas aos clientes devem vir apenas do servidor principal ( api_server ) e não do servidor espelhado ( test_api_server ).

Então, nesta configuração, as respostas vindas do servidor espelhado são ignoradas ou não?

    
por smellyarmpits 14.09.2018 / 10:29

1 resposta

2

Você pode atualizar o nginx sem perder uma única conexão do cliente: link

Atualização: O texto a seguir atinge sua pergunta nos comentários:

The first step to gracefully updating our executable is to actually update your binary. Do this using whatever method is appropriate for your Nginx installation, whether through a package manager or a source installation.

Assim, você pode fazer uma instalação limpa das fontes usando qualquer módulo que queira incluir ou excluir e, em seguida, usar esse binário para o processo de atualização.

    
por 14.09.2018 / 10:32