使用 AWS 在特定路径下提供单页应用程序

Serve single page app under specific path with AWS

目前我 mydomain.com 指向一个 Django EC2 实例,ABL 在它前面,CF 在 ABL 前面。 现在我需要在特定路径下提供 React 单页应用程序 mydomain.com/my-specific-path(当然一切都在 HTTPS 下)

我尽我所能在 S3 存储桶中托管我的 SPA,并使用 CF 将调用重定向到该 S3。但是不可能以这种方式通过 HTTPS 为应用程序提供服务(因为 S3 托管和子文件夹)。

我现在正在考虑在我的 Django 应用程序前设置一个反向代理。但我不知道这是否是最好的解决方案,我也不知道最好的方法。

能否请您提供一些有关如何在特定路径下提供 SPA 服务的见解?

提前致谢。

您需要:

1) 将您的 ALB 作为源添加到您的 CloudFront 分配

2) 将您的 S3 存储桶 网站 URL 添加到您的 CloudFront 分配

注意: 从此处自动填充的下拉框中添加 S3 作为源将不适用于在 S3 之外托管网站。此功能仅用于托管静态文件。

2a) 可选择使用存储桶策略中的条件将您的 S3 存储桶锁定到 CloudFront,该条件检查 header 只有 CloudFront 和您的 S3 存储桶知道的值

3) 将 CloudFront 分配中的默认根 object 设置为 index.html

4) 将您的 React 应用程序 上传到 S3 存储桶 中的 sub-folder,而不是根目录中。此 sub-folder 必须与您在 CloudFront

中为 React 应用源设置的路径相匹配

5) 在指向您的 ALB 的 CloudFront 分配中设置默认行为

6) 在您的 CloudFront 分配中设置一个行为,将 my-specific-path/* 指向您的 S3 存储桶来源

7) 使用 AWS Certificate Manager 在您的 CloudFront 分配上终止 SSL

此设置应该为您的 Django 应用程序和托管在 S3 中的 React 应用程序提供 SSL。

我有这个 运行,屏幕截图如下: