ngrok内网穿透:能够将你本机的HTTP服务(站点)或TCP服务,通过部署有ngrok服务的外网伺服器暴露给外网访问!实现本地开发,外网调试。
准备:一台外网可访问的主机,且有域名解析至该主机上。
- 橘色屏幕的笔记本是你的工作机器,安装了ngrok客户端
- 服务器安装了ngrok的服务端(ngrokd)
- 利用ngrok 8080命令可以将你本机的8080端口暴露给反向代理至服务器的某个二级域名如:kl.ngrok.wili.us.cn
- 别人通过kl.ngrok.wili.us.cn就可以访问你本机8080端口上的站点内容了。
一、安装go、git工具
sudo apt-get update
sudo apt-get install git
sudo apt-get install golang
# 查看go版本
go version
二、获取ngrok源码
git clone https://github.com/inconshreveable/ngrok.git
三、更改ngrok域名
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="ngrok.wili.us"
ngrok.wili.us 替换成自己的域名
四、生成证书
$NGROK_DOMAIN 替换成自己的域名。这里我的是 ngrok.wili.us
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
生成六个文件:
Ngrok通过bindata将ngrok源码目录下的assets目录(资源文件)打包到可执行文件(ngrokd和ngrok)中去,assets/client/tls和assets/server/tls下分别存放着用于ngrok和ngrokd的默认证书文件,我们需要将它们替换成我们自己生成的(因此这一步务必放在编译可执行文件之前)
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
五、编译ngrok服务端
make release-server
ngrokd 就是服务端
六、编译客户端
linux客户端
GOOS=linux GOARCH=amd64 make release-client
编译Mac版本客户端
GOOS=darwin GOARCH=amd64 make release-client
七、服务端启动
ngrokd -domain="ngrok.wili.us" -httpAddr=":80" -httpsAddr=":8089"
八、客户端启动
在和客户端相同文件目录bin下,新建一个
ngrok.cfg
配置文件
vim ngrok.cfg
添加:
server_addr: "ngrok.wili.us:4443"
trust_host_root_certs: false
启动:subdomain后面的自定义就好
./bin/ngrok -subdomain mp -config=./ngrok.cfg 5000
备注:客户端和服务端必须在相同证书下编译,不能分开编译。
参考: 手把手教你搭建ngrok服务-轻松外网调试本机站点
一分钟实现内网穿透(ngrok服务器搭建)
https://github.com/inconshreveable/ngrok/blob/master/docs/SELFHOSTING.md
https://github.com/inconshreveable/ngrok/blob/master/docs/DEVELOPMENT.md