使用AWS在特定路径下服务单页应用

时间:2019-06-03 02:13:44

标签: django amazon-web-services amazon-s3 single-page-application

此刻,我有mydomain.com指向一个Django EC2实例,该实例前面有ABL,而CF位于该ABL前面。 现在,我需要在特定路径mydomain.com/my-specific-path(当然,所有内容都在HTTPS下)下提供React单页应用程序

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

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

能否请您提供一些有关如何按照特定路径提供SPA的见解?

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要:

1)将ALB作为原始添加到CloudFront发行版中

2)将您的S3存储桶网站URL 作为源添加到CloudFront发行版中

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

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

3)将CloudFront分发中的默认根对象设置为index.html

4)将您的React应用上传到S3存储桶中的子文件夹,而不是根目录中。该子文件夹必须与您在CloudFront上的React应用程序原点上设置的路径匹配

5)在CloudFront发行版中设置一个指向您的ALB的默认行为

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

7)使用AWS Certificate Manager终止CloudFront发行版上的SSL

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

我已经运行了,下面的屏幕截图:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here