我想强制重定向从http到https,以便当用户输入:http://example.com时,他会被重定向到https://example.com。
我已尝试过此post中描述的所有内容 我甚至让它工作,但我不知道发生了什么变化,但它已不再适用了。
我已经为RewriteCond尝试了几个选项,例如!https, =http, ^http$
,我唯一可以产生的结果是EB健康检查被重定向,这导致甚至https://example.com得到空响应如果我使用!https。
<VirtualHost *:80>
<Proxy *>
Order Allow,Deny
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/ retry=0
ProxyPassReverse / http://localhost:8080/
ProxyPreserveHost on
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_USER_AGENT} !ELB-HealthChecker
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
我有以下听众: Loadbalancer Listener
我是通过ssh直接连接到我的ec2实例来测试/etc/httpd/conf.d/elasticbeanstalk
中的配置,所以我测试一下,我重新启动服务器sudo httpd -k restart
并且没有任何变化。我甚至通过以下方式记录了重写:
RewriteLog "/var/log/httpd/rewrite.log"
RewriteLogLevel 3
我可以看到,管理员/健康状况已经过检查,但没有别的。 elasticbeanstalk-error.log中也没有错误。奇怪的是,我有它工作,我确信我刚刚做了改变,我已经在上面描述了,但我不能让它再次工作,它真的让我疯狂!
解决:
所以我解决了它:问题不是配置文件,而是Loadbalancer Listener,我需要HTTP的监听器,如下所示: