AWS:经典负载均衡器www.example.com不会重定向到https://www.example.com

时间:2019-07-01 09:26:50

标签: amazon-web-services .htaccess

我在AWS上有一个具有route53托管区域的EC2实例。我使用AWS SSL Manager for SSL,然后使用Classic Load Balancer来实现https重定向。

我在该实例上运行了一个简单的网站,并安装了apache服务器。我还制作了.htaccess文件进行重定向。

它适用于以下情况:

1] example.com -> https://www.example.com
2] https://www.example.com -> https://www.example.com
3] http://www.example.com -> https://www.example.com

它在以下情况下也应该起作用,但是不行

www.example.com -> https://www.example.com

我已经很好地编写了所有htaccess规则,但是当我添加www重定向规则时,负载均衡器的状态为OutService。当我删除该规则时,它运行良好。

在正常情况下可以使用.htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

当我为www.example.com添加规则-> https://www.example.com

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

1 个答案:

答案 0 :(得分:2)

这可能是因为您经典的ELB健康检查是在HTTP上设置的,并且期望服务器可以200的正常响应,但是由于重定向规则,它的响应为302/301。 一种解决方案是使用TCP进行运行状况检查,它只会检查SYN,SYN + ACK,但是,更强大的解决方案是使用应用程序负载平衡器,您可以选择自己成功的运行状况检查状态代码(2xx,3xx)而且您不需要后端的重定向规则,ALB提供了可以用于上述所有目的的重定向规则。