将 CloudFront 放在 AWS Amplify 前面时如何避免 301 重定向循环?

Dig*_*ion 5 redirect http-redirect amazon-cloudfront single-page-application aws-amplify

背景

我们希望 CloudFront 在我们的 AWS Amplify SPA 前面充当路由器。这样做的原因是我们需要在所有 SPA 之间共享一个公共域,以便我们可以共享 localStorage。因此,每个 SPA 都将托管在 CloudFront 上的一个子路径中。我们使用 Amplify 的原因是因为我们使用的是客户端路由,所以我们需要将请求从https://spaOne-amplify.com/spaOne/pages/somePage重定向到 index.html

基本思想是,我们将有一个 CloudFront 来代理/缓存来自https://cloudFrontDomain.com/spaOne/*到 的所有请求https://spaOne-amplify.com/spaOne/*

问题

但是,出于某种原因,当 Amplify 托管的 SPA 收到Via看起来像是来自 CloudFront的标头时,它会进入重定向循环。

我在任何地方都找不到对这种行为的详细提及,而且我不知道如何避免它。如果我删除Via标题或更改它,行为就会停止。以下导致重定向循环:

  • Via: 1.1 7331c3ff7c4cd86239addbfddaa5cee4.cloudfront.net (CloudFront)
  • Via: 1.1 abc.cloudfront.net (CloudFront)

但这些没有:

  • Via: 1.1 7331c3ff7c4cd86239addbfddaa5cee4.cloudfront.net
  • Via: 1.1 spaOne-amplify.com (CloudFront)

Gen*_*mes 1

因此,这里的想法是使用目标组来加载分发(或为您的网络重定向规则)。默认情况下,我不确定是否有办法在 CloudFront 中执行此操作。

  1. 然而,它可以通过创建负载均衡器(在您的情况下是应用程序)来完成,然后在您的CloudFront实例中指定源作为您的负载均衡器。

  2. 一旦所有内容都通过负载均衡器,您就可以使用重定向行为创建目标组到一个或另一个源。