BACK
ngrok 是一個反向代理,通過在公共的端點和本地運行的 Web 伺服器之間建立一個安全的通道。ngrok 可捕獲和分析所有通道上的流量,便於後期分析和重放。
參考文章
前言
- 在開發的過程中,有時候會需要從另外一臺機器測試在local的網站及服務。最常見的情況就是當要測試網站在手機上看起來長什麽樣子的時候,或者有時候要讓別人連到自己local的sql serer的時候。
ngrok
就是讓這一切變得容易的工具,而且很佛心的是,免費版就夠一般使用。
特性
- 綁定本機的埠號並接受外部連入。
- 可穿透 NAT 或防火牆讓外部連入。
- 會拿到一個 ngork 的網址方便貼到信件或訊息內。
- ngrok 產生的網址支援 HTTP / HTTPS。
- 有 web 界面讓我們可以監看連入的請求內容。
- 可加設 HTTP 帳密認證,避免被不必要的人亂連。
- 除了支援 HTTP 外,也支援 WebSocket 和 SSH。
- 可同時發布多個服務。
- 還支援 API,可以用 API 操控 ngork。
- 付費方案可以自定網址。
運作模式
- ngrok 就是一個 reverse proxy 的工具,透過把 local 的 port map 到一個 public 的地址,讓外部能夠透過這個 public 地址連到,然後工具用 reverse proxy 和 local 實際的 port 取得資料。
- 因此有個缺點,就是速度相對較慢,尤其是
ngrok
的伺服器在美國因此也會減少一些速度。不過如果是爲了開發測試用,這個就不算缺點。 ngrok
免費版本提供了一個動態的地址,需要進階功能或者同時map多個服務就需要付費。
其實 ngrok 並未真正的穿透 NAT,它只是接受 ngork cloud 機台轉發來的請求並做出回應,而那個 ngrok 的網址其實也就是連到 ngrok cloud 的網址。
安裝與使用
需先安裝 unzip
(解壓縮用)
步驟 1 - 到官網下載相對應系統的 ngrok
安裝包
1
2
| ### 以 linux 64 為例
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
|
步驟 2 - 解壓縮安裝包並搬移到 /usr/bin/
中
1
| unzip ngrok-stable-linux-amd64.zip
|
步驟 3 - 到 ngrok
官網註冊一個免費帳號
步驟 4 - 將 dashboard 上顯示的 token 設定至本機
1
| ngrok authtoken XXXXXXXXXXXXXXXX
|
顯示此畫面代表已設定完成。
步驟 5 - 假設服務跑在本機的 port 3000,則執行以下指令
顯示此畫面代表已成功跑起服務,打開網址即可。
直到 ngrok 關掉或 ngrok session 過期之前,這兩個 URL 都可以被公開存取。
進階使用
外連的 web 服務加密
- 有時候給別人測試的鏈接不希望任意的人都能夠開啓,ngrok非常貼心的提供了這個服務。
- 只需要在 mapping 的時候加上
auth
這個參數就可以設定密碼保護。例如:
1
| ngrok http --auth=admin:12345 3000
|
意思是,賬號要是admin,而密碼是12345 map 到 3000 port。
重寫 hostname
- 有些服務會使用到
hostname
的值,這個時候重寫 hostname
的功能就變得很重要。可以使用 host-header
做設定。
1
| ngrok http --host-header=test.com 80
|