1. 为什么要使用ngrok?
ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。
作为一个Web开发者,我们有时候会需要临时地将一个本地的Web网站部署到外网,以供他人体验评价或协助调试等等,通常我们会这么做:
找到一台运行于外网的Web服务器
服务器上有网站所需要的环境,否则自行搭建
将网站部署到服务器上
调试结束后,再将网站从服务器上删除
只不过是想向朋友展示一下网站而已,要不要这么麻烦,累感不爱╰(`□′)╯
2.服务端编译
mkdir /root/goproj
cd /root/goproj#下载go语言编译器
wget http://golangtc.com/static/go/1.7/go1.7.linux-amd64.tar.gz
tar xvf go1.7.linux-amd64.tar.gz#设置环境变量
vi /etc/profile
export GOROOT=/root/goproj/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/root/goproj/ngrok
source /etc/profilecd /root/goproj
git clone https://github.com/inconshreveable/ngrok.git
cd /root/goproj/ngrok#创建证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=t.test.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=t.test.com" -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.keywget https://github.com/inconshreveable/go-update/archive/v0.zip
wget https://github.com/go-yaml/yaml/archive/v1.zip
#将下载的文件解压后的go文件放到
mkdir /root/goproj/ngrok/src/gopkg.in/inconshreveable/go-update.v0
mkdir /root/goproj/ngrok/src/gopkg.in/yaml.v1cd /root/goproj/ngrok
make release-server#服务端启动
/root/goproj/ngrok/bin/ngrokd -domain="t.test.com" -httpAddr=":8080" -httpsAddr=":8081" -tunnelAddr=":4443" &
3.客户端编译
3.1.Windows客户端
cd /root/goproj/go/src
GOOS=windows GOARCH=amd64 ./make.bash
cd /root/goproj/ngrok
GOOS=windows GOARCH=amd64 make release-client
#同理,这里的amd64是64位系统,32位改成386
#会在 bin/windows_amd64 目录下生成ngrok客户端程序,将ngrok.exe下载到windows操作系统
3.2.Mac客户端
cd /root/goproj/go/src
GOOS=darwin GOARCH=amd64 ./make.bash
cd /root/goproj/ngrok
GOOS=darwin GOARCH=amd64 make release-client
#会在 bin/darwin_amd64/ 目录下生成ngrok客户端程序#新建 ngrok.cfg 文件,内容:
server_addr: "t.test.com:4443"
trust_host_root_certs: true#客户端启动
./ngrok -config=ngrok.cfg -subdomain=a 8080