SSL终止负载均衡器后面的EC2实例上的SSLredirect

我试图redirect所有的url到HTTPS的Web应用程序。

我有一个弹性负载平衡器后面的EC2实例。 SSL在负载均衡器上终止。

任何redirect的尝试最终会给我熟悉的“这个页面以永不完整的方式请求”。

负载均衡器将443和80转发到实例上的端口80。

这是我在我的.htaccess中。

RewriteCond %{X-FORWARDED-PROTO} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

有没有人有任何想法如何做到这一点? 非常感谢,

未经testing..但我尝试这个

 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#x-forwarded-proto

Mike的答案大部分都是正确的,但重要的是要指出,负载平衡器仍然需要执行健康检查程序,以确保ec2实例仍然活着。 这可以通过一个额外的RewriteCond来完成

 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{REQUEST_URI} !^/alive\.html$ RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 

…其中alive.html是您的健康检查文件的名称。