ngrok内網穿透:能夠将你本機的HTTP服務(站點)或TCP服務,通過部署有ngrok服務的外網伺服器暴露給外網通路!實作本地開發,外網調試。
準備:一台外網可通路的主機,且有域名解析至該主機上。
- 橘色螢幕的筆記本是你的工作機器,安裝了ngrok用戶端
- 伺服器安裝了ngrok的服務端(ngrokd)
- 利用ngrok 8080指令可以将你本機的8080端口暴露給反向代理至伺服器的某個二級域名如:kl.ngrok.wili.us.cn
- 别人通過kl.ngrok.wili.us.cn就可以通路你本機8080端口上的站點内容了。
一、安裝go、git工具
sudo apt-get update
sudo apt-get install git
sudo apt-get install golang
# 檢視go版本
go version
二、擷取ngrok源碼
git clone https://github.com/inconshreveable/ngrok.git
三、更改ngrok域名
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="ngrok.wili.us"
ngrok.wili.us 替換成自己的域名
四、生成證書
$NGROK_DOMAIN 替換成自己的域名。這裡我的是 ngrok.wili.us
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
生成六個檔案:
Ngrok通過bindata将ngrok源碼目錄下的assets目錄(資源檔案)打包到可執行檔案(ngrokd和ngrok)中去,assets/client/tls和assets/server/tls下分别存放着用于ngrok和ngrokd的預設證書檔案,我們需要将它們替換成我們自己生成的(是以這一步務必放在編譯可執行檔案之前)
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
五、編譯ngrok服務端
make release-server
ngrokd 就是服務端
六、編譯用戶端
linux用戶端
GOOS=linux GOARCH=amd64 make release-client
編譯Mac版本用戶端
GOOS=darwin GOARCH=amd64 make release-client
七、服務端啟動
ngrokd -domain="ngrok.wili.us" -httpAddr=":80" -httpsAddr=":8089"
八、用戶端啟動
在和用戶端相同檔案目錄bin下,建立一個
ngrok.cfg
配置檔案
vim ngrok.cfg
添加:
server_addr: "ngrok.wili.us:4443"
trust_host_root_certs: false
啟動:subdomain後面的自定義就好
./bin/ngrok -subdomain mp -config=./ngrok.cfg 5000
備注:用戶端和服務端必須在相同證書下編譯,不能分開編譯。
參考: 手把手教你搭建ngrok服務-輕松外網調試本機站點
一分鐘實作内網穿透(ngrok伺服器搭建)
https://github.com/inconshreveable/ngrok/blob/master/docs/SELFHOSTING.md
https://github.com/inconshreveable/ngrok/blob/master/docs/DEVELOPMENT.md