Ngrok說明

Ting

甚麼是Ngrok

主要功能是作為一個本地代理伺服器,它能將你本地運行的應用或伺服器暴露到外部網路(如互聯網),即使你的本地設備處於防火牆或 NAT(網絡地址轉換)後面。

    具體來說,Ngrok 的功能包括:
  • 1. 隧道服務(Tunneling Service)
  • Ngrok 最核心的功能是提供隧道服務,它通過一個公開的 URL,將你本地運行的服務(如 Web 伺服器、API 等)暴露給外部網路。這意味著任何人只要擁有該 URL,就能訪問你本地的服務。

  • 2. HTTPS 支援
  • Ngrok 自動生成帶有 HTTPS 的 URL,因此即使你的本地服務只支持 HTTP,Ngrok 也會提供一個安全加密的 HTTPS URL,確保數據在傳輸過程中得到保護。

  • 3. 處理 Webhook
  • 當使用第三方服務時,很多會要求你的應用能夠接收來自他們的 Webhook(如支付通知或 GitHub 的事件通知)。如果你的伺服器是本地的且無法直接對外公開,Ngrok 可以生成一個公開的 URL 來接收 Webhook 並將其轉發到你的本地伺服器,這在開發和測試階段非常有用。

  • 4. 本地開發與測試
  • Ngrok 對於開發者來說是極其方便的工具,因為它可以模擬一個真實的互聯網環境,讓你本地運行的應用能夠接受來自外部的請求,而無需部署到外部伺服器上。

  • 5. 自訂子域名與自訂域名(付費功能)
  • 對於 Ngrok 的付費版本,你可以設定固定的子域名或自訂域名,使得每次啟動 Ngrok 時,URL 都不會變化。這對於長期需要測試或公開訪問的服務特別有用。

啟動本地伺服器代理

使用 Ngrok 來暴露本地的 Flask 伺服器(通常 Flask 預設端口是 5000):

執行ngrok.exe,輸入以下指令

1
ngrok http 5000

代理多個Url

正常來說,Ngrok一次只能配置一個url,但可以透過編輯yml檔來代理多個url

首先執行ngrok.exe,輸入以下指令,查看yml檔案路徑

1
ngrok config check

你應該會看到如下架構

1
2
3
version: "2"
authtoken: 2mTPgdrUufU5dquLVU9X0Dk3ESq_3wNL57wshBaYgTgooEqsg
tunnels:

把這邊修改成

1
2
3
4
5
6
7
8
9
version: "2"
authtoken: 2mTPgdrUufU5dquLVU9X0Dk3ESq_3wNL57wshBaYgTgooEqsg
tunnels:
flask_app:
proto: http
addr: 5100
second_app:
proto: http
addr: 5200

就可以達到代理多個url了

    重點解釋

    tunnels底下的結構

  • 每個 tunnel(如 flask_app、second_app 等)是一個獨立的服務代理。
  • 每個代理都需要指定 proto(協議)和 addr(本地的應用埠號)。
  • 啟用特定的代理

  • 啟用指定的代理:
  • 1
    2
    ngrok start flask_app
    ngrok start second_app
  • 一次啟動多個代理:
  • 1
    2
    ngrok start flask_app second_app
    ngrok start --all

我要當個免費仔xd

Comments