Eu gosto de propor uma versão alternativa desta declaração sem if . Eu sei que esta é uma pergunta antiga, mas futuros googlers podem achar isso útil.
Devo admitir que isso também significa mudar a forma como você seleciona o upstream. Mas não vejo problema em fazer isso.
A idéia é enviar um cabeçalho HTTP personalizado (X-Server-Select) com a solicitação. Isso permite que o nginx selecione o conjunto correto. Se o cabeçalho não estiver presente, um padrão será selecionado.
Sua configuração pode se tornar algo assim:
upstream pool1
{
server localhost:5001;
server localhost:5002;
server localhost:5003;
}
upstream pool2
{
server localhost:6001;
server localhost:6002;
server localhost:6003;
}
# map to different upstream backends based on header
map $http_x_server_select $pool {
default "pool1";
pool1 "pool1";
pool2 "pool2";
}
location /
{
include fastcgi_params;
fastcgi_pass $pool;
}
Fonte: nginx usa backend diferente com base no cabeçalho http
Adicionado depois de voltar a isso como futuro eu: Para testar facilmente os servidores, você pode instalar uma extensão no chrome ( Eu uso o ModHeader ) que permite modificar cabeçalhos de solicitação.