我是 apache 新手。需要一些关于将 http 重定向到 https 的建议。看起来 ssl.conf 中的所有内容都很好,一旦我登录到 ssl 环境,我单击的每个链接似乎都想重定向回 http,并收到错误“错误请求 - 您的浏览器发送了此服务器无法理解的请求。原因:您正在向启用 SSL 的服务器端口发送纯 HTTP。请使用 HTTPS 方案访问此 URL。”以下是 ssl.conf 中的代码。有人建议是什么原因导致了这些问题吗?
注意:10.0.0.24:8080 是 Planner 现在在测试环境中运行的端口。这是最近更改的,但由于它只是一个代理,不确定它如何会导致站点的这个区域出现问题?但欢迎提出建议。提前谢谢大家。
代码:
Listen 8001
Listen 8004
<VirtualHost *:8001>
SSLEngine on
ServerName test.mydomainintereactive.com:8001
SSLCertificateFile "/etc/httpd/conf/certs/cert.pem"
SSLCertificateKeyFile "/etc/httpd/conf/certs/test.key"
SSLCertificateChainFile "/etc/httpd/conf/certs/gd_bundle-g2-g1.crt"
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite etc...
#
# Security and Server protection (GLG - 2015-08)
#
TraceEnable Off
ServerSignature Off
FileETag None
CustomLog /var/log/httpd/test-access.log combined
ErrorLog /var/log/httpd/test-error.log
# ErrorDocument 400 https://test.mydomainintereactive.com:8001
ProxyPreserveHost On
ProxyPass / http://10.0.0.24:8080/
ProxyPassReverse / http://10.0.0.24:8080/
</virtualhost>
<VirtualHost *:8004>
SSLEngine on
ServerName fun.mydomainintereactive.com:8004
SSLCertificateFile "/etc/httpd/conf/certs/FUN2010Cert.pem"
SSLCertificateKeyFile "/etc/httpd/conf/certs/FUN2010Key2.pem"
SSLCertificateChainFile "/etc/httpd/conf/certs/gd_bundle.crt"
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite etc..
SSLHonorCipherOrder on
#
# Security and Server protection (GLG - 2015-08)
#
TraceEnable Off
ServerSignature Off
FileETag None
CustomLog /var/log/httpd/fun77-access.log combined
ErrorLog /var/log/httpd/fun77-error.log
# ProxyPreserveHost On
ProxyPass / http://10.0.0.22:8080/
ProxyPassReverse / http://10.0.0.22:8080/
</virtualhost>
答案1
您可以使用 mod_rewrite.c 将请求重定向到 https。不过请确保您没有SSLEngine
在要重定向的页面上启用此功能。
在这个例子中,我将进入 test.mydomainintereactive.com 端口 80 的所有流量重定向到 test.mydomainintereactive.com 端口 443(标准 https 端口)
<虚拟主机 *:80> 服务器名称 test.mydomainintereactive.com # 这是他们试图去的地方,但应该从那里重定向。 # 我们可以使用 mod_rewrite.c 来实现这一点 <IfModule mod_rewrite.c> 重写引擎开启 # 如果你想使用 443 以外的其他端口,你可能需要 # 将其放入下面一行的重定向中。 重写规则 ^[^\/]*\/(.*) https://test.mydomainintereactive.com/$1 [R=301,L] </IfModule> </虚拟主机> <虚拟主机 *:443> 服务器名称 test.mydomainintereactive.com # 这是我们想要重定向到的站点。 # 以及您的 SSL 设置位置。 SSLEngine 开启 SSL证书文件“/etc/httpd/conf/certs/FUN2010Cert.pem” SSLCertificateKeyFile“/etc/httpd/conf/certs/FUN2010Key2.pem” SSLCertificateChainFile“/etc/httpd/conf/certs/gd_bundle.crt” # ... ETC。 </虚拟主机>