前言
安装ngrok服务器,不对外服务可以使用任意域名然后修改hosts,但是对外提供服务必须满足下面的一些条件:
- 一台有公网IP的服务器
- 一个映射到公网IP的域名
服务端安装与配置
安装Git
sudo apt-get install git
安装golang
尽量保持最新版本安装,所以弃用apt-get install golang
的方式
官网或其他渠道下载golang
wget https://studygolang.com/dl/golang/go1.12.linux-amd64.tar.gz
解压golang
至usr/bin
,也可以指定其他位置
tar zxf go1.12.linux-amd64.tar.gz -C /usr/bin
添加环境变量并即时生效
echo "export PATH=/usr/bin/go/bin:$PATH" >> /etc/profile
source /etc/profile
查看是否安装成功
go version
源码编译ngrok
从github上克隆ngrok仓库
cd /usr/local
git clone https://github.com/tutumcloud/ngrok.git ngrok
生成证书
注意这一步非常重要,如果需要配置自定义域名,则必须生成证书,对accesets
中的证书进行替换,然后同时编译服务端和客户端,确保证书一致,否则会有各种错误,如:Failed to read message: remote error: bad certificate
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=uegame.cn" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=uegame.cn" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
GOOS=linux GOARCH=386
make clean
make release-server release-client
编译生成服务端
cd ngrok
make release-server
编译完成后当前目录会生成ngrokd
服务端程序
扫描二维码关注公众号,回复:
5599517 查看本文章
启动服务
./ngrokd -domain="www.uegame.cn" -httpAddr=":80" -httpsAddr=":443" -log ./access.log
客户端安装与配置
编译生成客户端
cd /usr/local/ngrok
GOOS=linux GOARCH=amd64 make release-client
编译完成后当前目录会生成ngrok
客户端程序
客户端配置
注意不同ngrok
的配置,网上有些教程是cfg
配置,而最新github仓库给出的却是yml
配置,具体配置可参考:
https://github.com/tutumcloud/ngrok/blob/master/docs/DEVELOPMENT.md
touch ngrok.yml
vi ngrok.yml
//输入
server_addr: ngrok.6cm.top:4443
trust_host_root_certs: false
执行脚本
启动指定日志记录,子域名为blog
,本地端口为80
的通道
./ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=blog 80