我在 AWS 负载均衡器上插入了一个 Cloudfront。
我在 AWS 文档中看到,我可以自定义 Cloudfront 自定义错误页面。我尝试按照 AWS 文档中的建议将这些错误页面存储在 S3 中,但不起作用。文档中说:
We recommend that you store custom error pages in an Amazon S3 bucket even if you're using a custom origin. If you store custom error pages on an HTTP server and the server starts to return 5xx errors, CloudFront can't get the files that you want to return to viewers because the origin server is unavailable.
我的错误页面位于 S3 中,路径为“my-app-bucket/errorpage.html”。
我尝试在 Cloudfront 配置中链接此文件,但出现以下错误:
如果我尝试值 /my-app-bucket/errorpage.html,Cloudfront 会将请求重定向到我的 ELB 原点,并且我会得到 404。
谁能向我解释如何进行这种配置?
答案1
- 您需要添加另一个 CloudFront 源,指向错误页面所在的存储桶
- 新创建的源的缓存行为应该有一个路径模式,指向错误页面所在的文件夹(在错误页面存储桶中)
- 然后,您可以在创建自定义错误响应配置时在响应页面路径中使用该路径
答案2
有比 f01 推荐的方法更简单的方法来实现这一点。在 S3 中启用静态网站托管,在 S3 中指定错误页面,然后使用静态网站托管 URL 作为您的 cloudfront bucket 的来源。没有特殊路径问题,没有自定义错误响应配置。它就是有效。超级简单。
这是我制作的教程视频:
答案3
这个答案是mbarlockers 的精彩记录视频,因为这是一个可能会消失的外部链接,所以我将其转录在这里。
这是一个很棒的视频,但又因为是外部链接而受到困扰,我在这里总结了整个视频:
- 在 s3 中创建一个具有 DNS 兼容名称的存储桶(暂时不要使用句点)
- 将存储桶公开
- 上传您的页面,保留对象的权限为默认设置
- 选择标准存储
- 无加密
- 使用存储桶 URL 进行测试,观察是否失败
- 使用完整对象 URL 进行测试,观察是否失败
- 进入存储桶策略并创建允许每个人使用 GetObject 读取您的对象的策略。
- 忽视公共政策警告
- 再次尝试对象 URL,它应该可以工作。
- 在属性中的存储桶设置中启用静态网站托管。
- 填写索引文档和错误页面字段,我们不需要重定向,保存
- 检查静态网站托管生成的 URL,然后使用不存在的路径进行测试,你会看到 404
- 进入cloudfront并创建一个分发
- 将 origin 名称命名为出现的 bucket 链接
- 保留除缓存之外的所有选项并设置为 1 天。
- 保存并等待 cloudfront 分发版部署。
- 现在通过 cloudfront URL 进行测试并观察故障
- 返回 cloudfront 分发并转到自定义错误页面部分并创建自定义错误页面响应。
- 指定 403 Forbidden 作为 HTTP 错误代码
- 300 秒 TTL
- 自定义错误响应
- 将响应页面路径设置为 /error.html (或任何你的错误页面名称)
- 将响应代码更改为 404 未找到
- 返回浏览器并重试错误的 URL。系统将提供错误页面。