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。
任何帮助表示赞赏。
当您由服务器本身完成重定向时,此问题很常见。AWS 有一个关于如何防止这些问题的指南。
以下导致负载均衡器和后端 Web 服务器之间的重定向无限循环:
- Web 服务器上用于将 HTTP 请求定向到 HTTPS 的重写规则强制请求将端口 443 用于负载均衡器上的 HTTPS 流量。
- 负载均衡器仍然在端口 80 上向后端 Web 服务器发送请求。
- 后端 Web 服务器将请求重定向到负载均衡器上的端口 443。
错误ERR_TOO_MANY_REDIRECTS返回,并且永远不会提供请求。
要解决此问题,请使用X-Forwarded-Proto 标头更改 Web 服务器的重写规则 HTTP 请求,以仅在客户端协议为 HTTP 时应用。忽略客户端使用的所有其他协议的重写规则。
注意:如果您使用的是应用程序负载均衡器,请改用重定向操作 来重定向流量。
| 归档时间: |
|
| 查看次数: |
14227 次 |
| 最近记录: |