cloudfront 重定向到原点而不是别名

问题描述 投票:0回答:2

我使用 Cloudfront 发行版作为 Heroku 服务器的代理。为什么?出于这些目的。

无论如何,我的应用程序有一个强制 ssl 规则。当我转到我的 cloudfront url(来源是我的 heroku 应用程序 url)时,我得到一个 301 重定向到来源,而不是充当别名。

我做过的一些事情:

起初我有一个错误,说

"request could not be satisfied"
,所以我将原始协议策略更改为HTTP Only。

然后,我有一个重定向循环,所以经过研究,我发现这是由传入的主机标头引起的,所以我删除了转发标头。

现在我收到了 301 重定向。我该如何阻止它?我应该看什么配置?

欣赏任何想法。很高兴提供任何其他信息。

ruby-on-rails http-redirect ssl heroku amazon-cloudfront
2个回答
28
投票

我昨天刚开始使用 CloudFront,遇到了完全相同的问题。我找到了下面的答案,并意识到我的非 www 到 www 重定向导致了问题:

我从domain.com重定向到www.domain.com,CloudFront是 缓存并返回该重定向。你可能会看到同样的情况 带有 http/https 重定向的东西。

如果您正在进行 HTTP -> HTTPS 重定向,您有两个选择: 可以将资产作为 HTTP 提供给 CloudFront 或使 CloudFront 以 HTTPS 方式请求它们。要执行后者,您需要配置 您的 CloudFront 来源为“匹配查看器”。这意味着如果 查看器正在使用 HTTPS,CloudFront 也会。如果用户正在使用 HTTP,CloudFront会以HTTP请求,返回HTTPS重定向它 从您的服务器收到,然后客户端将重新发出 请求为 HTTPS。

在我们的例子中,资产本身不需要受到保护 飞行中。唯一重要的是它们由 CloudFront 提供服务 作为 HTTPS,因此用户的浏览器可以看到所有 HTTPS 内容。所以,在我们的 在这种情况下,无需将资产作为 HTTPS 提供给 CloudFront。 无论它如何从我们的服务器获取内容,CloudFront 响应时将匹配查看器的协议。

https://stackoverflow.com/a/22571467/1101095

您可以尝试的一件事是暂时从 .htaccess 文件中删除所有重写规则,然后尝试通过 CloudFront 加载新文件。每次尝试一个新文件,因为 CloudFront 会缓存它获得的响应(无论是否是文件)。


0
投票

就我而言,我忘记将

Origin
标头转发到 ELB。

© www.soinside.com 2019 - 2024. All rights reserved.