借助 AWS 服务,我们让 Web 应用程序从 S3 存储桶运行,并通过负载均衡器(在 EC2 实例上运行的一组 Node.js 应用程序)通过 REST API 访问数据。
目前我们指定的 URL 如下:
- API负载均衡器: api。somedomain.com
- S3 上的静态 Web 应用程序: somedomain.com
但是这种设置给我们带来了一系列问题,因为请求是这种设置的 CORS。我们可以使用特殊标头解决 CORS,但这不适用于所有浏览器。
我们想要实现的是在同一个域上运行 API,但路径不同:
- API 负载均衡器: somedomain.com /api
- S3 上的静态 Web 应用程序: somedomain.com
其中一个想法是将 API 负载均衡器附加到 CDN,如果查询来自“/api/*”路径,则将所有请求转发到负载均衡器。但这不起作用,因为我们的 API 不仅使用 HEAD 和 GET 请求,还使用 POST、PUT、DELETE。
另一个想法是使用第二个 EC2 实例而不是 S3 存储桶来托管网站(使用一些 Web 服务器,如 nginx 或 apache)。但是,当一切都已经就绪(S3 静态内容托管)时,这会产生过多的开销。此外,如果使用此方案,我们将无法获得 Amazon CloudFront 性能的所有优势。
那么,您能否推荐如何组合负载均衡器和 S3,以便它们在同一个域上运行,但路径不同?(somedomain.com /api上的 API 和somedomain.com上的 Web App )
谢谢!