ngrok內網穿透服務部署記錄 原 薦

ngrok,一個用於實現內網穿透服務,golang寫的,已經很久遠的一個東西了,可自己部署的版本最後一個版本是1.7.1,很久也沒更新了,但他還是比較穩妥的,基於自己生成openssl證書來編譯生成服務器端和客戶端,還是具有一定程度的安全性。

一年前,其實已經部署起來了,還專門在碼雲上fork github的源碼,將部署生成的腳本做了一個分支:https://gitee.com/janpoem/ngrok-fork。最近因爲要大量遷移主機,所以需要重新配置一次,因此這裏就作爲一個記錄吧。

特別說明,基於他已經不會再更新了,所以還是不要用於正式發佈的環境,開發環境使用,完全足夠(一年下來,非常穩定,連重啓都沒試過)。

安裝go1.7.6

首先,最後這個版本的ngrok,必須使用go1.7.6(1.7的last版本),下載地址:https://dl.google.com/go/go1.7.6.linux-amd64.tar.gz。然後在你的linux上部署go,嗯,部署go不用我再寫說明了吧,go可能是這世上最容易部署的了。

好吧,還是寫寫,免得自己下次配置的時候忘記了:

tar zvxf go1.7.6.linux-amd64.tar.gz
mv go /usr/local/go1.7.6
mkdir /usr/local/gopath/go1.7.6
unlink /usr/bin/go  # 如果你的機器上裝了一個版本的go
ln -s /usr/local/go1.7.6/bin/go /usr/bin/go  # 先ln上,搞完再恢復就好,沒後遺症
nano ~/.bashrc

修改 ~/.bashrc 文件,添加,或者暫時先改爲如下:

export GOPATH=/root/gopath/go1.7.6
export GOROOT=/usr/local/go1.7.6

然後,更新一下

source ~/.bashrc

構建ngrok

然後,開始使用 ngrok-fork 的腳本,基於他不再更新了,所以我已經把自己的腳本分支作爲默認分支了。

git clone https://gitee.com/janpoem/ngrok-fork.git
cd ngrok-fork

修改編譯的配置,可以有兩個選擇:

1. 直接修改 script/predef.sh

2. 創建 user 目錄,cp script/predef.sh user/my.sh ,修改my.sh

特別需要填寫 NGROK_DOMAIN ,也即用於作爲內網穿透服務的域名。比如你希望以:xxx.my.example.com的方式訪問自己的PC的話,則 :

NGROK_DOMAIN="my.example.com"

其他需要修改的就是端口號:

DEPOLY_HTTP_ADDR=":8081"   # http 的端口號
DEPOLY_HTTPS_ADDR=":8082"  # https 的端口號
DEPOLY_TUNNEL_ADDR=":4443" # 本機到服務器的(隧道)端口號

ok,配置好,ngrok.sh支持以下參數:

./ngrok.sh server  # 生成2048 bit ssl證書(如果已經執行過,並且存在ssl證書,則不會重新生成),並構建 ngrokd 
./ngrok.sh client  # 生成客戶端,出於某些原因,默認是隻生成windows_amd64版本
./ngrok.sh service # 生成ubuntu的 service 配置
./ngrok.sh on      # 服務啓用自動啓動
./ngrok.sh off     # 服務停用自動啓動

很簡單,很弱智吧。然後進入 bin 目錄,打包一下 windows_amd64 就可以分發出去了。

打包指令:

7z a w64.7z windows_amd64

什麼,你問怎麼啓動?

service ngrok start
service ngrok stop
service ngrok status

配置nginx

最簡配置:

server {
        listen          80;
        server_name     *.my.example.com;

        location / {
                proxy_set_header X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host:8081;
                proxy_redirect   off;
                proxy_pass       http://127.0.0.1:8081;
        }

}

美中不足的是,本地的PHP的話,HTTP_HOST還是會顯示8081端口,現在上網似乎只找到雙ip下的解決方案,我記得一年前似乎解決了這個問題,但現在已經完全不記得了(以後想起來再更新)。也罷,到此爲止吧,留個記錄,以防下次到處找資料。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章