ngrok 的配置文件是完全可選的非常簡單 YAML 格式文件,他可以允許你使用 ngrok 一些更高級的功能,例如:
- 同時運行多個隧道
- 連接到自定義的 ngrok 服務器
- 調整 ngrok 一些很神祕的功能
ngrok 的配置文件默認從 ~/.ngrok
加載。你可以通過 -config
參數重寫配置文件的地址
同時運行多個隧道
爲了運行多個隧道,你需要在配置文件當中使用 tunnels
參數配置每個隧道。隧道的參數以字典的形式配置在配置文件當中。舉個例子,讓我們來定義三個不同的隧道。第一個隧道是一個有認證的只轉發
https 的隧道。第二個隧道轉發我們自己機器的 22 端口以便讓我可以通過隧道連接到自己的電腦。最後,我們使用自己的域名創造了一個隧道,我們將要在黑客馬拉松中展示這個。
tunnels:
client:
auth: "user:password"
proto:
https: 8080
ssh:
proto:
tcp: 22
hacks.inconshreveable.com:
proto:
http: 9090
通過 ngrok
start
命令,我們可以同時運行三個隧道,後面要接上我們要啓動的隧道名。
ngrok start client ssh hacks.inconshreveable.com
終端現在看上去應該是這樣的:
ngrok
Tunnel Status online
Version 1.3/1.3
Forwarding https://client.ngrok.com -> 127.0.0.1:8080
Forwarding http://hacks.inconshreveable.com -> 127.0.0.1:9090
Forwarding tcp://ngrok.com:44764 -> 127.0.0.1:22
...
隧道設置
每一個隧道都可以設置以下五個參數:proto
,subdomain
,auth
,hostname
以及 remote_port
。每一個隧道都必須定義 proto
,因爲這定義了協議的類型以及轉發的目標。當你在運行
http/https 隧道時, auth
參數是可選的,同樣, remote_port
也是可選的,他聲明瞭某個端口將要作爲遠程服務器轉發的端口,請注意這隻適用於
TCP 隧道。 ngrok 使用每個隧道的名字做到子域名或者域名,但你可以重寫他:
tunnels:
client:
subdomain: "example"
auth: "user:password"
proto:
https: 8080
現在當你運行 ngrok
start client
的時候,他將會有這樣的效果:example.ngrok.com
-> 127.0.0.1:8080
。相似的,這對自定義域名同樣適用,他可以讓你通過別名的方式是隧道名更短。
tunnels:
hacks:
hostname: "hacks.inconshreveable.com"
proto:
http: 9090
對於 TCP 隧道,你可以會通過 remote_port
參數來指定一個遠程服務器的端口作爲映射。如果沒有聲明,服務器將會給你隨機分配一個端口。
tunnels:
ssh:
remote_port: 60123
proto:
tcp: 22
其他設置選項
通過在配置文件的頂級配置中聲明其他可選的選項,ngrok 的配置文件還可以讓你做一些更有趣的事情。舉個例子,當你在與 ngrok.com 服務器交互的時候可能需要聲明 auth_token
。當你需要改變
ngrok 自帶的 web 調試工具所綁定的端口是,你可能需要聲明 inspect_addr
。
auth_token: abc123
inspect_addr: "0.0.0.0:8888"
tunnels:
...
連接到自定義的 ngrok 服務器
ngrok 支持連接到其他的 ngrokd 服務器上,即便他們並不託管在 ngrok.com 上。首先,顯然你必須正確的配置好你的 ngrokd 服務器。如何配置你自己的 ngrokd 服務器請看這裏:運行你自己的
ngrokd 服務器。當你運行了你自己的 ngrokd 服務器,你需要設置兩個參數來讓 ngrok 安全的連接到你的服務器。首先,你需要設置 server_addr
來支出你服務器的地址。然後你需要設置 trust_host_root_certs
來確保你的
TLS 連接安全。
server_addr: "example.com:4443"
trust_host_root_certs: true
tunnels:
...
在 http 代理下運行
最後,你可以設置 ngrok 在 http 代理下運行,這有時候是很有必要的如果你在一個高度限制的企業網絡中時。 ngrok 遵守標準的 Unix 環境變量 http_proxy
,
但你也可以通過在配置文件中聲明 http_proxy
參數來指定。
http_proxy: "http://user:[email protected]:3128"
tunnels:
...
原文鏈接: https://imlonghao.com/28.html