配置域名(需支持泛域名功能)
子域名
记录类型
线路类型
记录值
ngrok
A 记录
通用
170.10.10.100
*.ngrok
A 记录
通用
170.10.10.100
安装 git …
安装并配置好 go
1 2 3 4 5 6 7 sudo add -apt-repository pp a:gophers /archive sudo apt-get update sudo apt-get install golang-1.10 -go -y mkdir -p $HOME/c mkdir -p $HOME/w ln -sf /usr/lib/go -1.10 $HOME/c /go
1 2 3 export GOROOT =$HOME /c/go export GOPATH =$HOME /w/go export PATH =$GOROOT /bin:${GOPATH} /bin:$PATH
编译生成目标文件 创建并进入临时目录:mkdir $HOME/t && cd $_
创建文件build_ngrok.sh
加入以下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #!/bin/sh read -p "Input your domain name:" DOMAINif [ "$DOMAIN " = "" ];then echo Please input your domain name. exit 0 fi resultFileName=ngrok_`echo ${DOMAIN} | sed 's/\./_/g' ` currentPwd=$(pwd ) echo current path: $currentPwd go get github.com/inconshreveable/ngrok cd $GOPATH /src/github.com/inconshreveable/ngrokgit clean -df git checkout -- . openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$DOMAIN " -days 5000 -out rootCA.pem openssl genrsa -out device.key 2048 openssl req -new -key device.key -subj "/CN=$DOMAIN " -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.crtcp device.crt assets/server/tls/snakeoil.crtcp device.key assets/server/tls/snakeoil.keymake release-server GOOS=linux GOARCH=amd64 make release-client GOOS=windows GOARCH=amd64 make release-client GOOS=linux GOARCH=arm make release-client GOOS=darwin GOARCH=amd64 make release-client mkdir -p bin/tlsmkdir -p bin/outcp device.crt bin/tls/snakeoil.crtcp device.key bin/tls/snakeoil.keyecho 'nohup ./ngrokd -tlsKey="tls/snakeoil.key" -tlsCrt="tls/snakeoil.crt" -domain=' "$DOMAIN " ' -httpAddr=":80" -httpsAddr=":443" > out/nohupd.out 2>&1 &' > ./bin/start.shchmod +x ./bin/start.shecho "server_addr: $DOMAIN :4443" > ./bin/ngrok.cfgecho "trust_host_root_certs: false" >> ./bin/ngrok.cfgecho 'nohup ./ngrok -config=./ngrok.cfg -subdomain=blog -proto=http 8078 > /dev/null 2>&1 &' > ./bin/blog.shchmod +x ./bin/ngrok_blog.shmv bin ${resultFileName} tar -zcvf ${resultFileName} .tar.gz ${resultFileName} mv ${resultFileName} .tar.gz $currentPwd /${resultFileName} .tar.gzgit clean -df git checkout -- . echo ok! result: ${resultFileName} .tar.gz
运行 sh build_ngrok.sh
根据提示输入已经配置好的域名,例如:ngrok.lyloou.com
在域名对应的服务器上运行:./start.sh
(这样,服务器端就完成了)
打包和解压 1 2 tar -zcvf ngrok_lyloou_com.tar.gz bin tar -zxvf ngrok_lyloou_com.tar.gz
下载 realpath ngrok_lyloou_com.tar.gz # 获取文件路径 scp root@170.10.0.100 :/root/t/ngrok_lyloou_com.tar.gz ngrok_lyloou_com.tar.gz # 从服务器拉取文件
运行服务器(已经在上面的build_ngrok.sh
中配置过了) 1 2 3 4 5 6 7 #!/bin/sh ./ngrokd -domain="ngrok.lyloou.com" -httpAddr=":80" -httpsAddr=":443" mkdir outchmod +x ngrokdnohup ./ngrokd -domain="ngrok.lyloou.com" -httpAddr=":80" -httpsAddr=":443" > out/nohup_log.out 2>&1 &
运行客户端(在上面的build_ngrok.sh
中配置并生成了一个案例ngrok_blog.sh
) 添加配置 ngrok.cfg:
1 2 server_addr: "ngrok.lyloou.com:4443" trust_host_root_certs: false
1 2 #!/bin/sh nohup ./ngrok -config=./ngrok.cfg -subdomain=lou -proto=http 80 > /dev/null 2>&1 &
其他 如果在云平台中运行 ngrok 服务, 需要将4443端口
和80端口
添加到安全组中,如下表:
授权策略
协议类型
端口范围
授权类型(全部)
授权对象
允许
自定义 TCP
4443/4443
IPv4 地址段访问
0.0.0.0/0
允许
自定义 TCP
80/80
IPv4 地址段访问
0.0.0.0/0
参考资料
客户端 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #一、系统说明 - Windows 使用`windows_amd64` 版本- Mac 使用`darwin_amd64` 版本- Linux 使用`linux` 版本#二、配置说明 .\ngrok.exe -config=.\ngrok.cfg -subdomain=lou -proto=http 80 - subdomain 指向自定义的子域名- proto 指向使用的协议- 随后的数字表示:准备映射出去的端口号# 三、使用方法 - Windows 系统执行 ngrok.bat- Mac 和 Linux 系统执行 ngrok.sh# 四、访问方式 浏览器中打开链接: [http://lou.ngrok.lyloou.com ](http://lou.ngrok.lyloou.com )
源码 https://github.com/lyloou/build_ngrok