响应移动到云前 + SSL 后应用程序中的路由器链接断开



我有一个反应应用程序,使用 S3 存储桶中托管的 react-router 使用 Route53 作为 DNS 提供商。该应用程序在指向 S3 存储桶的 Route53 配置下运行良好。

由于我想使用 SSL,因此我创建了一个指向存储桶的 Cloudfront 分配,其中包含 SSL 证书,并将 DNS 指向该存储桶。既然这样做了,所有链接都不起作用(example.com 有效,但 example.com/foo 不起作用)。它只是返回一个 NoSuchKey 错误。我知道这是不正确的,因为密钥肯定在那里,而且它以前就工作过。

问题

  1. 大多数 Web 服务器一样,如果存储桶不包含 URL 指定的对象,CloudFront/S3 将抛出 404。
  2. 未知/未识别的对象如果不可公开访问或没有正确的权限,则会自动引发 403

溶液

当您的 Amazon S3 或自定义源向 CloudFront 返回 HTTP 4xx 或 5xx 状态代码时,您可以让 CloudFront 将对象(例如 HTML 文件)返回给查看器。您还可以指定来自源或自定义错误页面的错误响应在 CloudFront 边缘缓存中的缓存时间。

更多资源

  • CloudFront 如何处理和缓存来自源的 HTTP 4xx 和 5xx 状态代码
  • 为特定 HTTP 状态代码创建自定义错误页
  • 如何排查来自 Amazon S3 的 HTTP 404 错误"NoSuchKey"?
  • CloudFront:自定义错误页面和错误缓存

最新更新