http://www.jfinal.com/share/1298
运行环境:
服务器:windows server2008 r2服务器
项目:三个阿里云https证书和一个http项目
jdk:1.8
tomcat:9.0
问题:
tomcat启动一次费时费力,随便修改一个项目都要面临重启tomat的可能,实在是不胜其烦。
解决之道:
使用jfianl undertow使用不同端口管理各个项目,实在各个项目独立运行。
把大象装冰箱只需三步
-
首先三个https域名分别使用8443、7443、6443端口,http使用8093端口,启动项目,确保可以通过https://项目名称:端口号访问
-
安装nginx 并配置nginx.conf
- #A项目 config start
- server {
- listen 443 ssl;
- server_name www.A.com;
- ssl_certificate rsA.pem;
- ssl_certificate_key rsA.key;
- # ssl验证相关配置
- ssl_session_timeout 5m; #缓存有效期
- ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
- ssl_prefer_server_ciphers on; #使用服务器端的首选算法
- location / {
- proxy_pass https://www.A.com:7443;
- }
- }
- #实现http自动跳转到https
- server {
- listen 80;
- server_name www.A.com;
- rewrite ^(.*)$ https://$host$1 permanent;
- }
- #A 项目 config end
- #B项目 config start
- server {
- listen 443 ssl;
- server_name www.B.com;
- ssl_certificate plB.pem;
- ssl_certificate_key plB.key;
- # ssl验证相关配置
- ssl_session_timeout 5m; #缓存有效期
- ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
- ssl_prefer_server_ciphers on; #使用服务器端的首选算法
- location / {
- proxy_pass https://www.B.com:6443;
- }
- }
- server {
- listen 80;
- server_name www.B.com;
- rewrite ^(.*)$ https://$host$1 permanent;
- }
- #B项目 config end
- #http项目 config start
- server {
- listen 80;
- server_name www.D.com;
- location / {
- proxy_pass http://www.D.com:8093;
- }
- }
- #http项目 config end
注意:证书文件要放到nginx的conf文件夹下面使用相对路径访问,使用绝对路径可能会提示找不到的提示
打完收工!
SSL 建议配置在 nginx 上, 一来是配置方便,二来是性能最好,下面给出 jfinal.com 的 ssl 配置: server { listen 80; listen 443 ssl http2; keepalive_timeout 70; server_name jfinal.com www.jfinal.com; root /app/jfinal-com/webapp; ssl_certificate cert/20200618_www.jfinal.com.pem; ssl_certificate_key cert/20200618_www.jfinal.com.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location 配置省略 } 简单来说就是添加一个 server 配置,其中放上监听的端口号,已经对应的域名 有关 ssl 的配置,开启就是一个 listen 443 ssl http2; 搞定,后面的 ssl_ 打头的是一些证书、算法、cache 等等配置,这些在 nginx 官网都有详细的文档 如果你要配置多个 SSL 对应多个网站的话,继承添加 server ,改改 server_name、root、location 配置即可