AWS 负载均衡器 ERR_TOO_MANY_REDIRECTS

ETF*_*fax 5 portforwarding redirect-loop amazon-web-services amazon-elb

我第一次使用 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。

任何帮助表示赞赏。

Jer*_*emy 8

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

以下导致负载均衡器和后端 Web 服务器之间的重定向无限循环:

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

错误ERR_TOO_MANY_REDIRECTS返回,并且永远不会提供请求。

要解决此问题,请使用X-Forwarded-Proto 标头更改 Web 服务器的重写规则 HTTP 请求,以仅在客户端协议为 HTTP 时应用。忽略客户端使用的所有其他协议的重写规则。

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