ngrok配置文件
有时,您的ngrok配置太复杂,无法在命令行选项中显示。 ngrok支持一个可选的,非常简单的YAML配置文件,它提供了同时运行多个隧道的能力,以及调整一些ngrok的更多奥术设置。
配置文件位置
您可以使用-config
选项将路径传递到显式配置文件。这是建议所有生产部署。
显式指定配置文件位置
ngrok http -config=/opt/ngrok/conf/ngrok.yml 8000
您可以多次传递-config
选项。 如果这样做,则将解析第一个配置,并将每个连续的配置合并到其上。 这允许您具有每个项目的ngrok配置文件与隧道定义,但主配置文件在您的主目录与您的authtoken和其他全局设置。
指定具有项目特定覆盖的附加配置文件
ngrok start -config ~/ngrok.yml -config ~/projects/example/ngrok.yml demo admin
默认配置文件位置
如果不为配置文件指定位置,ngrok会尝试从默认位置$HOME/.ngrok2/ngrok.yml
读取一个位置。配置文件是可选的;如果该路径不存在,则不会发出错误。
在默认路径中,$ HOME是操作系统定义的当前用户的主目录。 它不是环境变量$ HOME,尽管它们通常是相同的。 对于主要操作系统,如果您的用户名是 example
,则可能会在以下路径找到默认配置:
OS X | /Users/example/.ngrok2/ngrok.yml |
---|---|
Linux | /home/example/.ngrok2/ngrok.yml |
Windows | C:\Users\example.ngrok2\ngrok.yml |
隧道定义
配置文件的最常见用法是定义隧道配置。 定义隧道配置很有用,因为您可以从命令行按名称启动预配置的隧道,而不必每次记住所有正确的参数。
隧道定义为配置文件中的tunnels
属性下的名称->配置的映射。
定义两个名为“httpbin”和“demo”的隧道
tunnels:
httpbin:
proto: http
addr: 8000
subdomain: alan-httpbin
demo:
proto: http
addr: 9090
hostname: demo.inconshreveable.com
inspect: false
auth: "demo:secret"
启动隧道名为“httpbin”
ngrok start httpbin
您定义的每个隧道都是配置选项名称到值的映射。 配置选项的名称通常与其相应的命令行开关相同。 每个隧道必须定义proto
and addr
。 其他属性是可用的,许多是协议特定的。
隧道配置属性
proto | required all | 隧道协议名称, one of http , tcp , tls |
---|---|---|
addr | required all | 将流量转发到此本地端口号或网络地址 |
inspect | all | 启用http请求检查 |
auth | http | HTTP基本认证凭证,用于对隧道请求强制执行 |
host_header | http | 将HTTP主机头重写为此值,或保留preserve 以使其保持不变 |
bind_tls | http | 绑定HTTPS或HTTP端点或同时绑定true , false , or both |
subdomain | http tls | 子域名请求。如果未指定,请使用隧道名称 |
hostname | http tls | 请求的主机名(需要保留名称和DNS CNAME) |
crt | tls | PEM TLS证书,在本地转发之前终止TLS流量 |
key | tls | PEM TLS私钥在此路径上在本地转发之前终止TLS流量 |
client_cas | tls | 此路径上的PEM TLS证书颁发机构将验证传入的TLS客户端连接证书。 |
remote_addr | tcp | 绑定给定地址上的远程TCP端口 |
运行多个并发隧道
你可以传递多个隧道名称到ngrok start
和ngrok将同时运行它们。
从配置文件启动三个命名的隧道
ngrok start admin ssh metrics
ngrok by @inconshreveable
Tunnel Status online
Version 2.0/2.0
Web Interface http://127.0.0.1:4040
Forwarding http://admin.ngrok.io -> 10.0.0.1:9001
Forwarding http://device-metrics.ngrok.io -> localhost:2015
Forwarding https://admin.ngrok.io -> 10.0.0.1:9001
Forwarding https://device-metrics.ngrok.io -> localhost:2015
Forwarding tcp://0.tcp.ngrok.io:48590 -> localhost:22
...
您还可以要求ngrok使用--all
开关启动配置文件中定义的所有隧道。
启动配置文件中定义的所有隧道
ngrok start --all
相反,您可以要求ngrok运行,而不使用—none开关启动任何隧道。如果您计划通过API完全管理ngrok的隧道,这将非常有用。
运行ngrok而不启动任何隧道
ngrok start --none
示例配置文件
示例配置文件如下所示。后续部分包含这些示例中显示的所有配置参数的完整文档。.
为多个虚拟托管开发站点运行隧道
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
app-foo:
addr: 80
proto: http
host_header: app-foo.dev
app-bar:
addr: 80
proto: http
host_header: app-bar.dev
使用您自己的证书通过http和https隧道定制域
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
myapp-http:
addr: 80
proto: http
hostname: example.com
bind_tls: false
mypp-https:
addr: 443
proto: tls
hostname: example.com
通过隧道暴露ngrok的Web检查接口和API
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
tunnels:
myapp-http:
addr: 4040
proto: http
subdomain: myapp-inspect
auth: "user:secretpassword"
inspect: false
具有所有选项的示例配置文件
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
region: us
console_ui: true
compress_conn: false
http_proxy: false
inspect_db_size: 50000000
log_level: info
log_format: json
log: /var/log/ngrok.log
metadata: '{"serial": "00012xa-33rUtz9", "comment": "For customer alan@example.com"}'
root_cas: trusted
socks5_proxy: "socks5://localhost:9150"
update: true
update_channel: stable
web_addr: localhost:4040
tunnels:
website:
addr: 8888
auth: bob:bobpassword
bind_tls: true
host_header: "myapp.dev"
inspect: false
proto: http
subdomain: myapp
e2etls:
addr: 9000
proto: tls
hostname: myapp.example.com
crt: example.crt
key: example.key
ssh-access:
addr: 22
proto: tcp
remote_addr: 1.tcp.ngrok.io:12345
配置选项
authtoken
此选项指定用于在客户端连接到ngrok.com服务时对其进行身份验证的身份验证令牌。创建ngrok.com帐户后,信息中心将显示分配给您帐户的authtoken。
ngrok.yml指定authtoken
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
console_ui
true | 启用控制台UI | |
---|---|---|
false | 禁用控制台UI | |
iftty | default | 仅在标准输出为TTY(不是文件或管道)时启用UI |
console_ui_color
transparent | 在显示控制台UI时不要设置背景颜色 | |
---|---|---|
black | default | 将控制台UI的背景设置为黑色 |
http_proxy
用于建立隧道连接的HTTP代理的URL。 许多HTTP代理有连接大小和持续时间限制,将导致ngrok失败。 像许多其他网络工具,ngrok也将尊重环境变量http_proxy
如果设置。
通过经过身份验证的HTTP代理的ngrok示例
http_proxy: "http://user:password@proxy.company:3128"
inspect_db_size
positive integers | 大小(以字节为单位),分配给通过HTTP隧道保存请求的内存上限以供检查和重放。 | |
---|---|---|
0 | default | 使用默认分配限制,50MB |
-1 | 禁用检查数据库;这具有禁用所有隧道的检查的有效行为 |
log_level
记录详细信息级别。以递增的顺序,可能的值是:crit
,warn
,error
,info
,debug
log_format
写日志记录的格式。.
logfmt | 人和机器友好的键/值对 | |
---|---|---|
json | 换行符分隔的JSON对象 | |
term | default | 自定义彩色人格式如果标准输出是TTY,否则与logfmt 相同 |
log
将日志写入此目标位置
stdout | 写到标准输出 | |
---|---|---|
stderr | 写入标准错误 | |
false | default | 禁用日志记录 |
other values | 将日志记录写入磁盘上的文件路径 |
log: /var/log/ngrok.log
metadata
不透明的用户提供的字符串,将作为ngrok.com API响应的一部分返回到此客户端启动的所有隧道的列表在线隧道资源。 这是一个有用的机制,通过您自己的设备或客户标识符来识别隧道。 最多4096个字符。 .
metadata: bad8c1c0-8fce-11e4-b4a9-0800200c9a66
region
选择ngrok客户端将连接以托管其隧道的区域。
us | default | United States |
---|---|---|
eu | Europe | |
ap | Asia/Pacific | |
au | Australia |
root_cas
用于验证与ngrok服务器的TLS连接的根证书颁发机构。
trusted | default | 请仅使用ngrok.com隧道服务的受信任证书根 |
---|---|---|
host | 请使用主机操作系统信任的根证书。您可能希望使用此选项连接到第三方ngrok服务器。 | |
other values | 到具有要信任的证书颁发机构的磁盘上的证书PEM文件的路径 |
socks5_proxy
用于建立与ngrok服务器的连接的SOCKS5代理的URL。
socks5_proxy: "socks5://localhost:9150"
tunnels
名称到隧道定义的映射。有关更多详细信息请参阅隧道定义.
update
true | default | 自动更新ngrok到最新版本,如果可用 |
---|---|---|
false | 从不更新ngrok,除非用户手动启动 |
update_channel
更新通道确定要更新的已发布构建的稳定性。对所有生产部署使用“稳定”。
stable | default | 渠道 |
---|---|---|
beta | 更新为新的测试版本(如果有) |
web_addr
绑定的网络地址,用于服务本地Web界面和api。
network address | 绑定到此网络地址 | |
---|---|---|
127.0.0.1:4040 | default | 默认网络地址 |
false | 禁用Web UI |