【发布时间】:2021-08-26 22:37:41
【问题描述】:
我在 AWS ECS 上部署了 Rails 6(与 Puma 一起运行)。有一个 ECS 服务和一个 ECS 任务,任务启动托管我的应用程序的 EC2 实例。我还使用我的 ECS 服务创建了一个应用程序负载均衡器。我向负载均衡器添加了一个 HTTPS 侦听器。我的听众指向一个目标组,该目标组专门通过 HTTP 协议接受流量。
我对请求流程的理解:
HTTPS request from internet:
--> hits AWS load balancer
--> hits HTTPS listener
--> passes traffic using HTTP to Target Group
--> request finally reaches Rails app on Target Group EC2 targets *over HTTP*
这是一个有效的设置吗?我读了这个StackOverflow answer,我的解释是我们只需要为我们的负载均衡器使用HTTPS,而不是Puma,因此不需要目标组。
我还为我的目标组设置了一个通过 HTTP 的健康检查,它期望 301 状态代码响应作为一个健康的目标(因为我的 Rails 配置中有config.force_ssl)。问题是,为什么来自负载均衡器的流量没有被重定向?为什么来自健康检查的流量会被重定向?他们不是都针对同一个目标群体吗?为什么一个请求导致 200 而另一个导致 301?
我画了一张图,试图表达我的问题/困惑/当前的理解:
这是我的负载均衡器和目标组设置:
不确定这是 AWS 问题还是 Puma 问题或其他问题。接受所有想法!谢谢!!
【问题讨论】:
标签: ruby-on-rails amazon-web-services amazon-ecs aws-application-load-balancer