AWS NLB:根据路径将请求转发到单个主机的不同端口

AWS NLB: forwarding request to different ports of a single host based on Path

使用此流程:

外部世界 --> AWS API 网关 ---> VPC Link ---> 网络负载均衡器 ---> 我的单个 EC2 实例

如何配置 AWS 网络负载均衡器,以便:

  1. https://myapp.com 的请求被路由到我的 EC2 实例的端口 80

  2. https://myapp.com/api/* 的请求被路由到我的 EC2 实例的端口 3000

?

目前我只在 NLB 上配置了一个侦听端口 80 的侦听器,来自 API 网关的所有流量都路由到我的 EC2 实例的端口 80

我发现在 Application Load Balancer 中,您可以配置将路径映射到不同端口的“规则”:Path based routing in AWS ALB to single host with multiple ports

这对 NLB 可用吗?

网络负载均衡器无法做到这一点,因为它在没有路径概念的网络堆栈级别上运行。

NLB 在第 4 层运行,支持 TCP 和 UDP 协议。这些本质上在两台机器上的端口之间创建了一个连接,允许数据在它们之间流动。

HTTP(S) 中的路径路径是第 5 层以上的概念,属于 HTTP 协议。 NLB 无法使用它们,因为它只能根据保证在那里可用的数据工作。

您可以使用应用程序负载均衡器作为网络负载均衡器的目标,然后在那里配置基于路径的规则,因为 ALB 是第 5 层以上的负载均衡器并且理解第 5 层协议 HTTP。

这是一篇详细介绍此内容的博客:Application Load Balancer-type Target Group for Network Load Balancer