![使用 CloudFront 将 AWS ALB 的默认错误页面覆盖为自定义错误页面](https://linux22.com/image/750628/%E4%BD%BF%E7%94%A8%20CloudFront%20%E5%B0%86%20AWS%20ALB%20%E7%9A%84%E9%BB%98%E8%AE%A4%E9%94%99%E8%AF%AF%E9%A1%B5%E9%9D%A2%E8%A6%86%E7%9B%96%E4%B8%BA%E8%87%AA%E5%AE%9A%E4%B9%89%E9%94%99%E8%AF%AF%E9%A1%B5%E9%9D%A2.png)
我有一个 ALB,其中包含将请求转发到托管在 AWS 上的私有 EC2 的规则,当我进行新部署时,Lambda 中有一个脚本可以关闭我的 ASG 并重新打开它们。在此期间,当 ASG 关闭并且我尝试访问网站时,ALB 会以默认的 503 错误响应,我想用我放置在单独 S3 存储桶中的自定义错误页面覆盖该错误。
我已按照此处答案部分中发布的说明进行操作: AWS ELB“抱歉,网站已关闭”页面
所以我做了以下事情:
- 创建了一个 CloudFront 分发,其 ALB URL 来源和该 ALB 的默认 (*) 行为,CNAME 为:*.mywebsite.com
- 创建了一个 S3 存储桶,将我的错误页面 html 上传到 /error/index.html 下,并使其成为静态托管网站。
- 在现有的 CF 中添加了新的 Origin,其来源为静态托管的 S3 网站 URL。
- 添加了 /error/index.html 路径模式和 S3 Origin 的新行为。
- 添加了一个新的错误页面规则,其中包含 HTTP 错误代码 503、页面响应路径 /error/index.html 和 HTTP 响应代码 403(我知道 403 对于这种情况下是错误的,但我只是想测试它是否至少会改变响应代码,但它没有)。
但是,当我在 EC2 停机的情况下尝试访问我的网站时,仍然会收到相同的默认 503 错误页面。(我认为这是来自 ALB,对吗?)
关于步骤 2)和 3),我也尝试过使用 S3 Origin,而不是 Custom Origin,但仍然不起作用。
顺便说一句,当我访问分发的 xxx.cloudfront.net URL 时,我得到了带有 200 OK 响应的自定义错误页面(这是正确的吗?)。
我究竟做错了什么?