博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序微服务单个SSL证书部署多个项目解决方案
阅读量:7232 次
发布时间:2019-06-29

本文共 4008 字,大约阅读时间需要 13 分钟。

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

步骤介绍

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

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

1、配置多个Tomcat项目

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

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

复制代码

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

修改命令vi /etc/profile####### JDK #######export JAVA_HOME=/root/xxx/jdk1.x.xexport CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$PATH####### 工程1 tomcat1 #######export CATALINA_BASE=/root/xxx/tomcat1export CATALINA_HOME=$CATALINA_BASEexport TOMCAT_HOME=$CATALINA_BASE#######  工程2  tomcat2  #######export CATALINA_2_BASE=/root/xxx/tomcat2export CATALINA_2_HOME=$CATALINA_2_BASEexport 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_BASEexport CATALINA_HOME=$CATALINA_2_HOME复制代码

2、配置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

你可能感兴趣的文章
Spring MVC 注解和XML的区别
查看>>
利用Swoole实现PHP+websocket直播,即使通讯代码,及linux下swoole安装基本配置
查看>>
Elastic学习第一天遇到的问题以及添加的一些操作
查看>>
Python lambda介绍
查看>>
BSON与JSON的区别
查看>>
文件系统存储数据,与数据库系统存储数据的差别
查看>>
linux之awk
查看>>
第九章 接口
查看>>
XCode4.2.1 使用NavigationController实现View切换
查看>>
如何让NSURLConnection在子线程中运行
查看>>
es6-Generator
查看>>
Python3.6单例模式报错TypeError: object() takes no parameters的解决方法
查看>>
HTML常用标记(选择性,不全)
查看>>
用一辈子去领悟的22条生活真谛
查看>>
1968: [Ahoi2005]COMMON 约数研究
查看>>
discuz 启用html code 显示问题
查看>>
A1027. Colors in Mars (20)
查看>>
[SRM568]DisjointSemicircles
查看>>
9个很有发展潜力的PHP开源项目
查看>>
python中pymysql数据编码的问题
查看>>