A resposta aceita não funcionou para mim no nginx / 1.4.2.
A definição de proxy_pass
para uma variável força a nova resolução dos nomes DNS, porque o Nginx trata as variáveis de maneira diferente da configuração estática. [1]
Exemplo:
server {
...
resolver 127.0.0.1;
set $backend "http://dynamic.example.com:80";
proxy_pass $backend;
...
}
Observação: um resolvedor (por exemplo, o servidor de nomes que você usa) DEVE ser configurado para que isso funcione.
Por padrão, o nginx armazena em cache as respostas usando o valor TTL de uma resposta. Um parâmetro válido opcional permite substituí-lo: [2]
resolver 127.0.0.1 [::1]:5353 valid=30s;
Antes da versão 1.1.9, o ajuste do tempo de armazenamento em cache não era possível, e o nginx sempre armazenava as respostas em cache durante 5 minutos.
Fontes:
[1] link
[2] link