此刻,我有mydomain.com
指向一个Django EC2实例,该实例前面有ABL,而CF位于该ABL前面。
现在,我需要在特定路径mydomain.com/my-specific-path
(当然,所有内容都在HTTPS下)下提供React单页应用程序
我尽我所能将SPA托管在S3存储桶中,并使用CF将呼叫重定向到该S3。但是,不可能以这种方式通过HTTPS服务该应用程序(因为S3托管和子文件夹)。
我现在正在考虑在Django应用程序前面设置反向代理。但是我不知道这是否是最好的解决方案,也不知道最好的解决方法。
能否请您提供一些有关如何按照特定路径提供SPA的见解?
谢谢。
答案 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。
我已经运行了,下面的屏幕截图: