Ngrok 一个内网穿透工具(你想了解,可以百度谷歌)
我搭建来将本地的web工程发布到外网调试用的
下面是搭建过程:
服务器环境:centos7 x64 内核4.10
流程:
1.先安装git
执行
yum install git
</pre>
(卸载执行:yum remove git)
2.安装go编译环境
yum install golang
3.下载ngrok源码
git clone https://github.com/tutumcloud/ngrok.git ngrok
- cd进入ngrok目录,然后生成自签名证书
依次执行以下命令
>1.设置环境变量
export NGROK_DOMAIN="xxx.xxxxx.com"
(注意xxx.xxxxx.com为你自己的域名 例如你想用xxx.baidu.com来转发服务就把上面的xxx.xxxxx.com替换为 xxx.baidu.com)
>2.生成证书
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
>3.替换证书文件
cp base.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
(注意执行cp命令会询问是否overwrite,输入y回车确认替换)
5.编译服务端
执行
sudo make release-server
等待成功编译后,会在bin目录下找到ngrok
6.编译客户端
执行
sudo make release-server
#linux
make release-client
会在bin目录下找到ngrokd文件。
#windows
GOOS=windows GOARCH=amd64
make release-client
客户端exe在./bin/windows_amd64下
#mac
GOOS=darwin GOARCH=amd64
make release-client
7.服务端启动
执行
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="xxx.xxxxx.com" -httpAddr=":8081" -httpsAddr=":8082"
(注意其中xxx.xxxxx.com请替换为你自己的域名,8081和8082端口你可以自定义)
执行上一步的命令后,如果成功运行,会输出如下信息
[00:46:10 CST 2016/12/30] [INFO] (ngrok/log.(*PrefixLogger).Info:83)[registry] [tun] No affinity cache specified
[00:46:10 CST 2016/12/30] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics]Reporting every 30 seconds
[00:46:10 CST 2016/12/30] INFO Listening for public http connections on[::]:8081
[00:46:10 CST 2016/12/30] [INFO] (ngrok/log.Info:112)Listening for public https connections on [::]:8082
[00:46:10 CST 2016/12/30] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443
8.测试是否开始成功
在浏览器中输入
http://xxx.xxxxx.com:8081或
http://xx.xxx.xxxxx.com:8081
提示Tunnel xxx.xxxxx.com:8081 not found 即服务上线
9.客户端使用
windows下
在客户端目录下放置配置文件ngrok.cfg 配置内容
server_addr: "agent.namerror.com:4443"
trust_host_root_certs: false
在cmd中cd进入客户端目录,执行
ngrok -config=ngrok.cfg -subdomain test 80
如果提示Tunnel Status online 则可以通过test.xxx.xxxxx.com:8081访问你本地127.0.0.1:80的项目
----------
后台启动服务端
nohup ./bin/ngrokd -tlsKey=device.key -tlsCrt=device.crt -domain="xxx.xxxx.com" -httpAddr=":8081" -httpsAddr=":8082" &