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

时间:2014-07-15 07:02:53

标签: ruby-on-rails redirect ssl heroku amazon-cloudfront

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

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

我做过的一些事情:

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

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

现在我得到301重定向。我怎么能阻止它?我应该看什么配置?

宣传任何想法。很高兴提供任何其他信息。

1 个答案:

答案 0 :(得分:10)

我昨天刚开始使用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会缓存它获得的响应(无论它是否是文件)。