Ngrok 是一款可以將本地服務映射到公網的工具,它可以幫助開發者在本地開發的同時,提供一個可以讓外網訪問的地址。本文將詳細介紹 ngrok 的安裝、使用以及相關注意事項。
一、安裝 ngrok
Ngrok 下載地址:https://ngrok.com/download
安裝 ngrok 非常簡單,只需要到官網下載對應系統版本的文件即可。
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
unzip ngrok-stable-linux-amd64.zip
解壓完成後,可以使用以下命令進行驗證:
./ngrok -v
如果輸出類似 ngrok version 3.3.0 的內容,則說明安裝成功。
二、使用 ngrok
1. 註冊賬號並獲取 Auth Token
在使用 ngrok 之前,需要先註冊一個賬號,獲取 Auth Token。可以到 ngrok 的官網進行註冊,註冊完成後,即可獲取 Auth Token。
我們可以使用以下命令,將 Auth Token 保存到 ngrok 的配置中:
./ngrok authtoken <your-auth-token>
其中,<your-auth-token> 替換為你自己的 Auth Token。
2. 映射本地服務
使用 ngrok 進行映射只需要一行命令:
./ngrok http <port>
其中,<port> 替換為你要映射的本地服務埠號。
運行完命令後,可以看到類似以下的輸出:
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Account John Doe (Plan: Free)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://<generated-subdomain>.ngrok.io -> http://localhost:<port>
Forwarding https://<generated-subdomain>.ngrok.io -> http://localhost:<port>
其中,<generated-subdomain> 是 ngrok 自動生成的域名前綴,可以通過該域名前綴,訪問到本地服務。
注意,運行該命令時,本地埠必須是可用狀態,否則 ngrok 映射會失敗。
如果需要開啟 https 支持,可以使用以下命令:
./ngrok http <port> --hostname=<your-domain>
其中,<your-domain> 替換為你自己的域名,需要在配置 SSL 證書時用到。
3. 配置 SSL 證書
ngrok 會自動為你創建一個子域名並完成映射,但這個子域名在瀏覽器中是不受信任的,需要配置 SSL 證書。
SSL 證書的配置很簡單,只需要將證書文件放到 ngrok 的配置目錄中即可。
SSL 證書通常有兩個文件,分別是證書文件和私鑰文件,可以使用如下命令生成證書文件和私鑰文件:
openssl genrsa -out <your-domain>.key 2048
openssl req -new -key <your-domain>.key -out <your-domain>.csr
openssl x509 -req -days 365 -in <your-domain>.csr -signkey <your-domain>.key -out <your-domain>.crt
其中,<your-domain> 替換為你自己的域名。
生成證書後,可以使用以下命令將證書文件拷貝到 ngrok 的配置目錄中:
sudo cp <your-domain>.crt /usr/local/ngrok/cert/
然後,可以使用以下命令來啟動 ngrok,啟動時需要指定證書文件名:
./ngrok http <port> --hostname=<your-domain> --tls-cert=<your-domain>.crt --tls-key=<your-domain>.key
三、注意事項
1. ngrok 流量監控
ngrok 內置了一個 web 界面,可以用來監控流量。可以通過在瀏覽器中訪問 http://127.0.0.1:4040 進行查看:
Session Status online
Account John Doe (Plan: Free)
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://<generated-subdomain>.ngrok.io -> http://localhost:<port>
Forwarding https://<generated-subdomain>.ngrok.io -> http://localhost:<port>
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
HTTP Requests
-------------
2. 連接數量限制
ngrok 免費版本有連接數量限制,每個連接只能維持 8 小時,且每分鐘限制 40 次請求。如果需要更多的連接數和更長時間的連接,則需要購買 ngrok 的付費版。
3. 防火牆設置
為了確保 ngrok 映射成功,你需要打開本地服務所在機器的防火牆埠,以確保 ngrok 可以訪問到本地服務。
如果在使用過程中遇到了連接失敗,可以檢查是否有防火牆或代理的限制。
4. 本地域名映射
在本地測試時,可以使用 host 文件中的域名映射功能,來模擬 ngrok 動態生成的子域名。例如,在 host 文件中添加以下配置:
127.0.0.1 <your-domain>
這樣,可以在本地通過 <your-domain> 訪問到你需要映射的服務。
結語
本文對 Ngrok 的安裝、使用和注意事項進行了詳細介紹,以幫助開發者更好地使用這一工具。在使用過程中,需要注意連接數量限制、防火牆設置和本地域名映射等問題,並且注意謹慎使用 ngrok 映射的服務,以免造成安全隱患。
原創文章,作者:FRKM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132825.html