我有一个ec2实例,使用apache2作为Web服务器正确安装了我的网站文件。 ec2被配置为只接收来自elb的端口80上的http流量(非常确定,但不是100%)。 elb有一个https监听器(端口443)和一个http监听器(端口80)。根据aws文档解密数据后,elb将流量发送到ec2实例。我的问题是,我无法弄清楚如何将所有流量重定向到http到https的负载均衡器。Apache2不重定向到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 [email protected]
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
我也可以确认该模块重写已启用。
所以当我输入网址sewaneeeats.com(这些链接是活的,如果你需要检查出来),它仍然是sewaneeeats.com(没有任何ssl),而不是重定向。我知道ssl正在处理https://www.sewaneeeats.com。在https://sewaneeeats.com上,我在chrome的url栏中看到一个破损的ssl红色符号。我认为它在https://sewaneeeats.com网址上被破坏的原因是因为该证书是为www子域名注册的,但我不确定。该域使用aws的路由53控制台进行配置,因此如果它有帮助,我可以提供相关信息。
任何帮助将非常感激,因为我一直试图找出这约12小时左右。本来会在serverfault.com上发布这个,但是我不能,因为当我在10个代表下时,我只能有一个问题的2个链接。
其中是sewaneeeats.com到www.sewaneeeats.com重定向在您的配置?至于SSL证书,我看到您使用的是由亚马逊发行的证书,您可以将附加域名添加到证书中,只需添加sewaneeeats.com和www.sewaneeeats.com(您可能必须创建新证书) – at0mzk
@ at0mzk重写规则位于站点的虚拟主机配置文件中,即/etc/apache2/sites-available/SewaneeEats.conf文件。我将尝试向证书添加其他域 – Daniel
@ at0mzk我最终创建了一个新证书,该证书添加了所有子域以及裸域。感谢您的提示! – Daniel