我一直在第一次浸入AWS,遇到了一个问题,试图设置负载平衡器(ELB)。
到目前为止,我已经使用EC创建了2个EC2实例,这些实例正在运行一个容器,每个容器都在端口3000上侦听一个应用程序。
对于每个实例,我都可以浏览其IPv4公共IPS指定端口3000并进入容器化应用程序。我可以按预期登录并使用该应用程序。
所以我认为接下来要做的正确的事情是设置ELB,不仅可以平衡负载(!),还可以处理端口转发。
ELB有一个端口80侦听器,我有一个目标组,我在端口3000上注册了ECS实例。
然后,我将ELBS 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 btw。
任何帮助。
当您由服务器本身进行重定向时,此问题非常普遍。AWS有有关如何防止这些问题的指南。
以下导致无限的回路 加载平衡器和后端网络服务器:
- Web服务器上的重写规则将HTTP请求指向HTTPS部队请求,以将端口443用于加载上的HTTPS流量 平衡器。
- 负载平衡器仍将请求发送到端口80的后端Web服务器。
- 后端Web服务器将请求重定向到负载平衡器上的端口443。
错误 err_too_many_redirects 已返回,请求为 从不服务。
要解决此问题,请使用Web服务器的重写规则 HTTP请求的X-Forwarded Proto标题仅在 客户协议是http。忽略所有其他所有其他规则 客户使用的协议。
注意:如果您使用的是应用程序负载平衡器,请使用重定向操作 改用流量。
我遇到了同一问题,这就是为我解决的问题:
- 我将两个端口80和443配置为负载平衡器上的听众 - 后者需要使用Amazon证书经理(https://aws.amazon.com/certificate-manager/)开始管理我的服务器的证书。
- 我保留了服务器上端口80的以下重定向规则 - " redirect/https://www.example.com"
- 我将SSL设置从" sslengine on"更改为" sslengine off"
最后一点非常重要,因此您不会陷入上面提到的杰里米的无限循环中。
我希望这对某人有所帮助,因为我一直在与一家状态应用程序中陷入困境的一家公司,我正在咨询我等待上线的公司。
在我们的情况下,我们遇到了同样的错误,试图在AWS LB级别进行一些重定向,但没有运气。后来,我看到了配置该站点的EC2实例具有IIS重定向规则,我禁用所有重定向规则,并将这些重定向规则应用于AWS Load Load Balancer而不是IIS。站点运行正常。似乎AWS LB仅允许在LB级别重定向。IIS级别不允许。BCOZIIS发送重定向循环错误。
对我来说,这是完全出乎意料的原因。事实证明,这不是一个无限的循环问题。证书名称不匹配引起了问题(但我遇到了" err_too_many_redirects:[我的负载均衡器DNS名称]重新定向了您很多次)。
AWS服务我正在使用:Lightsail实例,Lightail Load Balancer,S3桶,53号公路和Lightsail CDN。
我使用此工具来检测SSL证书错误:https://www.sslabs.com/ssltest/
然后,我遵循以下链接的说明来解决证书问题:在Amazon Lightsail上托管的Bitnami堆栈中的SSL证书