3

我有一个 ec2 实例,我的网站文件使用 apache2 作为 Web 服务器正确安装。ec2 配置为仅从 elb 接收端口 80 上的 http 流量(对此非常确定,但不是 100%)。elb 有一个 https 监听器(端口 443)和一个 http 监听器(端口 80)。根据 aws 文档解密数据后,elb 将流量发送到 ec2 实例。我的问题是我无法弄清楚如何将所有流量重定向到 http 到 https 的负载均衡器。

我尝试在站点的虚拟主机和 apache2.conf 中使用此重写规则,但它没有任何效果(也没有错误)。

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

整个虚拟主机看起来像这样(位于 /etc/apache2/sites-available/SewaneeEats.conf):

ServerName classicloadbalancer-1929710381.us-east-1.elb.amazonaws.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/SewaneeEats/public

<Directory /var/www/html/SewaneeEats>
    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
    AllowOverride All
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

我还可以确认模块重写已启用。

因此,当我输入 url sewaneeeats.com(如果您需要查看这些链接,这些链接是活动的)时,它仍然是 sewaneeeats.com(没有任何 ssl)而不是重定向。我知道 ssl 正在处理https://www.sewaneeeats.com。在https://sewaneeeats.com上,我在 chrome 的 url 栏中看到一个损坏的 ssl 红色符号。我认为它在https://sewaneeeats.com网址上被破坏的原因是因为证书是为 www 子域注册的,但我不确定。该域是使用 aws 的 route 53 控制台配置的,因此如果有帮助,我可以提供相关信息。

任何帮助将不胜感激,因为我已经尝试解决这个问题大约 12 个小时左右。会在 serverfault.com 上发布这个,但我不能,因为当我不到 10 个代表时,我只能有 2 个问题链接。

4

1 回答 1

-1

我通常使用以下规则将所有流量重定向到 https:

RewriteCond %{HTTPS} =off
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

此外,如果您想为虚拟主机全局应用规则,则无需在指令之间放置重写规则。

于 2017-02-24T13:50:37.387 回答