AWS Load Balancer ERR_TOO_MANY_REDIRECTS

时间:2017-03-10 10:10:19

标签: amazon-web-services portforwarding amazon-elb redirect-loop

我第一次进入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。

任何帮助表示感谢。

2 个答案:

答案 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)

我遇到了同样的问题,这就是为我解决的问题:

  1. 我在负载平衡器上将端口80和443配置为侦听器-后者需要使用Amazon证书管理器(https://aws.amazon.com/certificate-manager/)来开始为服务器管理证书。
  2. 我为服务器上的端口80保留了以下重定向规则-“重定向/ https://www.example.com
  3. 我将SSL设置从“ SSLEngine on”更改为“ SSLEngine off”

最后一点非常重要,因此您不会陷入Jeremy上面提到的无限循环中。

我希望这对某人有帮助,因为我在一家有状态的应用程序上一直被困在这里,而我正在咨询一家有状态的应用程序,等待上线。