我使用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个链接。
答案 0 :(得分:-1)
我通常使用以下规则将所有流量重定向到https:
RewriteCond %{HTTPS} =off
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
此外,如果要为vhost全局应用规则,则无需在指令之间放置重写规则。