从ngrok 1.0升级

从用户的角度来看,ngrok 2.0的工作方式几乎与ngrok 1.0完全相同。 话虽如此,对于使ngrok一致,更简单和更灵活的目的已经进行了一些重要的改变。 以下部分详细介绍了在升级时需要注意的最重要的区别。

命令行语法

ngrok 2.0不再假定您希望默认创建一个http隧道。相反,您必须显式地命名要创建的隧道的协议。最常见的是,这是一个http隧道。

OLD NEW
  1. ngrok -subdomain=myapp 80
  1. ngrok http -subdomain=myapp 80
OLD NEW
  1. ngrok -proto=tcp 22
  1. ngrok tcp 22

此更改使语法一致:ngrok [protocol] [target port]。 它允许每个隧道协议具有特定于它的选项以及其自己的帮助文本。 例如,如果您尝试使用TCP隧道,指定http基本身份验证现在感觉更自然和错误:

OLD NEW
  1. ngrok -httpauth "user:pw" 8080
  1. ngrok http -auth "user:pw" 8080
OLD, -httpauth ignored NEW, error: no 'auth' option defined for TCP tunnels
  1. ngrok -proto=tcp -httpauth "user:pw" 22
  1. ngrok tcp -auth "user:pw" 22

配置文件

ngrok配置文件看到了最大的变化。这里只突出最重要的区别。

ngrok配置文件的默认位置已更改。这是为了帮助您并行运行ngrok 1.0和ngrok 2.0。

OLD location NEW location
  1. ~/.ngrok
  1. ~/.ngrok2/ngrok.yml

配置文件中authtoken键的拼写已更改为与命令行选项一致:

OLD config NEW config
  1. auth_token: abc123
  1. authtoken: abc123

配置文件中的隧道定义已更改,使配置结构更简单,嵌套更少。 密钥proto现在采用协议名称而不是映射,并且引入新密钥 addr以指定隧道的本地目标端口/地址。

OLD config

  1. tunnels:
  2. webapp:
  3. proto:
  4. http: 8080
  5. auth: "user:pw"
  6. ssh:
  7. proto:
  8. tcp: 22

NEW config

  1. tunnels:
  2. webapp:
  3. proto: http
  4. addr: 8080
  5. subdomain: webapp
  6. auth: "user:pw"
  7. ssh:
  8. proto: tcp
  9. addr: 22

Authtoken

在配置文件中指定的authtoken与用于ngrok 1.0的authtoken不同。您的2.0 ngrok authtoken可在您的ngrok 2.0仪表板上

Base Domain

出于安全原因,所有ngrok 2.0隧道现在都托管在ngrok.io 域。您不能使用1.0中保留的 ngrok.com域作为2.0隧道。您需要在ngrok 2.0的仪表板上保留等效的域名

自定义域的CNAME记录

当切换到ngrok 2.0时,您需要更改您的DNS CNAME记录以指向不同的目标。 自定义域中的隧道的CNAME记录不再都指向ngrok.com。 而是为每个自定义域分配其CNAME记录的目标地址。 当您希望开始在ngrok 2.0上使用自定义域时,您需要更新DNS记录。 有关详细信息,请参阅自定义域的文档.

同时使用

在升级过程中同时使用ngrok 1.0和ngrok 2.0非常容易。有三个常见的陷阱需要注意:

  • 当同时运行两个客户端时,有时可能遇到一个无法启动的问题,因为它不能绑定端口4040.两个版本的ngrok使用此端口的Web界面。 尝试将ngrok 2.0配置文件中的web_addr设置为不同的值(例如127.0.0.1:4041),以避免冲突。

  • 由于自定义域必须具有指向不同目标的CNAME记录,因此您一次只能在单个版本的ngrok上使用自定义域。

  • 当你调用ngrok没有一个明确的路径,你的操作系统将选择无论哪个版本恰好在你的PATH中找到。这可能不是您打算使用的版本。