由于開發微信公眾號項目,經常需要將本地部署的接口讓外網能直接調用到,偶然發現還有個叫ngrok的神器專門做了這件事,不但提供了一個在外網能夠安全的訪問內網Web主機,還能捕獲所有請求的http內容,方便調試,甚至還支持tcp層端口映射。支持Mac OS X,Linux,Windows平臺。
1. ngrok下載運行
體積很小,官網下載后直接解壓得到一個二進制文件,
在shell中執行./ngrok 80即可
,默認會分配隨機的二級域名來訪問,轉發到本機的80端口。可以通過-help參數來查看詳細的說明,運行后如下提示:
我這里是使用了自定義二級域名,意味著訪問http://steven-mbp.ngrok.com就如同訪問內網的http://127.0.0.1:8080,很方便吧。通過ngrok提供的管理界面(127.0.0.1:4040)可以清楚的看到當前有哪些連接,以及請求的url,可以進行replay。
2. ngrok常用示例
1. 采用自定義二級域名steven-mbp.ngrok.com轉發到本機的8080端口。
./ngrok -subdomain steven-mbp 8080
2. tcp端口轉發,當然外網端口是隨機分配的。
./ngrok -proto=tcp 22
3. 轉發到局域網其他的機器
./ngrok 192.168.0.1:80
4. 綁定頂級域名(付費才可用),在dashboard中添加域名,將域名cname解析到ngrok.com即可。
./ngrok -hostname test.dorole.com 8080
3. ngrok配置文件
ngrok可以將參數寫到文件中,默認是放在~/.ngrok。例如:
這里定義了三個隧道,client表示轉發http到本機8080,同時要求驗證,ssh表示支持遠程訪問,第三個是綁定了域名轉發到9090。這時候只需要一個./ngrok start client ssh test.dorole.com即可快速啟動這三個隧道服務。
每一個隧道的配置節點都有五個參數,proto,subdomain,auth,hostname和remote_port,每個隧道必須有proto參數來指定本地地址和端口。auth參數用于在http(s)中身份認證,而remote_port用于在tcp隧道中指定遠程服務器端口。如果沒有配置subdomain參數,ngrok會默認一個二級域名與隧道節點一樣的名字。
4. 配置文件中的其他參數
authtoken用于設置登錄ngrok的授權碼,可以在ngrok首頁的dashboard中查看到。inspect_addr用于設置監聽ip,比如設置為0.0.0.0:8080意味著監聽本機所有ip的8080端口上。ngrok也支持自己架設ngrokd服務器,在配置中通過server_addr:“dorole.com:8081″來指定自己搭建的服務器地址。設置trust_host_root_certs:true來支持TLS加密協議的證書信任。
下載地址:
鏈接:http://pan.baidu.com/s/1jIaJFfw 密碼:ka13