【问题标题】:AWS Load Balancer ERR_TOO_MANY_REDIRECTSAWS 负载均衡器 ERR_TOO_MANY_REDIRECTS
【发布时间】: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


【解决方案1】:

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

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

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

我希望这对某人有所帮助,因为我已经为这个有状态的应用程序困扰了几周,我正在咨询一家公司等待上线。

【讨论】:

    【解决方案2】:

    当您有由服务器本身完成的重定向时,这个问题很常见。 AWS 有一个guide 说明如何防止这些问题。

    下面会导致一个无限循环的重定向 负载均衡器和后端 Web 服务器:

    • Web 服务器上用于将 HTTP 请求定向到 HTTPS 的重写规则强制请求使用端口 443 进行负载上的 HTTPS 流量 平衡器。
    • 负载平衡器仍然在端口 80 上向后端 Web 服务器发送请求。
    • 后端 Web 服务器将请求重定向到负载平衡器上的端口 443。

    返回错误ERR_TOO_MANY_REDIRECTS,请求是 从未服务过。

    要解决此问题,请使用 X-Forwarded-Proto header 的 HTTP 请求仅适用于 客户端协议是 HTTP。忽略所有其他的重写规则 客户端使用的协议。

    注意:如果您使用的是应用程序负载均衡器,请使用 redirect actions 改为重定向流量。

    【讨论】:

      猜你喜欢
      • 2014-12-18
      • 2020-12-31
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2018-11-05
      • 2020-08-19
      相关资源
      最近更新 更多