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

如何使用Docker与AWS将多服务部署到子域名,实现Django多版本站点按子域名访问

实现方案

首先明确:不需要为两个服务单独配置负载均衡器,通过AWS应用负载均衡器(ALB)自带的基于主机头的路由规则,即可实现单个ALB匹配不同子域名、转发请求到对应后端服务,成本更低且维护更简单。

调整Docker Compose配置

你需要在原有配置基础上补充负载均衡的路由规则,修改后的示例配置如下:

x-common-variables: &vars
 ....

# 配置全局ALB
x-aws-loadbalancer:
  name: web-alb
  scheme: internet-facing

services:
  web-prod:
    image: foo/bar:prod
    command: python manage.py runserver 0.0.0.0:80
    environment: *vars
    # 补充LB规则:匹配www.mydomain.com的请求转发到该服务80端口
    ports:
      - target: 80
        x-aws-protocol: http
        x-aws-host: www.mydomain.com

  web-latest:
    image: foo/bar:latest
    command: python manage.py runserver 0.0.0.0:8080
    environment: *vars
    # 补充LB规则:匹配preview.mydomain.com的请求转发到该服务8080端口
    ports:
      - target: 8080
        x-aws-protocol: http
        x-aws-host: preview.mydomain.com

配置Route 53解析

在Route 53的托管zone中添加两条别名A记录,均指向上述配置生成的同一个ALB公网地址:

  • www.mydomain.com 别名记录指向ALB公网域名
  • preview.mydomain.com 别名记录指向同一个ALB公网域名

可选方案:独立负载均衡器配置

如果你的场景需要生产和预览环境的负载均衡完全隔离(比如权限管控、带宽资源独立),也可以为两个服务分别配置独立负载均衡器,只需在每个服务的ports配置下单独声明LB属性即可,该方案会产生两份LB的资源费用,普通场景不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:18:02