相关疑难解决方法(0)

如何为Cloudfront上的静态托管网站的子目录设置默认根对象?

如何在Cloudfront上的静态托管网站上为子目录设置默认根对象?具体来说,我想www.example.com/subdir/index.html在用户要求时提供服务www.example.com/subdir.注意,这是用于提供在S3存储桶中保存的静态网站.此外,我想使用原始访问标识将对S3存储桶的访问限制为仅限Cloudfront.

现在,我知道的Cloudfront作品不同于S3和Amazon规定明确:

CloudFront默认根对象的行为与Amazon S3索引文档的行为不同.将Amazon S3存储桶配置为网站并指定索引文档时,即使用户请求存储桶中的子目录,Amazon S3也会返回索引文档.(索引文档的副本必须出现在每个子目录中.)有关将Amazon S3存储桶配置为网站和索引文档的更多信息,请参阅Amazon Simple Storage Service开发人员指南中的Amazon S3上的主机网站章节.

因此,即使Cloudfront允许我们指定默认的根对象,这只适用于www.example.com而不适用于www.example.com/subdir.为了解决这个难题,我们可以将原始域名更改为指向S3给出的网站端点.这很好用,可以统一指定根对象.不幸的是,这似乎与原始访问标识不相容.具体来说,以上链接指出:

切换到编辑模式:

Web分布 - 单击"起源"选项卡,单击要编辑的原点,然后单击"编辑".您只能为Origin Type为S3 Origin的原点创建原始访问标识.

基本上,为了设置正确的默认根对象,我们使用S3网站端点而不是网站存储桶本身.这与使用原始访问标识不兼容.因此,我的问题归结为两者

  1. 是否可以为Cloudfront上的静态托管网站的所有子目录指定默认根对象?

  2. 是否可以为从Cloudfront提供的内容设置原始访问标识,其中源是S3网站端点而不是S3存储桶?

amazon-s3 amazon-web-services amazon-cloudfront

77
推荐指数
8
解决办法
2万
查看次数

如何S3 + Cloudfrond + 2 SPA对子文件夹中的应用程序做出反应?

我想使用 S3 + Cloudfront 在子文件夹中提供 2 个不同的 React 应用程序

myapp.com/app-one/<-- 这是index.html
myapp.com/app-two/<-- 这是另一个index.html

我知道如何配置 create-react-app 和 React router 来处理这个问题。
https://create-react-app.dev/docs/deployment/#building-for-relative-paths

问题在于配置 S3 + Cloudfront 来处理重定向。

当您在浏览器中输入 url 时:
myapp.com/app-one/some-route- 它应该重定向到index.html of app-one
myapp.com/app-two/some-route- 它应该重定向到index.html ofapp-two

不幸的是,S3 只允许您定义一个后备file.html( 404)Static website hosting

我也不想使用 hashrouter:https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/api/HashRouter.md

amazon-s3 amazon-cloudfront single-page-application reactjs react-router

7
推荐指数
1
解决办法
3119
查看次数