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

如何在AWS ALB中基于host-header和path-pattern两个条件实现流量路由

解决方案

AWS ALB 原生支持单条监听器规则同时匹配host-header和path-pattern两个条件,你之前遇到的单条件块仅支持一种匹配类型的限制,不代表单条规则只能配置一个匹配条件,正确配置方法如下:

1. AWS 控制台配置方式

在ALB对应监听器的「添加规则」页面,依次添加两个匹配条件即可:

  • 第一个条件选择「主机头」,输入需要匹配的域名(例如domain-one.com、another-domain.com)
  • 第二个条件选择「路径」,输入需要匹配的路径模式(例如/web/*、/media/files/*)
  • 最后设置转发动作到对应的目标组,规则触发逻辑为所有条件同时满足才会执行转发,和Kubernetes Ingress的逻辑完全一致。

2. Terraform 配置方式

Terraform的aws_lb_listener_rule资源支持传入多个独立的condition块,每个块对应一种匹配类型,多个条件之间默认是“与”逻辑,示例配置如下:

# 匹配 domain-one.com 和 another-domain.com 下 /web、/media/files 路径的路由
resource "aws_lb_listener_rule" "web_multi_domain" {
  listener_arn = aws_lb_listener.http.arn
  priority     = 100

  condition {
    host_header {
      values = ["domain-one.com", "another-domain.com"]
    }
  }

  condition {
    path_pattern {
      values = ["/web/*", "/media/files/*"]
    }
  }

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

# 匹配 www.domain-one.com 下 /api 路径的路由
resource "aws_lb_listener_rule" "api_domain_one" {
  listener_arn = aws_lb_listener.http.arn
  priority     = 101

  condition {
    host_header {
      values = ["www.domain-one.com"]
    }
  }

  condition {
    path_pattern {
      values = ["/api/*"]
    }
  }

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

单台ALB最高支持数千条监听器规则,完全可以满足多域名、多路径的路由需求,不需要为每个域名单独创建ALB。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 12:21:03