You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过ALB连接Fargate上的ECS Django服务,请求协助排查

问题描述

我有一个ECS服务,使用Fargate容器运行Django服务器,容器端口映射配置如下:

{
  "name": "django-port",
  "containerPort": 443,
  "hostPort": 443,
  "protocol": "tcp",
  "appProtocol": "http2"
}
  • 已为容器自动分配公网IP,安全组允许我的IP访问,通过公网IP:443可正常访问服务器
  • 已为服务绑定Application Load Balancer(ALB),配置443端口HTTPS监听器并转发至对应目标组
  • 当前问题:服务任务已注册到目标组但状态不健康,监控无响应数据;绑定ALB监听器的域名访问超时

补充信息:

  • ALB监听器已添加SSL证书
  • 安全组规则:
    • 入站:IPv4 HTTPS TCP 443 0.0.0.0/0
    • 出站:IPv4 所有流量 所有协议 所有端口 0.0.0.0/0
排查步骤

1. 检查目标组健康检查配置

  • 确认健康检查的协议、端口、路径匹配Django服务实际情况:
    • 若Django有自定义健康检查端点(如/health),需确保目标组健康检查路径设置正确
    • 若健康检查用HTTPS协议,需确认容器内Django服务确实在443端口提供HTTPS服务(而非仅容器端口映射443,但服务本身用HTTP)
    • 调整健康检查的超时、间隔时间,避免因Django启动速度慢导致误判
  • 在ECS任务所在VPC内的资源(如同一VPC的EC2实例),手动访问任务私有IP:443/健康检查路径,验证是否能返回200状态码的响应

2. 验证安全组与网络连通性

  • 确认ECS任务的安全组入站规则允许ALB安全组的443端口访问:ALB需要发起健康检查和流量转发,仅允许个人IP的规则无法满足ALB的访问需求
  • 检查ECS任务所在子网的路由表,确保VPC内ALB到任务的路由连通(无需NAT网关,重点是VPC内部路由)
  • 确认目标组的目标类型为IP(Fargate任务使用私有IP注册),且注册的任务私有IP正确

3. 检查ALB与目标组转发配置

  • 确认ALB监听器的转发规则正确指向目标组,且目标组协议(HTTPS)与容器端口协议一致
  • 开启ALB访问日志,查看请求是否到达ALB,以及转发到目标组时的错误类型(如超时、5xx错误)
  • 验证SSL证书有效性,确保域名与证书匹配,避免因证书问题导致连接失败

4. 检查Django服务配置

  • 确认Django的ALLOWED_HOSTS包含ALB域名或任务私有IP,避免因主机头验证失败返回400错误
  • 检查Django服务是否监听0.0.0.0:443(而非仅127.0.0.1),确保容器内服务能接收ALB的请求
  • 查看ECS任务日志,检查是否有健康检查请求到达Django服务,以及服务返回的状态码或错误信息

内容的提问来源于stack exchange,提问作者kirill ras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:06:28