我第一次进入AWS时遇到了设置负载均衡器(ELB)的问题。
到目前为止,我已经使用ECS创建了两个运行容器的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重定向了你 太多次了。
我有两个问题
1:为什么会发生重定向循环?
2:我是否应该知道哪些诊断工具可以帮助我将来解决这类问题?
更新:我已尝试清除所有浏览器Cookie btw。
任何帮助表示感谢。
答案 0 :(得分:0)
当服务器本身进行重定向时,此问题非常普遍。 AWS有一个guide,用于指示如何防止这些问题。
以下内容导致了之间的重定向无限循环 负载平衡器和后端Web服务器:
- Web服务器上用于将HTTP请求定向到HTTPS的重写规则强制请求将端口443用于负载上的HTTPS通信 平衡器。
- 负载平衡器仍将请求发送到端口80上的后端Web服务器。
- 后端Web服务器将请求重定向到负载均衡器上的端口443。
返回错误 ERR_TOO_MANY_REDIRECTS ,并且请求 从来没有。
要解决此问题,请使用以下命令更改网络服务器的重写规则 HTTP请求的X-Forwarded-Proto header仅在以下情况下适用 客户端协议是HTTP。忽略所有其他规则的重写规则 客户端使用的协议。
注意:如果您使用的是应用程序负载平衡器,请使用redirect actions 重定向流量。
答案 1 :(得分:-1)
我遇到了同样的问题,这就是为我解决的问题:
最后一点非常重要,因此您不会陷入Jeremy上面提到的无限循环中。
我希望这对某人有帮助,因为我在一家有状态的应用程序上一直被困在这里,而我正在咨询一家有状态的应用程序,等待上线。