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:password@10.0.0.1:3128"
tunnels:
...
本文是对 https://ngrok.com/docs/1
的一篇翻译,另因本人水平有限,翻译过程中难免会有错误,敬请指出!若有任何版权问题,也敬请指出!
This page is a translation for https://ngrok.com/docs/1
. I am not good in translation, maybe this page will has some mistakes, I am happy to see that. Please let me know if this page has any copyright problem.