ngrok搭建+阿里云SSL证书+低成本搭建微信小程序本地调试环境
背景
小程序的调试,接口需要使用https请求,这就要求我们把接口代码部署到公网服务器、把自己的域名DNS解析到公网服务器同时还需要有SSL证书。
本教程解决的问题
开发阶段节省成本(特别是个人开发者)
现在的云服务器太贵了,阿里云、华为云、腾讯云这些厂商的服务器随便点点低配的都要100-200+/月。如果在小程序的开发阶段能直接调用本地接口进行调试 (这条路走不通),或者能通过低成本的服务器搭建ngrok做转发就能一定程度减少不必要的开支(因为有可能项目做到一半就不做了…)。
PS:现在也有现成ngrok服务有些还是免费的,如果不想自己折腾就不用看下面的内容了
必要物料(域名+服务器不超100)
- 一个已经备案的域名(.top域名20-30/年,备案免费)
- 一台阿里云最丐版服务器(53/月)
https://ecs-buy.aliyun.com/wizard/#/prepay/cn-hangzhou?fromDomain=true
3.免费的SSL证书(阿里云每个账号每年能白嫖20个证书)
ngrok搭建
我使用的环境是centos 8.4,远程登录用的final Shell
1.安装git 拉取ngrok源码
yum install -y gcc gcc-c++ git zlib-devel openssl-devel perl
2.安装golang 编译ngrok需要
go的安装目录我是放到了/usr/local/ 可以按个人喜好放到其他位置
wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz
tar -C /usr/local/ -zxvf go1.8.linux-amd64.tar.gz
3.配置环境变量
配置go路径到环境变量
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
source /etc/profile
检测go的安装
go version
# 正确的话应该出现 go version go1.16.12 linux/amd64
4.ngrok的下载和安装
ngrok的安装以前很方便现在因为某些原因有些依赖装得很慢甚至是装不了,大家可以使用我共享得版本下载去使用。
链接: https://pan.baidu.com/s/1xPm88YqLocXDMHwP_yMAyA 提取码: 373q
下载下来上传到服务器,我这里传到的是/root/,解压后需要替换证书、修改一行代码就可以正常编译了
5.替换证书
5.1证书申请
证书去阿里云控制搜SSL就能找到对应的菜单,然后申请证书就行,需要注意的证书域名和ngork的域名要对应,也就是假设我希望服务搭建好以后我的接口地址是api.abcd.com,那么你在申请证书的时候填的域名也要是api.abcd.com,不然会报错无法连接。
申请好以后点击下载,下载可以选nginx或者其他。下载的压缩包有以下文件
在ngrok目录下新建一个文件夹来存放你的证书
我的目录叫AliYunCert
5.2.替换证书
覆盖原来的文件,分别执行下面的命令。选择y覆盖
cp /root/ngrok/AliYunCert/你的证书的pem文件文件名.pem assets/client/tls/ngrokroot.crt
cp /root/ngrok/AliYunCert/你的证书的pem文件文件名.pem assets/server/tls/snakeoil.crt
cp /root/ngrok/AliYunCert/你的证书的key文件文件名.key assets/server/tls/snakeoil.key
6.修改ngrok源码,将默认的服务器域名改成你的
注意我的路径是/root/ngrok/src/ngrok/client,model.go文件24行域名改成上面的api.abcd.com要一致!
7.编译服务端和客户端
# 服务端
GOOS=linux GOARCH=amd64 make release
#客户端
#windows 64位
GOOS=windows GOARCH=amd64 make release-client
#windows 32位
GOOS=windows GOARCH=amd64 make release-client
#Mac OS 32位
GOOS=darwin GOARCH=386 make release-client
#Mac OS 64位
GOOS=darwin GOARCH=amd64 make release-client
#Linux 64位
GOOS=linux GOARCH=amd64 make release-client
#ARM 平台
GOOS=linux GOARCH=arm make release-client
编译好以后文件在/root/ngrok/bin
8.客户端使用
下载客户端到本地电脑,编写启动cfg文件和启动bat脚本
ngrok.cfg内容
这里有一个坑!就是server_addr要跟上面申请证书时候填写的域名、model.go里面填写的域名一致
不然就会报 remote error: tls: bad certificate
server_addr: "api.abcd.com:4443"
trust_host_root_certs: false
start.bat内容
ngrok -config ngrok.cfg -subdomain api 127.0.0.1:8080
9解析域名
将你的域名添加一条A记录,解析到你部署ngrok的服务器ip
10启动服务端/客户端
注意启动服务端的时候-domain参数只填写域名 就好了不要加api,不然客户端连接以后会多一层
举例:你的域名是abcd.com你期望接口地址是api.abcd.com
SSL证书申请时填写的域名:api.abcd.com
model.go修改的域名:api.abcd.com
客户端ngrok.cfg里面的server_addr:api.abcd.com
客户端start.bat里面-subdomain参数: api
服务器端启动命令-domain:abcd.com
./ngrokd -domain="abcd.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"

直接双击start.bat运行客户端
浏览器测试
小程序调用
更多推荐




所有评论(0)