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?