• 【转】解决undertow多个https证书的web项目部署问题


    http://www.jfinal.com/share/1298

    运行环境:

    服务器:windows server2008 r2服务器

    项目:三个阿里云https证书和一个http项目

    jdk:1.8

    tomcat:9.0

    问题:

    tomcat启动一次费时费力,随便修改一个项目都要面临重启tomat的可能,实在是不胜其烦。

    解决之道:

    使用jfianl undertow使用不同端口管理各个项目,实在各个项目独立运行。

    把大象装冰箱只需三步

    1. 首先三个https域名分别使用8443、7443、6443端口,http使用8093端口,启动项目,确保可以通过https://项目名称:端口号访问 

    2. 安装nginx 并配置nginx.conf

        1.   #A项目 config start
        2. server {
        3. listen       443 ssl;
        4. server_name  www.A.com;
        5.  
        6. ssl_certificate      rsA.pem;
        7. ssl_certificate_key  rsA.key;
        8.  
        9.    # ssl验证相关配置
        10. ssl_session_timeout  5m;    #缓存有效期
        11. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
        12. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
        13. ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
        14. location / {
        15.  proxy_pass https://www.A.com:7443;
        16. }
        17. }
        18. #实现http自动跳转到https
        19. server {  
        20. listen  80;  
        21. server_name www.A.com;      
        22. rewrite ^(.*)$  https://$host$1 permanent;  
        23. }  
        24. #A 项目 config end
        25.  
        26. #B项目 config start
        27. server {
        28. listen       443 ssl;
        29. server_name  www.B.com;
        30.  
        31.         ssl_certificate      plB.pem;
        32. ssl_certificate_key  plB.key;
        33.  
        34.        # ssl验证相关配置
        35. ssl_session_timeout  5m;    #缓存有效期
        36. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
        37. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
        38. ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
        39.         location / {
        40.              proxy_pass https://www.B.com:6443;
        41. }
        42. }
        43. server {  
        44. listen  80;  
        45. server_name www.B.com;      
        46. rewrite ^(.*)$  https://$host$1 permanent;  
        47. }  
        48. #B项目 config end
        1. #http项目 config start 
        2.  server {
        3.        listen   80;
        4.  
        5.         server_name  www.D.com;
        6.  
        7.         
        8.         location / {
        9.              proxy_pass http://www.D.com:8093;
        10. }
        11. }
        12. #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 配置即可
    

      

  • 相关阅读:
    Math Jax开源数学编辑器的使用
    阿里云pai项目使用说明
    tomcat管理授权:tomcat-users.xml
    NoSQLBooster for MongoDB的基本使用
    IDEA的配置文件访问
    task
    Netty基础点滴
    二星权限树的设计与实现
    easyui实现树形菜单Tab功能、layout布局
    如何用Dome4j(2.2.1)创建Xml
  • 原文地址:https://www.cnblogs.com/tc310/p/13845420.html
Copyright © 2020-2023  润新知