革命的果實最香甜~~node
勞動的人民最光榮~~linux
域名必定要使用二級域名git
一級域名爲 baidu.comgithub
二級域名爲 xxx.baidu.com不要用已經被佔用的二級域名golang
建議從新解析一個,反正不花錢對不對windows
否則會出現莫名其妙的錯誤centos
如下文中 主域名 皆爲 二級域名 :test.baidu.combash
次域名 爲 :ngrok.test.baidu.com服務器
PS:此處描述並不許確,請翻至最後參閱dom
防火牆記得要關掉,忘記的話你會噁心的一批
➜ ngrok git:(master) ✗ yum install mercurial git gcc golang ntp 複製代碼
服務端和客戶端都要,否則會有噁心的錯誤
➜ ngrok git:(master) ✗ ntpdate cn.pool.ntp.org
複製代碼
因爲2.x版本好像不開源了,因此咱們用1.7,這個git不是官方版,可是比官方版好用 XD
感謝開源社區,開源萬歲!
➜ ngrok git:(master) ✗ git clone https://github.com/tutumcloud/ngrok.git ngrok複製代碼
➜ ngrok git:(master) ✗ export NGROK_DOMAIN="主域名"
➜ ngrok git:(master) ✗ cd ngrok 複製代碼
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000複製代碼
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key複製代碼
這裏我主要是生成了 arm 和 Linux 的版本。繼續在原先的目錄下:
#默認是linux 64位,和我同樣
#個人客戶端是樹莓派
➜ ngrok git:(master) ✗ make release-server
➜ ngrok git:(master) ✗ GOOS=linux GOARCH=arm make release-client
# linux + win + mac + arm 配置
#GOOS=linux GOARCH=amd64 make release-client release-server
#GOOS=windows GOARCH=amd64 make release-client release-server
#GOOS=darwin GOARCH=amd64 make release-client release-server
#GOOS=linux GOARCH=arm make release-client release-server複製代碼
不一樣平臺使用不一樣的 GOOS 和 GOARCH,前面的編譯選項就是指 go os , go 編譯出來的操做系統 (windows,linux,darwin) ;go arch, 對應的構架 (386,amd64,arm)
Linux 平臺 64 位系統:GOOS=linux GOARCH=amd64
Windows 平臺 64 位系統:GOOS=windows GOARCH=amd64
MAC 平臺 64 位系統:GOOS=darwin GOARCH=amd64
編譯成功後會在ngrok/bin下生成ngrokd、ngrok兩個文件,前者是服務端程序,後者是客戶端程序。
生成的執行文件因爲版本不一樣可能在不一樣文件夾內 ,如樹莓派客戶端在 linux_arm 內,請自行判斷
可選方案:
FTP須要搭建
推薦lyzsz
沒有辦法的狀況下用git
再也不贅述
server_addr: 主域名:4443
trust_host_root_certs: false複製代碼
#服務端操做均在ngrok目錄下
➜ ngrok git:(master) ✗ ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="主域名" -httpAddr=":8081" httpsAddr=":8082"複製代碼
#服務端啓動成功信息
➜ ngrok git:(master) ✗ ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="主域名" -httpAddr=":8081" httpsAddr=":8082"
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:8081
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443
[19:43:13 CST 2018/09/04] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds複製代碼
#linux
➜ ngrok git:(master) ✗ ./ngrok -config ./ngrok.cfg -subdomain 次域名前綴(如:ngrok) -proto http 80
#windows
ngrok.exe -subdomain=次域名前綴(如:ngrok) -config=ngrok.cfg 80複製代碼
這個二級域名前綴最好同樣,避免莫名其妙的報錯
日誌: -log=ngrok_log.txt 是記錄ngrok的日誌,若是前期調試的時候加上這個參數,若是不能訪問就能夠查看究竟是什麼問題
以下
➜ ngrok git:(master) ✗ ./ngrok -log=ngrok_log.txt -config ./ngrok.cfg -subdomain 次域名前綴(如:ngrok) -proto http 80./ngrok複製代碼
Tunnel Status 爲 online 即爲連接成功
若是出現reconnecting
請您自求多福
發現退出終端後連接會自動斷開
因而找了找後臺運行進程的資料
成果以下
➜ ngrok git:(master) ✗ nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="主域名" -httpAddr=":8081" httpsAddr=":8082" &
[1] 1784nohup: 忽略輸入並把輸出追加到"nohup.out"
#使用tail查看日誌輸出
➜ ngrok git:(master) ✗ tail -f nohup.out
#1784爲進程ID
➜ ngrok git:(master) ✗ ps aux | grep ngrok
#使用 kill 結束進程
➜ ngrok git:(master) ✗ kill -9 1784複製代碼
➜ ngrok git:(master) ✗ setsid ./ngrok -log=ngrok_log.txt -config ./ngrok.cfg -subdomain ngrok -proto http 80
➜ ngrok git:(master) ✗ ps aux | grep ngrok
➜ ngrok git:(master) ✗ kil -9 1744複製代碼
這樣即便不連接服務器也能保持平穩運行
#服務端設定domain 域名 爲 baidu.com
➜ ngrok git:(master) ✗ nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="域名" -httpAddr=":8081" httpsAddr=":8082" &
#客戶端subdomain hostname 爲 ngrok
➜ ngrok git:(master) ✗ setsid ./ngrok -log=ngrok_log.txt -config ./ngrok.cfg -subdomain ngrok -proto http 80
#訪問域名即爲 ngrok.baidu.com
-----------------------------------------------------
#若服務端設定domain 域名 爲 test.baidu.com
➜ ngrok git:(master) ✗ nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="域名" -httpAddr=":8081" httpsAddr=":8082" &
#客戶端subdomain hostname 爲 ngrok
➜ ngrok git:(master) ✗ setsid ./ngrok -log=ngrok_log.txt -config ./ngrok.cfg -subdomain ngrok -proto http 80
#訪問域名即爲 ngrok.test.baidu.com
##注意 不管是 ngrok.baidu.com 仍是 ngrok.test.baidu.com
##最終訪問的域名 必須在 域名商處 進行解析!!!
複製代碼