node提供小程序接口需配置https+nginx

1,097 阅读3分钟

前言

因为微信小程序规定接口的地址域名必须是https协议,所以就有了升级http的历程。主要步骤有:

  • 域名解析到对应服务器
  • 域名申请到对应的ssl证书
  • 给服务器配置好ssl证书
  • 然后给nginx配置到相应的域名
  • 然后重启完成

解析域名并申请ssl证书

在阿里云控制台搜索ssl,然后点击到ssl控制面板 然后去支付购买,然后等几分钟就认证成功了,然后去ssl证书管理页面列表就可以看到你申请的证书了。然后操作栏有下载按钮,下载对应的版本的证书部署(我这里用的是nginx所以下载的是nginx版本的证书)

安装nginx服务器

安装nginx的方式有很多,我这里用的是yum的方式安装的。当使用以下命令安装Nginx时,发现无法安装成功

yum install -y nginx

需要做一点处理。

安装Nginx源

执行以下命令:

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装该rpm后,我们就能在/etc/yum.repos.d/ 目录中看到一个名为nginx.repo 的文件。

安装Nginx

安装完Nginx源后,就可以正式安装Nginx了。

yum install -y nginx

Nginx默认目录

输入命令:

whereis nginx

即可看到类似于如下的内容:

nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx

以下是Nginx的默认路径:

(1) Nginx配置路径:/etc/nginx/

(2) PID目录:/var/run/nginx.pid

(3) 错误日志:/var/log/nginx/error.log

(4) 访问日志:/var/log/nginx/access.log

(5) 默认站点目录:/usr/share/nginx/html

事实上,只需知道Nginx配置路径,其他路径均可在/etc/nginx/nginx.conf 以及/etc/nginx/conf.d/default.conf 中查询到。

常用命令

(1) 启动:

nginx

(2) 测试Nginx配置是否正确:

nginx -t

(3) 优雅重启:

nginx -s reload

(4) 查看nginx的进程号:

ps -ef |grep nginx

(5)nginx服务停止

nginx -s stop
kill -9 pid

当然,Nginx也可以编译源码安装,步骤相对要繁琐一些,总的来说,还是比较简单的。

部署证书

  1. 首先在/etc/nginx 文件夹下新建一个cert文件夹,然后把下载的相应证书上传到这个文件夹
  2. 找到/etc/nginx/nginx.conf 配置文件,然后找到以下内容部分进行修改
server {
    listen 443;
    server_name nginx.wangyuanweb.top; // 你的域名
    ssl on;
    root /var/www/nginx.wangyuanweb.top // 前台文件存放文件夹,可改成别的
    index index.html index.htm;// 上面配置的文件夹里面的index.html
    ssl_certificate  cert/214292799730473.pem;// 改成你的证书的名字
    ssl_certificate_key cert/214292799730473.key;// 你的证书的名字
    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 / {
        index index.html index.htm;
    }
}
server {
    listen 80;
    server_name nginx.wangyuanweb.top;// 你的域名
    rewrite ^(.*)$ https://$host$1 permanent;// 把http的域名请求转成https
}
  1. 配置完成后,检查一下nginx配置文件是否可用,有successful表示可用。
$ nginx -t // 检查nginx配置文件

4.配置正确后,重新加载配置文件使配置生效:

$ nginx -s reload // 使配置生效
  1. 至此,nginx的https访问就完成了,并且通过rewrite方式把所有http请求也转成了https请求,更加安全。
  2. 如需重启nginx,用以下命令:
$ service nginx stop // 停止
$ service nginx start // 启动
$ service nginx restart // 重启

配置https并支持node.js接口

配置http

只需修改server字段里的内容。 server_name表明域名;location表示域名分地址,可以为一个域名的多个分支配置多个ip端口地址,通过多个location完成;proxy_pass为域名分地址关联的ip端口地址。

server {
        listen       80;
        server_name  nginx.wangyuanweb.top;
        location / {
            proxy_pass http://localhost:7001;
        }
    }

配置https

新建一个server段落,与配置http的server同级。 ssl_certificate配置ssl证书地址,ssl_certificate_key配置ssl密钥地址。其它同http。

server {
        listen       443;
        server_name  nginx.wangyuanweb.top;
        ssl           on;
        ssl_certificate cert/214292799730473.pem;
        ssl_certificate_key cert/214292799730473.key;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://localhost:9999/;
            proxy_ssl_session_reuse off;
            proxy_set_header Host $http_host;
            proxy_cache_bypass $http_upgrade;
            proxy_redirect off;
        }
    }

重启nginx

nginx -s reload

nodejs

nodejs端不需要做特殊处理,直接启动你的服务端代码。