我正在使用AWS Elastic Load Balancer,并设置了以下规则将httpstream量转换为https 。
/etc/httpd/conf.d/httpd_redirect.conf
<VirtualHost *:80> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </VirtualHost>
但是,当我通过域名( www.thewhozoo.com )访问我的网站时,我可以看到协议是http而不是https 。
任何想法,为什么重写规则不起作用?
谢谢
更多信息
/etc/httpd/conf/httpd.conf
... Include conf.d/*.conf Include conf.d/elasticbeanstalk/*.conf ...
以上是在部署时创build的:
.ebextensions/myapp.config
container_commands: 01_setup_apache: command: "cp .ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf" files: "/etc/httpd/conf.d/httpd_redirect.conf" : mode: "000644" owner: root group: root content: | <VirtualHost *:80> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </VirtualHost>
ELB听众
你有一个configuration片段/etc/httpd/conf.d/ssl_rewrite.conf
通常,这样的片段通过Include或IncludeOptional指令加载
Include conf.d/*.conf
要么
IncludeOptional conf.d/*.conf
从你的主httpd.conf 。
问题是,这些片段只适用于你的主要configuration,不适用于任何VirtualHost部分…
要么在虚拟主机定义中包含这些设置,要么在那里加载该代码段:
<VirtualHost *:80> ServerName www.thewhozoo.com Include /etc/httpd/conf.d/ssl_rewrite.conf </VirtualHost>
或者甚至更好, 不要使用mod_rewrite并设置:
<VirtualHost *:80> ServerName www.thewhozoo.com Redirect "/" "https://www.thewhozoo.com/" </VirtualHost>