基于路径的路由到 cloudfront 和 ec2

Mil*_*daD 5 amazon-s3 amazon-ec2 amazon-web-services amazon-cloudfront

所以目前我们有两个 ec2 实例(假设 A 和 B)和一个云前端。

如果用户访问 www.appdomain.com/app,则用户应该被路由到 cloudfront SPA 页面。但是,如果用户访问 www.appdomain.com,则应将用户路由到 EC2 实例 A,如果用户访问 www.appdomain.com/api,则应路由到 EC2 实例 B。

所有这些应用程序必须在同一个域中。

现在我们了解了如何使用应用程序负载均衡器设置路径规则,但也想知道如何将其设置为 cloudfront。

更新:总而言之,问题是我们如何将 /app 路由到 cloudfront / 和 /api 到 ec2。

Mic*_*bot 10

所有这些应用程序必须在同一个域中。

在这种情况下,对该域的每个请求都必须首先通过 CloudFront 。

您的 DNS 记录需要指向 CloudFront(而不是 ALB),然后 CloudFront 负责将请求路由到适当的目标——通过 ALB 到 EC2 实例,到 S3 存储桶,到您需要请求去的任何地方- 这些东西中的每一个都称为内容来源

一旦源由其各自的域名(不是您站点的域名,而是专用于相关资源的域名)指定,您就可以定义 CloudFront路径模式来选择接收每个模式的请求的源(例如/api*)。

一旦您的 DNS 更改为指向 CloudFront,所有请求都会首先到达那里,然后移交给下一个服务,除非 CloudFront 具有所请求对象的缓存副本——在这种情况下,CloudFront 将从其缓存中提供服务,并且什么都不会发送到原点。

您不能从 ALB 路由到 CloudFront,但可以从 CloudFront 路由到 ALB。

如果不使用能够匹配路径并代表请求者获取内容的反向代理,就无法将域细分为多个不同的基于路径的内容来源——HTTP 和 DNS 不支持此类功能。CloudFront 除了提供 CDN 服务,也是一个反向代理。

ALB 当然也是一个反向代理,但不像CloudFront支持那么多不同类型的内容来源——ALB 只支持 EC2 实例,你数据中心的服务器(在这种情况下,ALB 必须有一个 VPN 路径以到达它们),并且 Lambda 用作内容来源。CloudFront 几乎可以使用任何内容作为内容源,只要它使用 HTTP/HTTPS 并且可以通过 Internet 访问。(选择一个有点随机的例子,CloudFront 甚至可以使用来自其他供应商的服务——比如 Google Cloud Storage 存储桶——作为内容来源,如果这是你需要做的事情,无论出于何种原因......因为这些是可通过公共 Internet 上的 HTTP 访问。)