2017-04-05 更新
在去年夏天推出具有基于路径的路由支持的新 Application Load Balancer 之后(请参阅之前的更新),AWS 现在还为 AWS Application Load Balancer 添加了基于主机的路由支持:
[...] 您现在可以创建 Application Load Balancer 规则,根据Host标头中指定的域名路由传入流量。对api.example.com的请求可以发送给一个目标组,对mobile.example.com的请求可以发送给另一个目标组,而所有其他(通过默认规则)可以发送给第三个目标组。您还可以创建结合基于主机的路由和基于路径的路由的规则。这将允许您将请求路由到api.example.com/production和
api.example.com/sandbox到不同的目标组。
2016-08-11 更新
AWS 刚刚(2016 年 8 月 11 日)为 Elastic Load Balancing 服务推出了新的 Application Load Balancer,旨在提高实时应用程序、微服务、基于容器的架构和流式应用程序的灵活性和性能:
这个新的负载均衡器也支持 WebSocket 协议和 HTTP/2,运行在应用层,提供基于内容的路由支持。这允许 Application Load Balancer 跨多个服务或运行在一个或多个 Amazon Elastic Compute Cloud (Amazon EC2) 实例上的容器路由请求,从而有助于降低成本并简化服务发现。[强调我的]
正如介绍性博客文章中所强调的那样,ELB 的这个新的应用程序负载均衡器选项 [...] 在第 7 层运行并支持许多高级功能 [其中] 原始选项(现在称为 Classic Load Balancer)仍然可用于您并继续提供第 4 层和第 7 层功能。
更具体地说,ELB 现在支持手头的场景,因为每个 Application Load Balancer 允许您定义多达 10 个基于 URL 的规则来将请求路由到目标组(随着时间的推移, AWS 计划让您访问其他路由方法)。
初步答案
这是不可能的 - Amazon ELB主要(但见下文)提供传输层负载平衡(OSI第 4 层),其负载平衡决策仅基于 TCP 连接,但忽略应用程序有效负载。后者将允许应用程序层负载平衡(OSI第 7 层),其中应用程序有效负载确实被考虑到负载平衡决策。
Amazon ELB 中的默认配置实际上为 HTTP/HTTPS/SSL 提供了基本的应用程序级别支持(例如终止 SSL 连接和插入X-Forwarded-*
标头),但您无法调整此配置;换句话说,ELB 确实在这里查看了 HTTP 请求,但是在这方面您无法控制 ELB 行为。
这在为您的负载均衡器选择侦听器中进行了更详细的解释,例如:
将 TCP/SSL(第 4 层)与 Elastic Load Balancing 结合使用
当您对前端和后端连接都使用 TCP 时,您的负载均衡器会将请求转发到后端实例,而不修改标头。此配置也不会为会话粘性或 X-Forwarded-* 标头插入 cookie。
[...]
将 HTTP/HTTPS(第 7 层)与 Elastic Load Balancing 结合使用
当您对前端和后端连接使用 HTTP(第 7 层)时,负载均衡器会解析请求中的标头并终止连接,然后再将请求重新发送到已注册的实例。这是 Elastic Load Balancing 提供的默认配置。
[强调我的]
架构概述还提供了说明和更多详细信息。