Apache2没有重定向到https

时间:2017-02-24 07:05:14

标签: amazon-web-services amazon-ec2 apache2 elastic-load-balancer

我使用apache2作为Web服务器正确安装了我的网站文件的ec2实例。 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个链接。

1 个答案:

答案 0 :(得分:-1)

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

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

此外,如果要为vhost全局应用规则,则无需在指令之间放置重写规则。