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

如何通过Terraform为AWS LB的不同Target Group指定域名

解决方案

要实现不同域名流量转发到对应Target Group,核心是给ALB的监听器添加基于Host Header的路由规则,通过匹配请求的Host头字段,将流量转发到指定目标组。

实现步骤

  1. 确保你的ALB已经配置了监听端口(比如HTTP 80或HTTPS 443),如果还没创建监听器,先补充创建。
  2. 针对每个域名,创建一条监听器规则,规则的匹配条件设为请求的Host头等于对应域名,动作设置为转发到对应的Target Group。

Terraform代码示例

假设你已有的资源标识如下:

  • ALB:aws_lb.test_lb
  • 监听器(以HTTP 80为例):aws_lb_listener.test_lb_http
  • 目标组1:aws_lb_target_group.test_staging_tg
  • 目标组2:aws_lb_target_group.test2_staging_tg

添加以下规则资源:

# 匹配myapp.example.com,转发到test_staging_tg
resource "aws_lb_listener_rule" "myapp_rule" {
  listener_arn = aws_lb_listener.test_lb_http.arn
  priority     = 10

  action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.test_staging_tg.arn
  }

  condition {
    host_header {
      values = ["myapp.example.com"]
    }
  }
}

# 匹配myapp2.example.com,转发到test2_staging_tg
resource "aws_lb_listener_rule" "myapp2_rule" {
  listener_arn = aws_lb_listener.test_lb_http.arn
  priority     = 20

  action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.test2_staging_tg.arn
  }

  condition {
    host_header {
      values = ["myapp2.example.com"]
    }
  }
}

关键说明

  • priority:规则的优先级,数值越小优先级越高,确保不会有冲突的规则覆盖(比如如果有默认规则,优先级要比默认规则低)。
  • host_header 条件:精确匹配请求的Host头,也支持通配符(比如*.example.com),这里根据你的需求用精确域名即可。
  • 如果是HTTPS监听器,确保已经配置了包含这两个域名的SSL证书(可以用AWS Certificate Manager的证书)。

补充:如果还没创建监听器

如果你的ALB还没有监听器,先添加以下代码创建HTTP 80监听器(HTTPS的话类似,需要指定证书ARN):

resource "aws_lb_listener" "test_lb_http" {
  load_balancer_arn = aws_lb.test_lb.arn
  port              = "80"
  protocol          = "HTTP"

  # 默认规则:如果没有匹配到其他规则,可设置转发到某个默认目标组或返回固定响应
  default_action {
    type = "forward"
    target_group_arn = aws_lb_target_group.test_staging_tg.arn # 可选,也可以设为返回404
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:36:14