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

如何在同一应用负载均衡器上将不同HTTPS子域名映射到不同ECS容器

解决方案

完全可以实现,你不需要创建额外的负载均衡器,通过AWS应用负载均衡器(ALB)的主机头路由规则即可完成单ALB多子域名HTTPS转发,Docker ECS集成原生支持该配置。


1. 前置准备

  • 先在AWS Certificate Manager(ACM)中申请覆盖两个子域名的SSL证书(也可以分别申请两个证书),证书区域必须和你ECS集群的区域一致。
  • 提前规划好两个服务对应的子域名,后续DNS解析需要指向ALB的公网地址。

2. 基于docker-compose.yml配置路由规则

Docker ECS集成提供了x-aws-lb-rules扩展字段,可以直接声明ALB的路由规则,无需手动修改AWS资源,示例配置如下:

version: '3.8'
services:
  # 主应用服务,对应子域名 app.yourdomain.com
  app:
    image: 你的应用镜像地址:版本
    ports:
      - "80:80" # 服务内部监听端口,ALB转发到目标组时用HTTP即可,HTTPS卸载在ALB层完成
    x-aws-lb-rules:
      - host: app.yourdomain.com
        priority: 10 # 优先级数值越小越先匹配
        action: forward
    deploy:
      replicas: 2

  # 依赖Web服务,对应子域名 service.yourdomain.com
  dependent-web:
    image: 你的Web服务镜像地址:版本
    ports:
      - "80:80"
    x-aws-lb-rules:
      - host: service.yourdomain.com
        priority: 20
        action: forward

# 统一配置ALB的HTTPS监听
x-aws-loadbalancer:
  type: application
  listeners:
    - port: 443
      protocol: HTTPS
      certificates:
        - "arn:aws:acm:你的区域:你的AWS账号ID:certificate/你的ACM证书ID" # 替换为实际证书ARN
      default_action:
        type: fixed-response
        statusCode: 404
        contentType: text/plain
        content: "Not Found"

3. 工作原理

  • 上述配置会在现有ALB的443HTTPS监听下自动创建两条路由规则,基于请求头中的Host字段匹配子域名,分别转发到两个服务对应的独立目标组,两者流量完全隔离。
  • 单个ALB默认支持最多100条路由规则,足够覆盖多子域名的转发需求。

如果你不想修改docker-compose配置,也可以手动到AWS控制台操作:进入已创建的ALB的443监听配置,新增两条主机头匹配规则,分别对应两个子域名,转发到对应的ECS服务目标组即可。注意手动修改的配置如果后续重新用docker compose up部署可能会被覆盖,建议优先通过配置文件声明规则。


4. 验证方式

部署完成后:

  • 分别访问两个子域名的HTTPS地址,确认返回对应服务的内容
  • 到AWS EC2控制台的负载均衡器页面,查看443监听下的路由规则是否已正确创建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:06:02