ngrok配置文件

有时,您的ngrok配置太复杂,无法在命令行选项中显示。 ngrok支持一个可选的,非常简单的YAML配置文件,它提供了同时运行多个隧道的能力,以及调整一些ngrok的更多奥术设置。

配置文件位置

您可以使用-config选项将路径传递到显式配置文件。这是建议所有生产部署。

显式指定配置文件位置

  1. ngrok http -config=/opt/ngrok/conf/ngrok.yml 8000

您可以多次传递-config选项。 如果这样做,则将解析第一个配置,并将每个连续的配置合并到其上。 这允许您具有每个项目的ngrok配置文件与隧道定义,但主配置文件在您的主目录与您的authtoken和其他全局设置。

指定具有项目特定覆盖的附加配置文件

  1. 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”的隧道

  1. tunnels:
  2. httpbin:
  3. proto: http
  4. addr: 8000
  5. subdomain: alan-httpbin
  6. demo:
  7. proto: http
  8. addr: 9090
  9. hostname: demo.inconshreveable.com
  10. inspect: false
  11. auth: "demo:secret"

启动隧道名为“httpbin”

  1. 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将同时运行它们。

从配置文件启动三个命名的隧道

  1. ngrok start admin ssh metrics
  1. ngrok by @inconshreveable
  2. Tunnel Status online
  3. Version 2.0/2.0
  4. Web Interface http://127.0.0.1:4040
  5. Forwarding http://admin.ngrok.io -> 10.0.0.1:9001
  6. Forwarding http://device-metrics.ngrok.io -> localhost:2015
  7. Forwarding https://admin.ngrok.io -> 10.0.0.1:9001
  8. Forwarding https://device-metrics.ngrok.io -> localhost:2015
  9. Forwarding tcp://0.tcp.ngrok.io:48590 -> localhost:22
  10. ...

您还可以要求ngrok使用--all开关启动配置文件中定义的所有隧道。

启动配置文件中定义的所有隧道

  1. ngrok start --all

相反,您可以要求ngrok运行,而不使用—none开关启动任何隧道。如果您计划通过API完全管理ngrok的隧道,这将非常有用。

运行ngrok而不启动任何隧道

  1. ngrok start --none

示例配置文件

示例配置文件如下所示。后续部分包含这些示例中显示的所有配置参数的完整文档。.

为多个虚拟托管开发站点运行隧道

  1. authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
  2. tunnels:
  3. app-foo:
  4. addr: 80
  5. proto: http
  6. host_header: app-foo.dev
  7. app-bar:
  8. addr: 80
  9. proto: http
  10. host_header: app-bar.dev

使用您自己的证书通过http和https隧道定制域

  1. authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
  2. tunnels:
  3. myapp-http:
  4. addr: 80
  5. proto: http
  6. hostname: example.com
  7. bind_tls: false
  8. mypp-https:
  9. addr: 443
  10. proto: tls
  11. hostname: example.com

通过隧道暴露ngrok的Web检查接口和API

  1. authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
  2. tunnels:
  3. myapp-http:
  4. addr: 4040
  5. proto: http
  6. subdomain: myapp-inspect
  7. auth: "user:secretpassword"
  8. inspect: false

具有所有选项的示例配置文件

  1. authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
  2. region: us
  3. console_ui: true
  4. compress_conn: false
  5. http_proxy: false
  6. inspect_db_size: 50000000
  7. log_level: info
  8. log_format: json
  9. log: /var/log/ngrok.log
  10. metadata: '{"serial": "00012xa-33rUtz9", "comment": "For customer alan@example.com"}'
  11. root_cas: trusted
  12. socks5_proxy: "socks5://localhost:9150"
  13. update: true
  14. update_channel: stable
  15. web_addr: localhost:4040
  16. tunnels:
  17. website:
  18. addr: 8888
  19. auth: bob:bobpassword
  20. bind_tls: true
  21. host_header: "myapp.dev"
  22. inspect: false
  23. proto: http
  24. subdomain: myapp
  25. e2etls:
  26. addr: 9000
  27. proto: tls
  28. hostname: myapp.example.com
  29. crt: example.crt
  30. key: example.key
  31. ssh-access:
  32. addr: 22
  33. proto: tcp
  34. remote_addr: 1.tcp.ngrok.io:12345

配置选项

authtoken

此选项指定用于在客户端连接到ngrok.com服务时对其进行身份验证的身份验证令牌。创建ngrok.com帐户后,信息中心将显示分配给您帐户的authtoken。

ngrok.yml指定authtoken

  1. 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示例

  1. 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 将日志记录写入磁盘上的文件路径
  1. log: /var/log/ngrok.log

metadata

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

  1. 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。

  1. 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