環境 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的配置,再弄這個重定向,不懂的歡迎留言!