AWS是否提供了一种基于目录路径将HTTPS流量路由到两个不同的EC2实例的方法?


10

我想知道AWS产品是否可能实现以下目标?

https://www.example.com/a/->由Apache在EC2实例A上提供

https://www.example.com/b/->由Apache在EC2实例B上提供

为了明确起见,我不希望一个目录路径下的文件与另一目录路径下的文件位于同一服务器实例上。

我了解使用某种类型的代理可能会发生这种情况,但是其中一种AWS产品是否提供了更简单的解决方案。

EC2负载均衡似乎并没有让基于切换的目录路径。路由53在DNS级别上工作,DNS级别没有基于此的路径信息来返回IP。


EC2负载平衡器是如此愚蠢,以至于它不会读取Host:标头并过滤掉虚假流量。他们似乎不太可能会像您所要求的那样添加任何功能,如果查看标头是否对他们来说太大了。幸运的是,他们还有其他选择。
小鸡

Answers:


29

使用AWS Application Load Balancer,它执行基于路径的路由。第二个链接是教程。

简而言之,您可以正常设置ALB,然后按照以下步骤操作(从AWS教程复制):

  • 在“ 侦听器”选项卡上,使用箭头查看侦听器的规则,然后选择“ 添加规则”。指定规则,如下所示:

  • 对于“ 目标组名称”,选择您创建的第二个目标组。

  • 对于路径模式,请指定要用于基于路径的路由的确切模式(例如,/ img / *)。有关更多信息,请参见侦听器规则。

  • 选择保存


谢谢!我最初签出了EC2 Application Load Balancer,通过了向导,但从未真正创建过。向导未提供路径选项。如本教程所指出,必须先创建它,然后再编辑规则。
约瑟夫·施

9

除了Tim的出色回答外,您还可以使用CloudFront实现这一目标。

首先,创建您的发行版,添加EC2实例A和EC2实例B(也可能是负载均衡器,非AWS主机,甚至是S3存储桶)的来源。

然后,设置缓存行为规则以将/ a / *和/ b / *映射到适当的来源。

为此目的使用CloudFront是否有意义取决于您的应用程序和对CDN的需求。


4
这也可能适用,如果你想/a*/b*通过不同的服务,不同的账户,不同的地区,甚至一个路径由内而外AWS和其他运行在其他地方处理的东西来处理。CloudFront有许多用例在概念上根本不需要CDN。
Michael-sqlbot
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.