Eu quero usar um envio a maior parte do tempo, mas quero permitir a especificação do servidor de destino com base em um cabeçalho de solicitação do X-Target-Server.
Eu tenho um servidor que procura por uma variável de solicitação e a mapeia como parte do meu nginx.conf. Eu então tenho um servidor virtual conf que faz o seguinte:
proxy_pass https://backend_dev_test;
if ($is_target_specified) {
proxy_pass https://$http_x_target_server;
}
O que acontece quando a diretiva proxy_pass é especificada? Funciona imediatamente? Isso causaria a corrida duas vezes? Ou apenas segmentaria o segundo se a condição fosse atendida?
Parece funcionar em alguns blocos de localização, mas não em outros, e não entendo o porquê. Existe uma maneira melhor de abordar isso? Localizações completas abaixo
Parece funcionar
location ~* /v3/(test|other)/ {
proxy_cache_bypass "1";
proxy_no_cache "1";
resolver 8.8.8.8;
proxy_ignore_client_abort on;
rewrite ^/v3/(.*)$ /$1 break;
proxy_pass https://backend_dev_test;
if ($is_target_specified) {
proxy_pass https://$http_x_target_server;
}
}
Parece não funcionar
location ~* /v3 {
proxy_cache_bypass "1";
proxy_no_cache "1";
resolver 8.8.8.8;
proxy_ignore_client_abort on;
proxy_pass https://backend_dev;
if ($is_target_specified) {
proxy_pass https://$http_x_target_server;
}
}
Tags nginx