在 CloudFront 中从一个来源同时设置 https 和 http

Set both https and http from one origin in CloudFront

我正在使用 cloudfront 将 Web 应用程序重定向到 S3 存储桶以获取某些媒体内容。当我们尝试将 HTTPS 添加到我们的测试环境时,我们想将 https://app.foo.com 源添加到我们的云端分布。我们尝试了两种不同的方式:

  1. Create Origin 选项卡上,使用 https

    创建第二个来源
  2. 通过编辑第一个工作来源(在 http 中)并在第一个来源下方添加第二个来源 header(在来源设置选项卡中)。

None 这些解决方案似乎有效,具有 http 来源的应用程序可以访问存储桶内容。但是使用 https 的重定向不起作用。我必须明确我们对存储桶的授权是正确的,我们可以使用 CloundFront link 访问存储桶内容,并且 CORS 规则接受应用程序的 http 和 https。看起来 https 来源没有被 ClondFront 处理。 提前致谢

您需要了解 CloudFront 是什么。它不会像您在问题中所说的那样将用户“重定向”到 S3 存储桶。它正在加载和缓存 S3 存储桶的内容,并根据请求将其提供给用户。源不是 CloudFront 将用户重定向到的位置。 Origin 是 CloudFront 从中加载资源的位置。在 http 与 https 连接和 CloudFront 的上下文中,您需要做出以下决定:

  1. CloudFront 将通过 http 或 https 与源通信。此决定不会影响您的用户以任何方式加载 http 或 https 资源的能力。

  2. CloudFront 会向您的用户提供 http 和 https 内容,还是会将所有 http 请求重定向到 https。此决定不受源配置的任何影响。

用户的 Web 浏览器正在与 CloudFront 服务器建立 HTTP 连接,并接收来自 CloudFront 的响应。用户的 Web 浏览器从不直接连接到 S3。

您不能拥有仅 http/https 协议不同的两个来源。这两个来源都在同一条路径上,并且包含相同的内容。 CloudFront 只需要这些来源之一,它将根据需要连接到该来源以填充其缓存。