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