前言

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

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

解析域名并申请ssl证书

image.png
在阿里云控制台搜索ssl,然后点击到ssl控制面板

image.png

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

安装nginx服务器

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

  1. yum install -y nginx

需要做一点处理。

安装Nginx源

执行以下命令:

  1. 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了。

  1. yum install -y nginx

Nginx默认目录

输入命令:

  1. whereis nginx

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

  1. 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) 启动:

  1. nginx

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

  1. nginx -t

(3) 优雅重启:

  1. nginx -s reload

(4) 查看nginx的进程号:

  1. ps -ef |grep nginx

(5)nginx服务停止

  1. nginx -s stop
  1. kill -9 pid

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

部署证书

  1. 首先在/etc/nginx 文件夹下新建一个cert文件夹,然后把下载的相应证书上传到这个文件夹
  2. 找到/etc/nginx/nginx.conf 配置文件,然后找到以下内容部分进行修改

    1. server {
    2. listen 443;
    3. server_name nginx.wangyuanweb.top; // 你的域名
    4. ssl on;
    5. root /var/www/nginx.wangyuanweb.top // 前台文件存放文件夹,可改成别的
    6. index index.html index.htm;// 上面配置的文件夹里面的index.html
    7. ssl_certificate cert/214292799730473.pem;// 改成你的证书的名字
    8. ssl_certificate_key cert/214292799730473.key;// 你的证书的名字
    9. ssl_session_timeout 5m;
    10. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    11. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    12. ssl_prefer_server_ciphers on;
    13. location / {
    14. index index.html index.htm;
    15. }
    16. }
    17. server {
    18. listen 80;
    19. server_name nginx.wangyuanweb.top;// 你的域名
    20. rewrite ^(.*)$ https://$host$1 permanent;// 把http的域名请求转成https
    21. }
  3. 配置完成后,检查一下nginx配置文件是否可用,有successful表示可用。

    1. $ nginx -t // 检查nginx配置文件

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

    1. $ nginx -s reload // 使配置生效
  4. 至此,nginx的https访问就完成了,并且通过rewrite方式把所有http请求也转成了https请求,更加安全。

  5. 如需重启nginx,用以下命令:
    1. $ service nginx stop // 停止
    2. $ service nginx start // 启动
    3. $ service nginx restart // 重启

    配置https并支持node.js接口

    配置http

    只需修改server字段里的内容。
    server_name表明域名;location表示域名分地址,可以为一个域名的多个分支配置多个ip端口地址,通过多个location完成;proxy_pass为域名分地址关联的ip端口地址。
    1. server {
    2. listen 80;
    3. server_name nginx.wangyuanweb.top;
    4. location / {
    5. proxy_pass http://localhost:7001;
    6. }
    7. }

    配置https

    新建一个server段落,与配置http的server同级。
    ssl_certificate配置ssl证书地址,ssl_certificate_key配置ssl密钥地址。其它同http。
    1. server {
    2. listen 443;
    3. server_name nginx.wangyuanweb.top;
    4. ssl on;
    5. ssl_certificate cert/214292799730473.pem;
    6. ssl_certificate_key cert/214292799730473.key;
    7. ssl_session_timeout 10m;
    8. ssl_ciphers HIGH:!aNULL:!MD5;
    9. ssl_prefer_server_ciphers on;
    10. location / {
    11. proxy_set_header X-Real-IP $remote_addr;
    12. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    13. proxy_set_header X-NginX-Proxy true;
    14. proxy_pass http://localhost:9999/;
    15. proxy_ssl_session_reuse off;
    16. proxy_set_header Host $http_host;
    17. proxy_cache_bypass $http_upgrade;
    18. proxy_redirect off;
    19. }
    20. }

    重启nginx

    nginx -s reload

    nodejs

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