当前位置: 首页 > news >正文

小程序微服务单个SSL证书部署多个项目解决方案

玩过小程序的人,都知道小程序上线的要求比较苛刻,并不是上架审核苛刻,而是前期的服务器上架比较麻烦,需要配置SSL证书,并且只能使用80端口,或者你已经成功部署了一个微服务,但是当你第二小程序要上线的时候,你发现又需要申请证书,重新配置一遍,非常麻烦,我就在想有办法解决这个问题吗?后来发现Nginx的反向代理可以实现我的想法,然后就撸起袖子就是干了,写这篇文章主要是为了分享我的解决思路

步骤介绍

项目是以Tomcat为运行环境,其他运行环境自行百度

  • 1.配置多个Tomcat项目
  • 2.配置Nginx的反向代理
  • 3.配置Nginx的SSL证书

1、配置多个Tomcat项目

多个项目可以放在同一个Tomcat的webapps目录下,但是这样有一点不好的是,一旦其中一个项目需要更新重新,导致正在运行的项目也使用不了,所以我的项目都是一对一,一个项目使用一个Tomcat运行,互不影响,配置非常简单

1、只需要修改tomcat的server.xml文件端口号就行port="82"

<Connector port="82" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
复制代码

2、需要注意的是两个tomcat需要配置各自的profile路径

修改命令
vi /etc/profile


####### JDK #######
export JAVA_HOME=/root/xxx/jdk1.x.x
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

####### 工程1 tomcat1 #######
export CATALINA_BASE=/root/xxx/tomcat1
export CATALINA_HOME=$CATALINA_BASE
export TOMCAT_HOME=$CATALINA_BASE

#######  工程2  tomcat2  #######
export CATALINA_2_BASE=/root/xxx/tomcat2
export CATALINA_2_HOME=$CATALINA_2_BASE
export TOMCAT_2_HOME=$CATALINA_2_BASE
复制代码

编辑完后记得使用source /etc/profile才会生效

3、在/tomcat2/bin/catalina.sh添加下面代码,放在此句话下面即可

# OS specific support. $var _must_ be set to either true or

# OS specific support.  $var _must_ be set to either true or false.
export CATALINA_BASE=$CATALINA_2_BASE
export CATALINA_HOME=$CATALINA_2_HOME
复制代码

2、配置Nginx的反向代理

Nginx的安装,这里就不给出来了,也很简单我这里就放出链接:Nginx 安装配置

需要注意,直接安装如果提示需要依赖包的话运行下面的命令 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 安装成功后就是配置Nginx的配置文件了,默认的安装路径在/usr/local/nginx, 配置文件在/conf/nginx.conf

修改 vi nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #代理项目路径
        location /AA { #可以是本地IP localhost
            proxy_pass http://localhost/project1/ ;
        }

        location /BB { #也可以是公网IP和设置端口
            proxy_pass http://IP:81/project2/ ;
        }
        
        location /CC { #可以映射域名
            proxy_pass http://域名:81/project3/ ;
        }
        
        location /DD { #可以设置https的项目路径
            proxy_pass https://域名:81/project4/ ;
        }
        
        #有多少个项目可以一直加
        location /xx {
            proxy_pass xxx ;
        }        
    
    }
    
}

复制代码

这样就可以配置好了反向代理 以下包含了 Nginx 常用的几个命令:

/usr/local/webserver/nginx/sbin/nginx -t #可以查看配置文件是否有错 /usr/local/webserver/nginx/sbin/nginx -s reload #重新载入配置文件 /usr/local/webserver/nginx/sbin/nginx -s reopen #重启 Nginx /usr/local/webserver/nginx/sbin/nginx -s stop #停止 Nginx

3、配置Nginx的SSL证书

在nginx.conf文件配置完代理后,往下拉会看到#HTTPS server的配置,默认是注释掉的,解开注释照着我的配置文件配置 SSL的公钥和私钥文件

    server {
        listen 443 ssl;
        server_name localhost; #填写绑定证书的域名
        ssl_certificate xxx.crt;
        ssl_certificate_key xxx.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;

        #代理项目路径
        location /prophet {
            proxy_pass http://127.0.0.1:82/AA/ ;
        }

        location /shoplus {
            proxy_pass http://127.0.0.1:81/BB/ ;
        }
    }

复制代码

下面这一行代码看需求加,有些项目不支持https可以不设置下面这句话 rewrite ^/(.*)$ https://$server_name$1 permanent; #这句是代表 把http的域名请求转成https 这句话加载第一个server 配置里就可以了 配置完后记得重新加载配置文件生效

这样我们的单个SSL证书Nginx反向代理就实现了。

总结

写得不好请见谅,有问题可以直接在评论区提出,如有更好的方法可以分享一下思路,虽然本人已经从运维转做移动端了,但是对服务器还是非常感兴趣的,闲着的时候也会鼓捣一下,希望能找到可以讨论技术的大拿。

  • 特别鸣谢 菜鸟笔记

转载于:https://juejin.im/post/5c651f9b51882562260d1e24

相关文章:

  • Async注解的使用,异步进行代码解耦
  • 我们在编写python代码时应该注意那几件事 !
  • Collection和Collections的区别是什么?
  • 根据出生日期计算年龄
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • centos7系统安装完成初始化
  • tkinter内嵌Matplotlib系列(一)之解读官网教材
  • SpringMvc4.0.0+Spring4.0.0+Mybatis3.2.7整合开发
  • js-时间戳转字符串
  • PYTHON2.day02
  • POJ3635 Full Tank
  • 家庭记事本开发进度1
  • Winodws 10 美化与调优
  • matlab-基础 快捷键 命令行窗口 输入多行命令
  • Redis在Web项目中的应用与实践
  • Angular数据绑定机制
  • flutter的key在widget list的作用以及必要性
  • HashMap剖析之内部结构
  • Java IO学习笔记一
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SpringBoot几种定时任务的实现方式
  • use Google search engine
  • 编写符合Python风格的对象
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 无服务器化是企业 IT 架构的未来吗?
  • 原生JS动态加载JS、CSS文件及代码脚本
  • #FPGA(基础知识)
  • #if 1...#endif
  • #QT(智能家居界面-界面切换)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (003)SlickEdit Unity的补全
  • (1)(1.13) SiK无线电高级配置(六)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)STL算法之搜索
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (pytorch进阶之路)扩散概率模型
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (三十五)大数据实战——Superset可视化平台搭建
  • (转)Linux下编译安装log4cxx
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .net 4.0发布后不能正常显示图片问题
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • ??javascript里的变量问题