在AWS Load Balancer中将HTTP请求路由到HTTPS

时间:2014-07-05 08:55:33

标签: ssl amazon-web-services amazon-ec2 load-balancing

我们有2个EC2实例,Nginx和Unicorn运行Rails。我们在EC2中启动了Load Balancing选项。接下来,我们购买了SSL证书并使其在Load Balancer上运行。因此,现在我们有网址为https://app.mydomain.com工作。我们从Load Balancer的监听器中删除了HTTP。现在,我们需要以某种方式将http://app.mydomain.com的任何传入请求路由到https://app.mydomain.com。关于我们如何实现这一目标的任何建议?

提前谢谢。

3 个答案:

答案 0 :(得分:1)

我有同样的情况,我通过以下方式解决:

您需要将负载均衡监听到端口80并进入您的ec2 instace,它作为节点运行,您可以将其配置为将任何http请求重定向到https。

在我的情况下,我在.htaccess文件中使用这一行

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule !/status https://app.mydomain.com%{REQUEST_URI} [L,R]

这是我的情况,而/ status是负载平衡检查器检查实例helath。

答案 1 :(得分:0)

ELB设置X-Forwarded-Proto标头,您可以使用它来检测原始请求是否是HTTP,然后重定向到HTTPS。

看看ELB docs

答案 2 :(得分:-1)

您需要在apache或nginx文件中进行配置。使用此链接获取详细帮助。 https://serverfault.com/questions/67316/in-nginx-how-can-i-rewrite-all-http-requests-to-https-while-maintaining-sub-dom