使用负载均衡器将 HTTP 重定向到 HTTPS AWS EC2

HTTP redirect to HTTPS AWS EC2 with Load Balancer

这是我的设置:

EC2 与 Apache 使用弹性负载均衡器。

我希望所有 http 流量自动重定向到 https。我找到了这个 reco,并通过将其添加到我的 httpd.conf 文件中进行了尝试:

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
</VirtualHost>

但是,这在我重新启动服务器之前或之后都不起作用。 HTTP 没有重定向,我的网站抛出各种错误,直到我从我的配置中删除规则。

我在想我更新文件有误,或者负载平衡器设置不正确。对于负载均衡器的侦听器,我有 LB 协议 HTTP,端口 80,实例协议 HTTP 和实例端口 80。我在端口 443 和实例端口 443 上有 LB 协议 HTTPS。我的 SSL 使用后一种协议。

知道从这里到哪里去吗?

您提到的配置应该可以正常工作。问题可能是未加载 mod_rewrite 模块。将以下行添加到您的 Apache 配置以加载重写模块。

LoadModule rewrite_module modules/mod_rewrite.so

您可以尝试下面的配置,它比您使用的要简单得多。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}