我想强制重定向从http到https,以便当用户输入: http : //example.com时,他会被重定向到https://example.com 。
我已经尝试了这篇文章中描述的所有内容,我甚至让它工作,但我不知道发生了什么变化,但它已经不再适用了。
我已经为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的监听器,如下所示: