介绍:
请阅读此 serverfault 问题nginx 负载平衡问题,后端有 301。与我的问题有些相似,但答案不起作用。Nginx 正在重定向到我的上游的“名称”。关键是,这不是 OpenShift 特有的问题。
配置:
我在一个 DIY 未缩放的设备上正确设置了 nginx 1.4.4(从源代码构建,已验证其正常工作 [1]),其 OPENSHIFT_DIY_IP 为 127.8.143.129。我们将其称为 A。我在该设备上设置了一个 Tornado 服务器,在另一个未缩放的设备上设置了另一个 Tornado。(假设设备 = 位于 NAT 后面的同一 LAN 上的 Red Hat Linux 机器,简化)两者都是基于openshift-hellotornado 仓库。我们假设这个是B。B的DNS地址是pam-picaxe.rhcloud.com。A的DNS地址是main-picaxe.rhcloud.com。
每当我浏览 main-picaxe.rhcloud.com 时,浏览器都会重定向到 302 Found with
Location: https://frontends/app.
这里的“frontends”是 nginx 配置中的上游名称。奇怪。
[1]:证明 nginx 只适用于设备 A:如果我在配置文件中注释掉第 20 行并取消注释第 21 行(文章末尾的 pastebin 链接),一切都会正常工作,我会得到一个“Hello world!”。但每当我遇到像第 20 行这样的情况时(即使它是设备 A 而不是设备 B 的 DNS 地址)。
尝试过一个解决办法:
我花了半天时间,厌倦了尝试配置它。我尝试了上述 serverfault 帖子中给出的解决方案,将我的位置块替换为:
地点 / { 代理密码 http://前端; proxy_set_header 主机 $host; 代理重定向 http://前端 http://$host:$server_port/; 代理重定向 http://frontends:8080/ http://$host:$server_port/; }
这会导致重定向循环。从第一个对 / 的请求开始的示例日志输出:
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,如 Gecko) Chrome/26.0.1410.63 Safari/537.31” “WWW.XXX.YYY.ZZZ” AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:55 -0500] “GET /app HTTP/1.1” 302 331 “-” “Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31” “WWW.XXX.YYY.ZZZ” AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:55 -0500] “GET /app HTTP/1.1” 302 331 “-” “Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31” “WWW.XXX.YYY.ZZZ” AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:55 -0500] “GET /app HTTP/1.1” 302 331 “-” “Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31” “WWW.XXX.YYY.ZZZ” AAA.BBB.CCC.DDD - - [22/Dec/2013:14:53:56 -0500] “GET /app HTTP/1.1” 302 331 “-” “Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31” “WWW.XXX.YYY.ZZZ”
关于如何使用 nginx 实现正常的负载平衡,您有什么想法吗?
链接到 nginx.conf:http://pastebin.com/91CMftSc