【发布时间】:2021-03-30 12:06:46
【问题描述】:
背景
我有一个 EC2 实例和一个在 3030 端口上运行的 docker 容器。
在我的 docker 容器中,有一个 nodejs 服务器,其中包含 REST api 设置。
我只是创建了一个应用程序负载均衡器,其目标组(HTTP:80)指向上面的 ec2 实例,以便设置公共 http 端点以发送 api 请求
负载均衡器的 DNS 名称是 my-docker-test-server-dev-123456789.ap-southeast-1.elb.amazonaws.com。
问题
我试图发送http请求POST https://my-docker-test-server-dev-123456789.ap-southeast-1.elb.amazonaws.com/login
为了在 Postman 上尝试登录 api,
但发生错误
HTTP 504: Gateway timeout
更新
我正在为负载均衡器使用默认安全组。
入站规则
Type Protocol Port range Source Description - optional
All traffic All All 0.0.0.0/0 –
All traffic All All ::/0 –
All traffic All All sg-d987a2bc / default –
更新 2
现在按照评论的建议更新了目标组以指向 HTTP:3030,但仍然出现相同的错误。
组的健康检查:
unhealthy
Request timed out
更新 3
EC2 实例 > 安全性
入站规则
Port range Protocol Source Security groups
22 TCP 0.0.0.0/0 launch-wizard-9
【问题讨论】:
-
安全组呢?如果您在没有 ALB 的情况下访问它,您的应用是否可以正常工作?
-
@Marcin 更新了上面的安全组。我可以访问ec2实例,并且ec2中的docker容器运行正常。
-
如果你的 docker 在 3030 上工作,为什么你的目标组使用 80 端口?
-
@Marcin 将目标组端口更新为 3030,但仍然是同样的错误
-
@Marvin 现在可以使用了!我想我对 ELB 和实例的关系以及安全组的关系仍然有些困惑。您能否在评论中提供简要说明,以便我接受您的回答?
标签: node.js amazon-web-services docker amazon-ec2