配置AWS ALB将HTTP重定向到HTTPS(ECS Docker服务)遇阻求助
问题排查与解决方案
核心问题梳理
- 基于NGINX的Flask镜像在AWS ECS上可通过任务IP正常访问HTTP/HTTPS,但配置ALB、ACM、Route53后,
demo.mydomain.net无法正常访问:输入域名会被错误重定向到https://demo.mydomain.com(后缀从.net变为.com),后续请求被取消;ALB的DNS地址仅能通过HTTP访问,HTTPS无法使用。
关键排查与修复步骤
1. 域名解析配置校验
- 检查Route53中
demo.mydomain.net的记录:仅保留指向ALB双栈域名(dualstack.my-domain-82823732.us-west-2.elb.amazonaws.com)的A别名记录,删除所有冲突的CNAME记录。 - 用
nslookup demo.mydomain.net或dig demo.mydomain.net验证解析结果,确认返回的IP是ALB的公网IP,无指向demo.mydomain.com的错误解析。
2. ALB监听器规则修正
- 80端口监听器:设置为重定向到443端口,重定向规则的
主机字段必须使用变量#{host}(保留原请求域名),禁止硬编码为demo.mydomain.com——这是导致域名跳转错误的核心原因。 - 443端口监听器:
- 绑定ACM中覆盖
demo.mydomain.net的有效证书(证书必须与ALB同属us-west-2区域)。 - 监听器动作为转发到目标组,目标组协议设为HTTP(ALB到容器建议用HTTP,容器内部自行处理HTTPS)。
- 绑定ACM中覆盖
3. 目标组与ECS关联检查
- 目标组健康检查配置:路径设置为Flask应用的健康检查端点(如
/health),协议为HTTP,端口匹配容器暴露的端口(如80或443)。 - 确认ECS服务已正确关联目标组,且目标组内ECS任务的状态为
健康——若任务不健康,ALB会拒绝转发流量。 - 安全组配置:
- ALB安全组允许80/443端口的公网入站流量。
- ECS任务安全组允许来自ALB安全组的80/443端口入站流量。
4. NGINX容器配置排查
- 检查NGINX配置文件,删除任何强制重定向到
demo.mydomain.com的规则,避免容器内部规则覆盖ALB的重定向设置。 - 确认NGINX监听端口与目标组配置的端口一致,容器已正确暴露该端口。
5. ALB日志分析
- 开启ALB访问日志(存储到S3),查看请求日志:
- 验证重定向请求的目标域名是否正确,是否存在错误的Host头传递。
- 排查443端口请求是否存在证书错误或转发失败记录。
快速验证流程
- 清理Route53中
demo.mydomain.net的冗余记录,仅保留正确的A别名记录。 - 修改ALB 80端口重定向规则,将
主机字段设为#{host}。 - 确认ACM证书覆盖
demo.mydomain.net且区域匹配。 - 检查目标组健康状态,确保ECS任务处于健康状态。
内容的提问来源于stack exchange,提问作者Calamari
相关产品推荐
相关产品推荐

