前言

最近在对接一个公共平台的api,在平台中配置我们服务的地址,为了方便本地调试,在自己的阿里云服务器上搭建了ngrok作为代理,访问我本地部署的服务,然后就行调试。

一、环境准备

  • 域名
  • 阿里云服务器

二、安装

2.1 安装go
apt-get install golang
# 验证
go verison
2.2 准备域名

在阿里云上配置你的域名解析,直接配置个二级域名就行

2.3 搭建ngrok
2.3.1 安装
# 获取源码
git clone https://github.com/inconshreveable/ngrok.git
cd ngrok
# 生成ssl证书
export NGROK_DOMAIN="上面阿里云上面配置的域名"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
# 替换证书
cp base.pem assets/client/tls/ngrokroot.crt
# 编译
make release-server release-client
# windows 客户端
GOOS=windows GOARCH=amd64 make release-client
# mac 客户端
GOOS=darwin GOARCH=amd64 make release-client
# 编译后的相关命令都在bin目录下
2.3.2 启动ngrok-server
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="上面阿里云配置的域名" -httpAddr=":8081" -httpsAddr=":8082"
# 上面的端口号可以自己选择,阿里云的话,需要在安全组中开放这两个端口,同时ngrokd会开放4443端口跟客户端通信,这个端口也开放出来
2.3.3 启动客户端(以windows为例)
  • 拷贝上面编译好的exe 客户端文件到本机电脑上
# exe 同级目录,新建ngrok.cfg文件,内容如下
server_addr: "上面阿里云配置的域名:4443"
trust_host_root_certs: false
  • 启动
./ngrok.exe -config=ngrok.cfg -log=ngrok.log -subdomain=自定义名称 8080 # 自己要代理的服务端口

三、补充

  • 调试的时候ngrokd不支持 & 后台运行,可以用screen
  • 如果域名变了,重新生成证明,重新编译