cloudfront 重定向到源而不是别名

Posted

技术标签:

【中文标题】cloudfront 重定向到源而不是别名【英文标题】:cloudfront redirecting to origin instead of aliasing it 【发布时间】:2014-09-05 06:37:32 【问题描述】:

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

无论如何,我的应用程序有一个强制 ssl 规则。当我转到我的云端 url 时,原点是我的 heroku 应用程序 url,我得到一个 301 重定向到原点,而不是作为别名。

我做过的一些事情:

起初我有一个错误说"request could not be satisfied",所以我将原始协议策略更改为仅HTTP。

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

现在我收到了这个 301 重定向。我该如何阻止它?我应该看哪些配置?

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

【问题讨论】:

很高兴我的回答有帮助!仅供参考,经过几天的测试,我停止使用 CloudFront,因为它的性能真的很差。我现在正在试用 Fastly,它在美国非常好(但在海外不好)。 【参考方案1】:

我昨天刚开始使用 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://***.com/a/22571467/1101095

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

【讨论】:

不确定它有什么帮助。

以上是关于cloudfront 重定向到源而不是别名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cloudfront 将裸域重定向到 www?

javascript 使用AWS Lambda重定向到CloudFront上的尾部斜杠。 (所有这一切都因为S3使用302重定向而不是301)

AWS CloudFront 响应 307 临时重定向

在 Route53 和 CloudFront 中将 www 重定向到非 www

CloudFront、应用程序负载均衡器、EC2 获取重定向 301

重定向指令是不是覆盖配置的别名