【问题标题】:Serving the static content (EC2) and REST services (API Gateway) from the same address从同一地址提供静态内容 (EC2) 和 REST 服务 (API 网关)
【发布时间】:2018-02-07 13:44:36
【问题描述】:

我有一个网站,我使用在 EC2 实例中运行的 express 服务。但是这个 EC2 只提供静态内容(html、js、css),而动态部分来自 API Gateway。现在,这两个有不同的 IP(和域),这意味着我必须处理从网页访问 API 网关的 CORS 问题。如果我能以某种方式通过同一个地址提供静态内容和动态内容,那就更好了。

在我看来,这可以通过两种方式完成。我可以在同一主机上同时为它们提供服务,但端口不同,我不确定它是否能解决相同的 CORS 问题。但我确信它不会面临 CORS 问题的另一种方法是在某些特定的子文件夹下提供 API Gateway。就像 http://example.com/api 一样,静态内容是从除此之外的任何 url 提供的。

有谁知道我该怎么做? CloudFront 是我需要的吗?还是弹性负载均衡器?

【问题讨论】:

    标签: amazon-web-services aws-api-gateway


    【解决方案1】:

    是的,CloudFront 是您在此场景中所需要的。

    Application Load Balancer 也可以进行基于路径的路由,但它不支持将 API Gateway 作为目标。

    默认情况下,CloudFront 可以将单个域下的请求路由到最多 25 个目的地的正确选择,使用最多 25 个路径(匹配)模式(这两个限制都可以根据请求增加,但现在听起来像,您只需要 2 个,/api/* 到 API,默认 * 路由到 EC2)。您还可以利用此设置将一些静态内容放入 S3 存储桶中,并减轻 EC2 中服务器的一些负载。

    对于此配置,您需要使用 区域 端点配置 API 网关部署,而不是 边缘优化 端点。这是因为边缘优化的终端节点已经使用了 CloudFront 基础设施的一部分(您无法对其进行配置),因此在您自己的 CloudFront 分配后面使用边缘优化的终端节点会通过 CloudFront 网络发送每个请求和响应两次,从而增加延迟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 2014-12-06
      • 1970-01-01
      • 2015-07-12
      • 2015-11-28
      相关资源
      最近更新 更多