我想强制HTTP进行HTTPS重定向。我尝试了以下方法:
<VirtualHost *:1882>
ServerAdmin ***
ServerName 127.0.0.1
ServerAlias ApplicationServer
ProxyRequests Off
#Force SSL
RewriteEngine On
RewriteCond %{SERVER_PORT} 1882
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#Certificats SSL
SSLEngine on
SSLVerifyClient none
SSLCertificateFile "D:/ssl/server.crt"
SSLCertificateKeyFile "D:/ssl/server.key"
DocumentRoot "${INSTALL_DIR}/none"
ErrorLog "${INSTALL_DIR}/logs/app_error.log"
CustomLog "${INSTALL_DIR}/logs/app_access.log" combined
<Location />
ProxyPass http://localhost:3000/ retry=0
ProxyPassReverse http://localhost:3000/
Order deny,allow
Allow from all
</Location>
</VirtualHost>
但是在测试时,HTTPS工作,但HTTP返回错误400。 我检查了我的病情HERE,似乎很好。
我的重写规则是否需要写在其他地方?
通过添加此虚拟主机修复:
<VirtualHost *:1884>
#Force SSL
RewriteEngine On
RewriteCond %{SERVER_PORT} 1884
RewriteCond %{HTTPS} off
RewriteRule (.*) https://<URL_TO_HTTPS_VIRTUALHOSTL>%{REQUEST_URI} [L,R=301]
</VirtualHost>
答案 0 :(得分:1)
您的配置不完整,因为您需要2个不同的虚拟主机:一个用于处理纯文本流量(HTTP),另一个用于HTTPS。我们看到的是两者的混合......在这个虚拟主机中我们理解它应该捕获非SSL流量,但同时你会给出导致精神分裂症和400错误的SSL指令。