由于開(kāi)發(fā)微信公眾號(hào)項(xiàng)目诈乒,經(jīng)常需要將本地部署的接口讓外網(wǎng)能直接調(diào)用到,偶然發(fā)現(xiàn)還有個(gè)叫ngrok的神器專門做了這件事婆芦,不但提供了一個(gè)在外網(wǎng)能夠安全的訪問(wèn)內(nèi)網(wǎng)Web主機(jī)怕磨,還能捕獲所有請(qǐng)求的http內(nèi)容,方便調(diào)試消约,甚至還支持tcp層端口映射癌压。支持Mac OS X,Linux荆陆,Windows平臺(tái)滩届。
1. ngrok下載運(yùn)行
體積很小,官網(wǎng)下載后直接解壓得到一個(gè)二進(jìn)制文件,
在shell中執(zhí)行./ngrok 80即可
帜消,默認(rèn)會(huì)分配隨機(jī)的二級(jí)域名來(lái)訪問(wèn)棠枉,轉(zhuǎn)發(fā)到本機(jī)的80端口∨萃Γ可以通過(guò)-help參數(shù)來(lái)查看詳細(xì)的說(shuō)明辈讶,運(yùn)行后如下提示:
我這里是使用了自定義二級(jí)域名,意味著訪問(wèn)http://steven-mbp.ngrok.com就如同訪問(wèn)內(nèi)網(wǎng)的http://127.0.0.1:8080娄猫,很方便吧贱除。通過(guò)ngrok提供的管理界面(127.0.0.1:4040)可以清楚的看到當(dāng)前有哪些連接,以及請(qǐng)求的url媳溺,可以進(jìn)行replay月幌。
2. ngrok常用示例
1. 采用自定義二級(jí)域名steven-mbp.ngrok.com轉(zhuǎn)發(fā)到本機(jī)的8080端口。
./ngrok -subdomain steven-mbp 8080
2. tcp端口轉(zhuǎn)發(fā)悬蔽,當(dāng)然外網(wǎng)端口是隨機(jī)分配的扯躺。
./ngrok -proto=tcp 22
3. 轉(zhuǎn)發(fā)到局域網(wǎng)其他的機(jī)器
./ngrok 192.168.0.1:80
4. 綁定頂級(jí)域名(付費(fèi)才可用),在dashboard中添加域名蝎困,將域名cname解析到ngrok.com即可录语。
./ngrok -hostname test.dorole.com 8080
3. ngrok配置文件
ngrok可以將參數(shù)寫(xiě)到文件中,默認(rèn)是放在~/.ngrok禾乘。例如:
這里定義了三個(gè)隧道澎埠,client表示轉(zhuǎn)發(fā)http到本機(jī)8080,同時(shí)要求驗(yàn)證始藕,ssh表示支持遠(yuǎn)程訪問(wèn)蒲稳,第三個(gè)是綁定了域名轉(zhuǎn)發(fā)到9090。這時(shí)候只需要一個(gè)./ngrok start client ssh test.dorole.com即可快速啟動(dòng)這三個(gè)隧道服務(wù)鳄虱。
每一個(gè)隧道的配置節(jié)點(diǎn)都有五個(gè)參數(shù),proto凭峡,subdomain拙已,auth,hostname和remote_port摧冀,每個(gè)隧道必須有proto參數(shù)來(lái)指定本地地址和端口倍踪。auth參數(shù)用于在http(s)中身份認(rèn)證,而remote_port用于在tcp隧道中指定遠(yuǎn)程服務(wù)器端口索昂。如果沒(méi)有配置subdomain參數(shù)建车,ngrok會(huì)默認(rèn)一個(gè)二級(jí)域名與隧道節(jié)點(diǎn)一樣的名字。
4. 配置文件中的其他參數(shù)
authtoken用于設(shè)置登錄ngrok的授權(quán)碼椒惨,可以在ngrok首頁(yè)的dashboard中查看到缤至。inspect_addr用于設(shè)置監(jiān)聽(tīng)ip,比如設(shè)置為0.0.0.0:8080意味著監(jiān)聽(tīng)本機(jī)所有ip的8080端口上康谆。ngrok也支持自己架設(shè)ngrokd服務(wù)器领斥,在配置中通過(guò)server_addr:“dorole.com:8081″來(lái)指定自己搭建的服務(wù)器地址嫉到。設(shè)置trust_host_root_certs:true來(lái)支持TLS加密協(xié)議的證書(shū)信任。
下載地址:
鏈接:http://pan.baidu.com/s/1jIaJFfw 密碼:ka13
官網(wǎng):https://ngrok.com/