MENU

ngrok的部署方法

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

golang方面

wget https://storage.googleapis.com/golang/go1.4.2.linux-386.tar.gztar -C /usr/local -xzf go1.4.2.linux-386.tar.gz#环境变量mkdir $HOME/goecho 'export GOROOT=/usr/local/go'>> ~/.bashrcecho 'export GOPATH=$HOME/go'>> ~/.bashrcecho 'export PATH=$PATH:$GOROOT/bin'>> ~/.bashrcsource $HOME/.bashrc### 获取ngrok1.7到本地

git clone https://github.com/tutumcloud/ngrok.git ngrokcd ngrok### 域名证书方面

(srk.win换成你自己的域名) openssl genrsa -out rootCA.key 2048openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=srk.win" -days 5000 -out rootCA.pemopenssl genrsa -out device.key 2048openssl req -new -key device.key -subj "/CN=srk.win" -out device.csropenssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000cp rootCA.pem assets/client/tls/ngrokroot.crtcp device.crt assets/server/tls/snakeoil.crtcp 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/ngrokGOOS=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/ngrokGOOS=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\]

添加新评论

已有 5 条评论
  1. kaigejava
    师傅。最后一点卡住了。
    1. shirakun
      然而我并不是你师傅,话说你现在应该已经解决了吧
  2. Mike
    我现在卡在nginx和ngrok共享80端口这件事情上,少年,我一进来就感觉到一股强烈的bilibili二次元风迎面扑来,正常情况下我会马上关闭,换频道的,然而,既然是GOOGLE介绍的,居然有这么牛的视频教程,虽然,没有看到我最关心的那个环节,但是,强烈支持你!
    1. shirakun
      不要想多了,就是ngrok监听非80和443,然后nginx和正常反代其它网站一样,只是host后面加上:port,如你ngrok的http监听80,那么你nginx反代时传递的host就是$host:81,https也一样.
      1. Mike
        恩,问题解决了,用了比较tricky的方法,内外卡嘿嘿 https://yii.im/posts/pretty-self-hosted-ngrokd/ 这里有个nginx的坑,默认情况下那个.conf会起动IPV6的地址,把它一并注释掉就行了 [::]: