【发布时间】:2017-07-31 15:22:50
【问题描述】:
我第一次接触 AWS 时遇到了一个尝试设置负载均衡器 (ELB) 的问题。
到目前为止,我已经使用 ECS 创建了 2 个 EC2 实例,它们运行一个容器,每个实例都有一个侦听端口 3000 的应用程序。
对于每个实例,我都可以浏览到指定端口 3000 的 IPv4 公共 IP 并访问容器化应用程序。我能够按预期登录并使用该应用程序。
所以我认为接下来要做的正确的事情是设置一个 ELB,它不仅可以平衡负载(!)而且还可以处理端口转发。
ELB 有一个 80 端口的监听器,我有一个目标组,我在 3000 端口上注册了我的 ECS 实例。
然后,我将 ELB 的 DNS 名称(即my-load-balancer-123456789.eu-west-1.elb.amazonaws.com)弹出到我的浏览器中,并显示了我的应用程序的登录页面。
在我真正登录之前一切顺利。然后我会看到错误消息:
ERR_TOO_MANY_REDIRECTS: my-load-balancer-123456789.eu-west-1.elb.amazonaws.com 重定向了你 太多次了。
我有 2 个问题
1:为什么会发生重定向循环?
2:我应该知道哪些诊断工具可以帮助我在未来解决此类问题?
更新:顺便说一句,我已尝试清除所有浏览器 cookie。
任何帮助表示赞赏。
【问题讨论】:
-
尝试使用
curl --location -v http://elb-example-name.elb.eu-west-1.amazonaws.com访问该站点......您应该会看到更多关于这里发生的事情的证据......或者查看浏览器的开发人员工具中的请求/响应行为。您的应用程序可能正在这样做,原因与传入请求包含平衡器的主机名这一事实有关,而不是它期望看到的。 -
哦,使用 curl 进行第二次测试,使用附加选项
-H 'Host:example.com其中example.com是您的应用程序期望的主机名。看看行为是否有差异。 -
对我来说,这是 IIS 中的 URL 重写规则,它将 http 重定向到 https。相反,我在 IIS 中禁用了该规则,并在 AWS ALB 中设置了相同的规则,一切正常
标签: amazon-web-services portforwarding amazon-elb redirect-loop