环境 Centos 7.6 与 Httpd 2.4
首先我们需要会Apache的转发http,也需要会SSL证书的配置(XX云有免费的)
Apache(httpd 2.4.6) 代理转发Http ←点击进入
Apache(Httpd 2.XX) 分别实现Https转发到二级域名←点击进入
上面两个会了之后那就非常好实现了,我们已经实现了http多个项目的转发,https的转发。
我们只需要修改一下http的配置就行,原来的http是直接转发到Tomccat运行的端口号(如下):
# 转发http
<VirtualHost *:80>
ServerName http://www.domain.cn
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
# 转发
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
接下来我们需要引入重定向模块:
[root@VM_0_13_centos ~]# vim /etc/httpd/conf/httpd.conf
# 引入rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so
引入之后把算来的http转发修改为重定向(http的转发===>重定向https):
<VirtualHost *:80>
ServerName http://www.domain.cn
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.cn [NC]
RewriteRule ^(.*) https://www.domain.cn/ [R=301,L]
</VirtualHost>
原理很简单,首先http转发配置好,Https也配置好;测试http与https都可以访问,我们就直接修改http的转发,把转发重定向到HTTPS,不懂的需要看上面两篇博客
# 这是https的配置
<VirtualHost *:443>
ServerName https://new.xxxx.cn:443
ErrorLog logs/ssl_error_log_new_8080
TransferLog logs/ssl_access_log_new_8080
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 这个证书,去下载apache证书
SSLCertificateFile /etc/httpd/cert/new/2673102_new.xxxx.cn_public.crt
SSLCertificateKeyFile /etc/httpd/cert/new/2673102_new.xxxx.cn.key
SSLCertificateChainFile /etc/httpd/cert/new/2673102_new.xxxx.cn_chain.crt
# 转发(为什么这里还要配转发, 如果配置了过很多转发此处同时也需要指定)
# 转发到 new.domain.cn的Tomcat项目的端口号
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
一定要仔细先看Http的配置,再看HTTPS的配置,再弄这个重定向,不懂的欢迎留言!