前言
因为微信小程序规定接口的地址域名必须是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也可以编译源码安装,步骤相对要繁琐一些,总的来说,还是比较简单的。
部署证书
- 首先在/etc/nginx 文件夹下新建一个cert文件夹,然后把下载的相应证书上传到这个文件夹
找到/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
}
配置完成后,检查一下nginx配置文件是否可用,有successful表示可用。
$ nginx -t // 检查nginx配置文件
4.配置正确后,重新加载配置文件使配置生效:
$ nginx -s reload // 使配置生效
至此,nginx的https访问就完成了,并且通过rewrite方式把所有http请求也转成了https请求,更加安全。
- 如需重启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端不需要做特殊处理,直接启动你的服务端代码。