基于路径/路由的 CloudFront 多站点
CloudFront multi site based on paths / routes
现有应用程序
我在 S3 和 CloudFront 上托管了一个网站。 API 托管在 ECS 上,并由 CloudFront 通过 /api/*
行为提供服务。为了处理手动输入的路由,我将错误页面 404 和 403 配置为在默认行为上路由到 /index.html。
URL -> CF -> S3 (default origin)
URL/api/** -> CF -> LB -> ECS+Fargate
要求
我想做的是在指向新 S3 存储桶(源 3)的新路径 /admin 下托管 Admin 站点。
URL/admin -> CF -> S3 (Origin 3)
问题
/admin 路径上的所有流量都属于错误页面,并被路由到默认来源。
我检查过的东西:
- 没有冲突的路径
- 已清除缓存
- S3 配置在 Default Origin Bucket 和 Origin 3 Bucket 上完全相同
我在删除错误页面配置时找到了解决方案。删除此配置后,出现 Access Denied
错误。当实际上访问权限不存在或对象不存在时,这是错误。因此,CloudFront 似乎无法访问 S3 存储桶上的文件。
解决方案是 /admin/
路径需要 s3 中的 admin
文件夹,以便两个路径相互映射。当我将我的文件移动到正确文件夹中的第二个 S3 存储桶中时,一切都开始工作了。
这是托管 2 个站点的好方法,它们可以彼此共享 Cookie 和 FrontEnd 上下文,因为它们都在同一域下。您也不需要为此管理 CORS。
现有应用程序
我在 S3 和 CloudFront 上托管了一个网站。 API 托管在 ECS 上,并由 CloudFront 通过 /api/*
行为提供服务。为了处理手动输入的路由,我将错误页面 404 和 403 配置为在默认行为上路由到 /index.html。
URL -> CF -> S3 (default origin)
URL/api/** -> CF -> LB -> ECS+Fargate
要求
我想做的是在指向新 S3 存储桶(源 3)的新路径 /admin 下托管 Admin 站点。
URL/admin -> CF -> S3 (Origin 3)
问题
/admin 路径上的所有流量都属于错误页面,并被路由到默认来源。
我检查过的东西:
- 没有冲突的路径
- 已清除缓存
- S3 配置在 Default Origin Bucket 和 Origin 3 Bucket 上完全相同
我在删除错误页面配置时找到了解决方案。删除此配置后,出现 Access Denied
错误。当实际上访问权限不存在或对象不存在时,这是错误。因此,CloudFront 似乎无法访问 S3 存储桶上的文件。
解决方案是 /admin/
路径需要 s3 中的 admin
文件夹,以便两个路径相互映射。当我将我的文件移动到正确文件夹中的第二个 S3 存储桶中时,一切都开始工作了。
这是托管 2 个站点的好方法,它们可以彼此共享 Cookie 和 FrontEnd 上下文,因为它们都在同一域下。您也不需要为此管理 CORS。