有時向客戶展示系統(tǒng)不太方便就打算弄個內(nèi)網(wǎng)穿透
1、必要條件
(1)服務器塔逃,用來搭建ngrok的服務器,必須有公網(wǎng)ip料仗,并且可以正常訪問(本次測試使用的是Ubuntu 18.04 64位)湾盗。
(2)域名,用來生成訪問域名立轧。
2格粪、安裝git 和Golang
執(zhí)行:
su root?
# 輸入你的密碼
cd?
#回車
apt-get install build-essentialgolang mercurial git
#沒有安裝 apt-get 請先安裝
Golang,Go語言支持氛改,因為Ngrok是基于Go語言編寫的
3帐萎、下載源碼,當然也可以不安裝git胜卤,但是需要手動上傳代碼到需要的位置疆导。
此處使用非官方地址,修復了部分包無法獲雀瘐铩(摘自網(wǎng)絡)
git clone https://github.com/tutumcloud/ngrok.git ngrok
4澈段、生成自簽名證書
我們需要生成自己的自簽名證書,并編譯一個攜帶該證書的ngrok客戶端舰攒。
證書生成過程需要一個NGROK_BASE_DOMAIN败富。 以ngrok官方隨機生成的地址xxx.ngrok.com為例,其NGROK_BASE_DOMAIN就是“ngrok.com”摩窃,如果你要提供服務的地址為“example.ngrok.xxx.com”囤耳,那NGROK_BASE_DOMAIN就應該 是“ngrok.xxx.com”。
cd ngrok
NGROK_DOMAIN="test.com"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
執(zhí)行完成后需要替換證書
cp base.pem assets/client/tls/ngrokroot.crt
5.編譯
make release-server release-client
6偶芍、啟動服務端
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="test.com"?-httpAddr=":80" -httpsAddr=":443"
httpAddr充择、httpsAddr 分別是 ngrok 用來轉(zhuǎn)發(fā) http、https 服務的端口匪蟀,可以隨意指定椎麦。ngrokd 還會開一個 4443 端口用來跟客戶端通訊(可通過 -tunnelAddr=”:xxx” 指定)。由于微信限制不能出現(xiàn)端口號材彪,因此這個使用了80观挎、443端口。
7段化、編譯客戶端
(1) windows
GOOS=windows GOARCH=amd64 make release-client ?
?(2) mac
GOOS=darwin GOARCH=amd64 make release-client
執(zhí)行對應的命令會在bin目錄下生成相對應的windows嘁捷、mac目錄,ngrok.exe就存放在對應目錄下显熏。將對應的ngrok.exe下載到本地雄嚣。
8、設置本地客戶端
(1).在與下載的客戶端同級目錄下新建一個配置文件ngrok.cfg
server_addr: "test.com:4443"
tunnels:
? www:
? ? proto:
? ? ? http: pan.192.168.31.169.xip.io:80 轉(zhuǎn)發(fā)到服務器域名
trust_host_root_certs: false
(2).同級目錄下新建一個啟動腳本startup.bat
@echo on
cd %cd%
ngrok -config=ngrok.cfg start www
其中,-config指向配置文件缓升,-log存放日志文件位置鼓鲁,-subdomain為自定義的域名前綴。8080為端口號港谊。
(3).啟動骇吭,雙擊啟動腳本startup.bat完成啟動。?
啟動后的效果是? 訪問www.test.com? 則轉(zhuǎn)發(fā)至 客戶端電腦的127.0.0.1:8080端口?
具體未提細節(jié)可以免費友情咨詢:359947329??