Aws路由到不同的ELB

时间:2016-02-15 15:36:50

标签: amazon-web-services nginx amazon-ec2 amazon-elb amazon-route53

使用aws工具,根据URI将流量路由到不同的EC2实例的最佳方法是什么? 例如:

www.website.com/login - > EC2实例1 www.website.com/backoffice - > EC2实例2

我知道我可以放一个nginx并通过它路由所有传入的互联网流量,但是有更简单的解决方案吗?

2 个答案:

答案 0 :(得分:4)

ELB不支持基于路径(或任何其他请求参数)将HTTP请求路由到不同的后端。预期给定ELB的所有后端都能够满足所有请求。

实现这一目标的唯一方法"无服务器"使用AWS组件 - 不使用像ELB背后的Nginx或HAProxy这样的东西 - 而不重定向到不同的子域 - 是为每个独立的应用服务器集合创建一个ELB,然后将CloudFront用于整个站点。 CloudFront允许您声明多个源服务器(每个ELB一个),然后使用缓存行为路径模式来确定哪些路径路由到哪个源(在本例中为哪个ELB)。

请注意,即使您不需要缓存(可以选择性地禁用),这也是CloudFront的完全有效的用例。

作为奖励,这也使得将存储在S3中的静态内容集成到您的站点中变得简单,因为您还可以将一个或多个S3存储桶声明为Origin服务器,并且CloudFront将直接将请求发送到S3以获取匹配路径

答案 1 :(得分:0)

执行此操作的常用方法是使用两个ELB并使用子域名将流量路由到其特定的ELB:

www.website.com/login -> login.website.com
www.website.com/backoffice -> backoffice.website.com 

如果需要,实例可以重定向到站点上的特定文件夹。同样,现有网站可以重定向到子域特定的URI。