【docker系列】搭建Ngrok實現內網穿透
- 2020 年 1 月 16 日
- 筆記
先來一張效果圖鎮樓
內網穿透是什麼?
內網穿透,即NAT穿透,網路連接時術語,電腦是區域網內時,外網與內網的電腦節點需要連接通訊,有時就會出現不支援內網穿透。就是說映射埠,能讓外網的電腦找到處於內網的電腦,提高下載速度。不管是內網穿透還是其他類型的網路穿透,都是網路穿透的統一方法來研究和解決。
什麼場景下會使用到內網穿透?
上面說的比較官方,我們還是來聊聊實際應用場景,比如你接了一個外單系統,做完了以後老闆想驗貨,這時候大部分無非就2種做法,開遠程讓他看/自己部署到公網的伺服器讓別人看,兩種都很麻煩,費時費力,那麼我們做一個內網穿透,直接讓別人通過外網域名訪問你的本地機器,豈不是很簡單。
還有作為開發人員來講,用內網穿透來做本地調試還是挺方便的,現在第三方對接都是需要公網域名的,比如微信的一些介面,不用內網穿透將會花費很多的時間和精力在調試上。
準備工作
- 一台公網伺服器
- 自己的域名,並解析出來一個ngrok伺服器的子域名,小編這裡用的是ngrok.javakhbd.com
PS:本文基於騰訊雲
拉取鏡像
docker pull hteen/ngrok
執行編譯命令,編譯服務端和客戶端
docker run --rm -it -e DOMAIN="ngrok.javakhbd.com" -v /data/ngrok:/myfiles hteen/ngrok sh /build.sh
執行成功截圖
此刻在/data/ngrok目錄下面,你會看到以下文件:
我們生成的客戶端和伺服器在/data/ngrok/bin目錄下
bin/ngrokd 服務端 bin/ngrok linux客戶端 bin/darwin_amd64/ngrok osx客戶端 bin/windows_amd64/ngrok.exe windows客戶端
啟動伺服器端
由於之前的命令是編譯命令並不是啟動容器,所以我們開始根據剛才下載的鏡像來啟動容器
docker run -idt --name ngrok-server -v /data/ngrok:/myfiles -p 80:80 -p 443:443 -p 4443:4443 -e DOMAIN='ngrok.javakhbd.com' hteen/ngrok sh /server.sh
如果是這些宿主埠被nginx等佔用可以換以下宿主埠,然後自己做映射即可。
客戶端連接
這裡以window客戶端為例。
先將伺服器上編譯好的客戶端下載下來。
創建一個文件ngrok.cfg
,作為配置文件,裡面配置如下:
server_addr: "你的ngrok域名:4443埠" trust_host_root_certs: false
配置文件弄好以後雖然也能通過命令啟動,但是總歸太麻煩了,我們把命令放到start.bat
可執行文件,這樣每次要用到內網穿透的時候雙擊就可以了。
ngrok.exe -config ngrok.cfg -subdomain ceshi localhost:8081
見證效果
話不多說,直接上動圖吧!
– End –