Nginx-Lastausgleich leitet zum Upstream „Name“ weiter

Nginx-Lastausgleich leitet zum Upstream „Name“ weiter

Einführung:

Bitte lesen Sie diese Serverfehlerfrage aufNginx-Lastausgleichsproblem mit 301 vom Backend. Etwas ähnlich zu meinem Problem, aber die Antwort funktioniert nicht. Nginx leitet auf den „Namen“ meines Upstreams um. Der Punkt ist, dass dies keine OpenShift-spezifische Frage ist.


Aufbau:

Ich habe nginx 1.4.4 korrekt eingerichtet (aus dem Quellcode erstellt, überprüft, dass es richtig funktioniert [1]) auf einem DIY-Gerät ohne Skalierung mit OPENSHIFT_DIY_IP 127.8.143.129. Nennen wir es A. Ich habe einen Tornado-Server auf dem besagten Gerät eingerichtet und einen weiteren Tornado auf einem anderen Gerät ohne Skalierung. (Nehmen wir an, ein Gerät = Red Hat Linux-Box im selben LAN hinter NAT, vereinfacht) Beide sind einfache Hallo-Welt-Apps basierend auf demOpenshift-Hellotornado-Repository. Nennen wir es B. Bs DNS-Adresse ist pam-picaxe.rhcloud.com. A's DNS-Adresse ist main-picaxe.rhcloud.com.

Immer wenn ich zu main-picaxe.rhcloud.com navigiere, wird der Browser mit einer 302-Fehlermeldung umgeleitet.

Location: https://frontends/app.

„Frontends“ ist hier der Name des Upstreams in der Nginx-Konfiguration. Seltsam.

[1]: Beweis, dass nginx nur mit Gear A funktioniert: Wenn ich in der Konfigurationsdatei (Pastebin-Link am Ende des Beitrags) Zeile 20 auskommentiere und Zeile 21 entkommentiere, funktioniert alles gut und ich erhalte ein "Hallo Welt!". Aber immer wenn ich einen Fall wie Zeile 20 habe (auch wenn es die DNS-Adresse von Gear A statt Gear B ist).

Habe eine Lösung versucht:

Ich habe einen halben Tag damit verbracht und war es leid, das alles zu konfigurieren. Ich habe die Lösung aus dem oben genannten Serverfault-Beitrag ausprobiert, indem ich meinen Standortblock durch Folgendes ersetzt habe:

Standort / {
            Proxy-Passwort http://frontends;
            Proxy_Set_Header Host $host;
            Proxy-Umleitung http://Frontends http://$Host:$Server-Port/;
            Proxy-Umleitung http://frontends:8080/ http://$host:$server_port/;
}

Dies führt zu einer Umleitungsschleife. Beispiel einer Protokollausgabe beginnend mit der ersten Anfrage an /:

AAA.BBB.CCC.DDD - - [22/Dez/2013:14:53:53 -0500] "GET / HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, wie 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, wie 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, wie 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, wie 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, wie Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ"

Irgendwelche Ideen, wie ich mit Nginx ein normales Leben mit Lastenausgleich erreichen kann?

Link zu nginx.conf:http://pastebin.com/91CMftSc

verwandte Informationen