目录html
年前团队成员zjq在作智能设备箱运维系统的微信小程序,主要实现智能设备箱列表展现,单台监测展现,门禁开关控制等功能。作着作着,发现微信小程序的后台接口,都须要https的安全连接,IP地址+端口号无效。对,腾讯为了使得小程序的安全,使用了https规范。linux
这里推荐购买腾讯云服务器或者阿里云服务器,由于他们的服务器会配备一个公网IP,比较地适合作微信后台接口的地址。固然,若是你所装的宽带有购买了运营商的公网IP地址,只须要一台电脑,或者服务器就可使用了。原理都同样。云服务器一个优势就是切换安装操做系统很是方便,并且能够瞬间完成,好比windows server跟linux之间的切换。
本文采用腾讯云云服务商:
nginx
云服务器配置:
小程序
这里须要注意的是,能够选择活动期去购买,否则价格还挺贵的。windows
域名也能够到阿里云或者腾讯云处购买,由于他们都带有备案功能,并且碰上搞活动也不贵。
本文采用腾讯云云服务商:
后端
须要注意的是,这里域名跟IP地址的购买必须保持一致,统一在阿里云或者腾讯云。由于备案第一步须要先通过云服务商的审核,而每一个不一样的云服务商的审核规则都不相同。微信小程序
HTTPS还须要SSL证书,在以下路由能够申请到免费的SSL证书。
api
商用SSL证书根据功能不一样,收费不一样。安全
备案经过以后的状态显示为绿色的正常。服务器
在域名解析这一步咱们将经过配置云服务商的DNS服务器完成IP地址跟域名的绑定。
找到nginx.conf配置文件,添加以下配置。
#http节点中能够添加多个server节点 server{ #监听443端口 listen 443 ssl; #对应的域名,改为本身的域名就能够了 server_name dataxxxx.tech; #从腾讯云获取到的第一个文件的全路径 ssl_certificate cert/1_www.dataxxxx.tech_bundle.crt; #从腾讯云获取到的第二个文件的全路径 ssl_certificate_key cert/2_www.dataxxxx.tech.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; #由于使用的是静态的html网页,因此直接使用location就能够完成了。 location / { #文件夹 root html; #主页文件 index index.html; } }
location /newApi/ { rewrite ^/newApi/(.*)$ /$1 break; #全部对后端的请求加一个api前缀方便区分,真正访问的时候移除这个前缀 # proxy_pass http://localhost:9088; }
配置http域名,IP地址跳转到https 443接口
server{ listen 80; server_name 148.xx.xxxx.142; rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent; } server{ listen 80; server_name www.dataxxxx.tech; rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent; }
#http节点中能够添加多个server节点 server{ #监听443端口 listen 443 ssl; #对应的域名,改为本身的域名就能够了 server_name dataxxxx.tech; #从腾讯云获取到的第一个文件的全路径 ssl_certificate cert/1_www.dataxxxx.tech_bundle.crt; #从腾讯云获取到的第二个文件的全路径 ssl_certificate_key cert/2_www.dataxxxx.tech.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; #由于使用的是静态的html网页,因此直接使用location就能够完成了。 location / { #文件夹 root html; #主页文件 index index.html; } location /newApi/ { rewrite ^/newApi/(.*)$ /$1 break; #全部对后端的请求加一个api前缀方便区分,真正访问的时候移除这个前缀 # proxy_pass http://localhost:9088; } } server{ listen 80; server_name 148.xx.xxxx.142; rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent; } server{ listen 80; server_name www.dataxxxx.tech; rewrite ^/(.*)$ https://dataxxxx.tech:443/$1 permanent; }
基于HTTPS的443端口就像基于http的80端口同样,可省略。详见以下例子
本文主要总结了后台API接口暴露在公网IP或者域名上的基于SSL证书的一种HTTPS的加密方式,主要基于nginx配置。有任何疑问,我会耐心解答;有任何更好的建议或者解决方案,也请一并提出,好让我有所提升。