当前位置: 首页 > 文档资料 > ngrok 中文文档 >

ngrok配置文件

优质
小牛编辑
119浏览
2023-12-01

有时,您的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
WindowsC:\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。 其他属性是可用的,许多是协议特定的。

隧道配置属性

protorequired all隧道协议名称, one of http, tcp, tls
addrrequired all将流量转发到此本地端口号或网络地址
inspectall启用http请求检查
authhttpHTTP基本认证凭证,用于对隧道请求强制执行
host_headerhttp将HTTP主机头重写为此值,或保留preserve以使其保持不变
bind_tlshttp绑定HTTPS或HTTP端点或同时绑定true, false, or both
subdomainhttp tls子域名请求。如果未指定,请使用隧道名称
hostnamehttp tls请求的主机名(需要保留名称和DNS CNAME)
crttlsPEM TLS证书,在本地转发之前终止TLS流量
keytlsPEM TLS私钥在此路径上在本地转发之前终止TLS流量
client_castls此路径上的PEM TLS证书颁发机构将验证传入的TLS客户端连接证书。
remote_addrtcp绑定给定地址上的远程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
ifttydefault仅在标准输出为TTY(不是文件或管道)时启用UI

console_ui_color

transparent在显示控制台UI时不要设置背景颜色
blackdefault将控制台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隧道保存请求的内存上限以供检查和重放。
0default使用默认分配限制,50MB
-1禁用检查数据库;这具有禁用所有隧道的检查的有效行为

log_level

记录详细信息级别。以递增的顺序,可能的值是:crit,warn,error,info,debug


log_format

写日志记录的格式。.

logfmt人和机器友好的键/值对
json换行符分隔的JSON对象
termdefault自定义彩色人格式如果标准输出是TTY,否则与logfmt相同

log

将日志写入此目标位置

stdout写到标准输出
stderr写入标准错误
falsedefault禁用日志记录
other values将日志记录写入磁盘上的文件路径
log: /var/log/ngrok.log

metadata

不透明的用户提供的字符串,将作为ngrok.com API响应的一部分返回到此客户端启动的所有隧道的列表在线隧道资源。 这是一个有用的机制,通过您自己的设备或客户标识符来识别隧道。 最多4096个字符。 .

metadata: bad8c1c0-8fce-11e4-b4a9-0800200c9a66

region

选择ngrok客户端将连接以托管其隧道的区域。

usdefaultUnited States
euEurope
apAsia/Pacific
auAustralia

root_cas

用于验证与ngrok服务器的TLS连接的根证书颁发机构。

trusteddefault请仅使用ngrok.com隧道服务的受信任证书根
host请使用主机操作系统信任的根证书。您可能希望使用此选项连接到第三方ngrok服务器。
other values到具有要信任的证书颁发机构的磁盘上的证书PEM文件的路径

socks5_proxy

用于建立与ngrok服务器的连接的SOCKS5代理的URL。

socks5_proxy: "socks5://localhost:9150"

tunnels

名称到隧道定义的映射。有关更多详细信息请参阅隧道定义.


update

truedefault自动更新ngrok到最新版本,如果可用
false从不更新ngrok,除非用户手动启动

update_channel

更新通道确定要更新的已发布构建的稳定性。对所有生产部署使用“稳定”。

stabledefault渠道
beta更新为新的测试版本(如果有)

web_addr

绑定的网络地址,用于服务本地Web界面和api。

network address绑定到此网络地址
127.0.0.1:4040default默认网络地址
false禁用Web UI