Altera proxy_pass se a condição for atendida?

1

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;
  }
}
    
por ryan 06.09.2016 / 14:59

0 respostas

Tags