在 ALB 监听规则中,可以使用通配符 * 来匹配多个不同的路径。例如,我们可以将所有以 /api 开头的请求转发至后端服务:
http://example.com/api/*
这将匹配以下路径:
/api/users/api/posts/api/comments但是,通配符只能用于路径的末尾,不能出现在路径的中间或开头。
如果需要更复杂的路径匹配,可以使用正则表达式。例如,可以使用以下规则将所有以 /v1/users 或 /v2/users 开头的请求转发至不同的后端服务:
http://example.com/(v1|v2)/users/(.*)
这将匹配以下路径:
/v1/users/123/v1/users/456/v2/users/789示例代码:
resource "aws_alb_listener_rule" "api_rule" {
listener_arn = aws_alb_listener.external.arn
priority = 100
action {
type = "forward"
target_group_arn = aws_alb_target_group.api.arn
}
condition {
path_pattern {
values = ["/api/*"]
}
}
}
resource "aws_alb_listener_rule" "users_rule" {
listener_arn = aws_alb_listener.external.arn
priority = 200
action {
type = "forward"
target_group_arn = aws_alb_target_group.users.arn
}
condition {
path_pattern {
values = ["(v1|v2)/users/(.*)"]
}
}
}
以上示例代码创建了两个 ALB 监听规则,分别匹配以 /api 或以 /v1 或 /v2 开头的请求,并将它们转发至不同的后端服务。注意,路径匹配规则是包含在 condition 中的,可以使用 path_pattern 传