Introdução:
Por favor, leia esta pergunta sobre falha no servidor emproblema de balanceamento de carga nginx com 301 do backend. Um pouco semelhante ao meu problema, mas a resposta não funciona. O Nginx está redirecionando para o "nome" do meu upstream. A questão é que esta não é uma questão específica do OpenShift.
Configuração:
Eu configurei o nginx 1.4.4 corretamente (construído a partir do código-fonte, verifiquei que funciona corretamente [1]) em um equipamento DIY sem escala com OPENSHIFT_DIY_IP 127.8.143.129. Vamos chamá-lo de A. Eu configurei um servidor Tornado nesse equipamento e outro Tornado em outro equipamento sem escala. (Suponha que uma caixa gear = red hat linux na mesma LAN atrás de NAT, simplificada) Ambos são aplicativos simples de hello-world baseados norepositório openshift-hellotornado. Vamos chamar isso de B. O endereço DNS de B é pam-picaxe.rhcloud.com. O endereço DNS de A é main-picaxe.rhcloud.com.
Sempre que estou navegando para main-picaxe.rhcloud.com, o navegador é redirecionado com um 302 Encontrado com
Location: https://frontends/app.
"frontends" aqui é o nome do upstream na configuração do nginx. Esquisito.
[1]: Prova de que o nginx funciona apenas com o equipamento A: Se eu comentar a linha 20 e descomentar a linha 21 no arquivo de configuração (link pastebin no final do post), tudo funciona bem e recebo um "Olá, mundo!". mas sempre que tenho um caso como a linha 20 (mesmo que seja o endereço DNS da engrenagem A em vez da engrenagem B).
Tentei uma solução:
Passei meio dia nisso, cansado de tentar configurar isso. Tentei a solução fornecida na postagem de serverfault acima mencionada, substituindo meu bloco de localização por:
localização / { proxy_pass http://frontends; proxy_set_header Host $host; proxy_redirect http://frontends http://$host:$server_port/; proxy_redirect http://frontends:8080/ http://$host:$server_port/; }
Isso resulta em um loop de redirecionamento. Exemplo de saída de log começando na primeira solicitação para /:
AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:53 -0500] "GET / HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 ( KHTML, como Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ" AAA.BBB.CCC.DDD - - [22/Dez/2013:14:53:55 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, como Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ" AAA.BBB.CCC.DDD - - [22/Dez/2013:14:53:55 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, como Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ" AAA.BBB.CCC.DDD - - [22/Dez/2013:14:53:55 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, como Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ" AAA.BBB.CCC.DDD - - [22/dez/2013:14:53:56 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, como Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ"
Alguma idéia de como posso ter uma vida normal com balanceamento de carga com o nginx?
Link para nginx.conf:http://pastebin.com/91CMftSc