我有一个ecs服务,运行一个fargate容器,其中有django服务器,这是容器的主机映射
{
"name": "django-port",
"containerPort": 443,
"hostPort": 443,
"protocol": "tcp",
"appProtocol": "http2"
}
我自动为容器分配了一个公共IP,并允许从我的IP访问安全组,当我通过公共IP连接到端口443时,我可以通过服务器进行访问。 我还将一个应用程序负载均衡器附加到该服务,并在端口 443 上有一个 HTTPS 侦听器,将其转发到以下目标组
我看到该服务的任务已注册到目标组,但运行状况不佳,并且根据监控选项卡,它似乎没有到达该服务,因为我在任何图表中都没有看到响应数据。
当我尝试通过我注册的域访问我的服务器并将其证书附加到 ALB 侦听器时,我遇到超时。 任何帮助将不胜感激!
编辑:SSL 证书已添加到 ALB 侦听器 我添加的用于处理流量的安全组中的规则是:
入境 IPv4 HTTPS TCP 443 0.0.0.0/0
出境 IPv4 所有流量 全部 全部 0.0.0.0/0
您错误地将容器/任务配置为侦听端口
443
(默认 HTTPS 端口),同时提供 HTTP 流量而不是 HTTPS 流量。然后,您已将目标组配置为使用 HTTPS 协议连接到端口 443 上的容器/任务。
现在负载均衡器/目标组正在尝试创建到您的任务/容器的安全 HTTPS 连接,但您的容器上没有安装 SSL 证书,并且不支持 HTTPS 协议,因此连接失败.
您需要将容器配置为侦听其他端口,例如默认 HTTP 端口
80
,并配置目标组以使用 HTTP 协议通过该端口连接到 ECS 任务。
您还需要两个目标组,一组用于 ECS 任务,一组用于负载均衡器。 ECS 任务的安全组应接受容器正在侦听的端口(例如端口
80
)上的入站连接,而负载均衡器的目标组应接受负载均衡器正在侦听的端口上的入站连接 443
。