开发微信小程序需要部署项目到服务器。要求必须是443端口。但是一个443端口只能监听一个服务器。所以就出现了一个问题就是每次开发一个小程序就需要买一个服务器。觉得特别多余。后来查到了有一种方式就是通过nginx配置反向代理,服务器ip绑定不同域名,然后nginx根据不同的域名去配置转发到其他端口。这样就可以实现一个服务器共存多个小程序后端项目了。

具体操作如下↓

 

Nginx环境安装

我的服务器镜像为Centos7.。

Nginx的安装参考 https://ken.io/note/centos-quickstart-nginx-setup

  • 添加RPM包进行安装
#添加Nginx包
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

 

#安装
sudo yum -y install nginx
  • 启动Nginx并设置为开机启动

#启动服务

sudo systemctl start nginx

#(如果启动失败,可能是Apache等服务占用了80端口,关掉相应服务/修改端口即可)

 

#设置nginx开机启动

sudo systemctl enable

  • 开放端口

#开放80端口(nginx默认监听80端口)

firewall-cmd --add-port=80/tcp --permanent

 

#重载防火墙规则

firewall-cmd --reload

关于端口开放,也可以直接去控制台添加规则。

 

以上操作完成之后就安装好了nginx

 

Nginx配置修改

    接下来需要对nginx的配置文件进行修改。我们为了方便管理,直接创建一个通用配置文件。

#1、新增配置文件夹 
sudo mkdir /etc/nginx/server 
#2、修改默认配置(加载该文件夹下的配置) 
sudo vi /etc/nginx/nginx.conf 
#3、在http属性下增加: 
include /etc/nginx/server/*.conf;

 

配置文件内容:

server { 
 listen 443 ssl; 
 server_name wx.gzdecision.cn; 
  
 ssl on; 
 ssl_certificate /etc/ssl/private/1_wx.gzdec*****.crt; 
 ssl_certificate_key /etc/ssl/private/2_wx.gzdec*****.key; 
  
 location / { #转发或处理 
 proxy_pass http://wx.gzdecision.cn:82; 
 } 
  
} 
  
server { 
 listen 443 ssl; 
 server_name www.eangaie.cn; 
  
 ssl on; 
 ssl_certificate /etc/ssl/private/******_www.eangaie.cn.crt; 
 ssl_certificate_key /etc/ssl/private/******_www.eangaie.cn.key; 
  
 location / { #转发或处理 
 proxy_pass http://www.eangaie.cn:81; 
 } 
  
}

这里我让他监听两个443端口,然后分别转发到81、82端口。并在81、82端口运行两个javaweb项目。

 

项目运行

用ps -ef|grep java命令可以查到我运行的两个javaweb项目。里面其中一个是在81端口、一个是在82端口

nginx 443端口很慢 nginx转发443端口_java

 

Ssl证书获取

Ssl证书我是在控制台下载的用于nginx的证书。然后创建一个用户储存证书的文件夹。并在nginx的配置文件把路径填上去。

 

运行结果

nginx 443端口很慢 nginx转发443端口_nginx_02

nginx 443端口很慢 nginx转发443端口_java_03

 

两个https的地址访问到不同的项目主页~