MENU

ngrok的部署方法

一段时间前从小伙伴TKS那里听说ngrok可以穿透内网,正好之前折腾ssh穿透搞的焦头烂额,于是便想折腾这ngrok,经过网上翻阅数十个资料与教程,均未架设成功,然后自己折腾了几天,东拼西凑终于架设成功,用起来确实是舒服,比ssh更简单,而且http/https映射更方便。

首先是文字教程,系统使用ubuntu14.04x86

golang方面

wget https://storage.googleapis.com/golang/go1.4.2.linux-386.tar.gz tar -C /usr/local -xzf go1.4.2.linux-386.tar.gz #环境变量 mkdir $HOME/go echo 'export GOROOT=/usr/local/go'>> ~/.bashrc echo 'export GOPATH=$HOME/go'>> ~/.bashrc echo 'export PATH=$PATH:$GOROOT/bin'>> ~/.bashrc source $HOME/.bashrc

获取ngrok1.7到本地

git clone https://github.com/tutumcloud/ngrok.git ngrok cd ngrok

域名证书方面

(srk.win换成你自己的域名)
openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=srk.win" -days 5000 -out rootCA.pem openssl genrsa -out device.key 2048 openssl req -new -key device.key -subj "/CN=srk.win" -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

配置golang环境编译linux服务端与客户端

x86使用GOARCH=386 x64则使用amd64
#golang环境 cd /usr/local/go/src/ GOOS=linux GOARCH=386 CGO_ENABLED=0 ./make.bash #编译ngrok服务端与客户端 cd /root/ngrok GOOS=linux GOARCH=386 make release-server release-client

Windows配置

windows只需要32位即可不必编译64位
#golang环境 cd /usr/local/go/src/ GOOS=linux GOARCH=386 CGO_ENABLED=0 ./make.bash #编译windows客户端 cd /root/ngrok GOOS=linux GOARCH=386 make release-client

启动服务端

编译好的客户端会在ngrok/bin目录下ngrokd为服务端ngrok为客户端windows_386目录内为windows客户端,服务端与客户端对应,客户端不能连接其它的服务端,服务端也不能被其它的客户端连接,客户端ngrok-c则除外。
#正常启动默认通信端口4443 ./bin/ngrokd -domain="srk.win" #指定监听通信端口/http/https端口 ./bin/ngrokd -domain="srk.win" -httpsAddr=":445" -httpAddr=":82" -httpsAddr=":4443" #nohup后台运行(也可以使用screen运行) nohup /root/ahost/bin/ngrokd -domain="ahost.win" -httpsAddr=":445" -httpAddr=":82" -tunnelAddr=":4444" &

视频教程

[video width="768" height="432" preload="auto" mp4="https://nzue3k56y.qnssl.com/bandicam%202016-03-10%2022-16-01-953.MP4"][/video]

最后编辑于: 2017 年 03 月 30 日
添加新评论

已有 5 条评论
  1. 我现在卡在nginx和ngrok共享80端口这件事情上,少年,我一进来就感觉到一股强烈的bilibili二次元风迎面扑来,正常情况下我会马上关闭,换频道的,然而,既然是GOOGLE介绍的,居然有这么牛的视频教程,虽然,没有看到我最关心的那个环节,但是,强烈支持你!

    1. shirakun shirakun

      @Mike不要想多了,就是ngrok监听非80和443,然后nginx和正常反代其它网站一样,只是host后面加上:port,如你ngrok的http监听80,那么你nginx反代时传递的host就是$host:81,https也一样.

    2. @shirakun恩,问题解决了,用了比较tricky的方法,内外卡嘿嘿
      https://yii.im/posts/pretty-self-hosted-ngrokd/

      这里有个nginx的坑,默认情况下那个.conf会起动IPV6的地址,把它一并注释掉就行了
      [::]:

  2. 师傅。最后一点卡住了。

    1. shirakun shirakun

      @kaigejava然而我并不是你师傅,话说你现在应该已经解决了吧

996.icu 996.icu