通过配置的子域访问托管在 AWS 外部的 Web 应用程序时,CloudFront 出现 403 错误

通过配置的子域访问托管在 AWS 外部的 Web 应用程序时,CloudFront 出现 403 错误

我的任务是在 CloudFront 上设置我们的 Web 应用程序。我们的 Web 应用程序托管在完全在 AWS 之外的 Ubuntu 服务器上。

我对 CDN 几乎没有经验,但我在这方面取得了一些不错的进展。不幸的是,这些文档没有帮助,因为大多数文档都假设您正在使用 S3,尤其是托管静态网站或类似的东西。

因此,我们的设置的独特之处在于:

  • 我们最初使用的是 Cloudflare(而不是 CloudFront),并且我们的 DNS 最终仍由他们托管。
  • 我已使用指向 Route 53 的 NS 记录更新了 Cloudflare DNS 条目。因此,现在 Route 53 可以处理我正在使用的子域的 DNS,并将我们指向 CloudFront 分发域。
  • 我已经为子域名创建了一个发行版(假设app.example.com),并申请了一个公共 SSL/TLS 证书,我相信我现在已经正确安装和配置了。(我这样说的原因是,我最初在访问时在 Chrome 中遇到了隐私错误app.example.com,但在我弄清楚 SSL/TLS 证书部分后,这个错误就消失了。)

现在发生的情况是,当我访问时,app.example.com出现 403 错误,内容如下:

該请求無法夠滿足。

请求错误。我们目前无法连接到此应用程序或网站的服务器。可能是流量过大或配置错误。请稍后重试,或联系应用程序或网站所有者。如果您通过 CloudFront 向客户提供内容,您可以通过查看 CloudFront 文档找到故障排除和帮助防止此错误的步骤。

CloudFront 在与原始服务器通信时遇到问题。

我不确定该问题是否可能是次要 SSL/TLS 证书问题(即我是否需要在 Ubuntu 机器上安装另一个证书?它已经使用了 letsencrypt。它是否需要是我从 AWS 请求的公共证书或新证书?)。

或者,DNS设置是否可能导致CloudFront无法知道如何寻找原始服务器?(毕竟,DNS 将app.example.com我们指向 CloudFront,那么 CloudFront 怎么知道如何找到原始服务器?)我以前从未使用过 CDN,所以我有点困惑。

到目前为止,每个故障排除指南都假设 403 错误来自不正确的 S3 存储桶策略或类似的东西,但同样,我没有使用 S3 来提供 Web 应用程序。

相关内容