基于请求标头的路由(使用 AWS Application Load Balancer)

Posted

技术标签:

【中文标题】基于请求标头的路由(使用 AWS Application Load Balancer)【英文标题】:Routing based on request headers (using AWS Application Load Balancer) 【发布时间】:2017-01-14 23:19:40 【问题描述】:

第 7 层负载平衡器更复杂、更强大。它 检查数据包,可以访问 HTTP 和 HTTPS 标头,并且(武装 有更多信息)可以做一个更聪明的工作来传播 加载到目标。

https://aws.amazon.com/blogs/aws/new-aws-application-load-balancer/

我了解 AWS Application Load Balancer 可以访问 HTTP(S) 请求标头,但我只能看到您如何通过路径进行路由。有人可以解释我如何根据user-agent 标头进行路由。如果不可行,请建议另一种 AWS 方法。

【问题讨论】:

现在可以了:aws.amazon.com/blogs/aws/… 【参考方案1】:

直到 2017-05-26 ALB 没有基于标头的路由。随着 2017 年 4 月 5 日的更新,它包含了Host based routing。目前它仅支持基于路径和主机的路由。您可以访问here 了解最新的 AWS 信息。

如果你想基于 headers 进行路由,目前 ALB 中没有选项。 您必须有一个附加层,例如代理/nginx 服务器。 流程可以如下所示。

    客户端调用https://example.com ALB 的 DNS 配置为 example.com ALB 附加了具有 nginx 实例的目标组。 Nginx 实例使用标头信息路由到相应的负载均衡器。 (例如,如果 customerId 是 123 路由到 ELB 1 否则路由到 ELB 2) 两个 ELB 连接了不同的 EC2 实例。

但听说 AWS 正在处理基于标头的路由请求。

【讨论】:

【参考方案2】:

对于现在查看的任何人,截至 2019 年 3 月 27 日,ALB now support 路由基于除 Host 标头之外的 HTTP 标头。

【讨论】:

以上是关于基于请求标头的路由(使用 AWS Application Load Balancer)的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 Origin 标头时找不到路由

基于 Content-Type 标头的 Expressjs 路由器

AWS-amplify 在请求中包含 cognito Authorization 标头

从查询字符串中的令牌授权 AWS API Gateway 请求

CORS,防止带有授权标头的请求预检

Cors - 如何处理需要自定义标头的预检选项请求? (AWS:使用 vpc 端点的私有 API 网关)