AWS可以将HTTP重定向到HTTPS吗?

时间:2017-06-08 17:59:02

标签: amazon-web-services

背景

我使用Route53 + LoadBalancer + EC2在AWS上提供应用程序。

我想强制所有用户使用https。每当在http上发出请求时,我都希望将其重定向到https请求。

潜在解决方案

我知道将HTTP重定向到HTTPS的三种方法:

  1. 客户端。这涉及使用JS检查主机是http还是https,如果是https则重定向。

  2. 服务器端。这涉及配置Web服务器以将所有http请求重定向到https。

  3. 但是,我很好奇:可以在Route53或LoadBalancer阶段完成吗?

  4. 问题

    是否有某种方法可以配置Route53或LoadBalancer,以便将http上的任何请求重定向到https?

    谢谢!

    修改

    对于downvoters:请说明你投票的原因。我在SO / Google上找到的解决方案是“如何通过服务器进行重定向,这是选项2.我正试图在AWS层解决这个问题。”

3 个答案:

答案 0 :(得分:2)

做客户端重定向'没有意义。当JS运行并进行重定向时,为时已晚。请求响应内容已经在网络上泄露。您必须在服务器端执行此操作,使用301 status and Location header进行回复,而不是内容。在点击你的应用程序(php,节点等)之前,这可以而且应该由你的Web服务器堆栈(nginx,Apache)完成。

ELB不支持重定向。它通过转发将HTTP流量转发到HTTP目标组并添加X-Forwarded-proto标头来支持SSL / TLS 卸载,请参阅How do I redirect HTTP traffic on my server to HTTPS on my load balancer?。但重定向必须由后端服务器处理。

最新更新: AWS宣布支持应用程序负载均衡器的重定向和固定响应,并采用两个新操作:重定向和固定响应。这样,您可以在负载均衡器级别配置HTTP到HTTPS重定向。

答案 1 :(得分:0)

我遇到了同样的问题,这就是我解决它的方法:

cd /etc/httpd/conf.d/elasticbeanstalk

nano 00_application.conf

将此内容添加到

...

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://example.com [L,R=permanent]
</VirtualHost>

service httpd restart

从网络浏览器中清除Cookie并尝试使用http来查看是否重定向

答案 2 :(得分:0)

用于解决此问题的AWS方法是通过AWS Cloudfront。您可以通过Route53购买URL(不必这样做),然后在AWS证书管理器中创建SSL证书,然后设置AWS Cloudfront(在此需要刚刚设置的证书)。嘿,请注意,网站已交付了SSL,并为您设置了AWS的所有安全性,并提供了非常快速的交付服务。