从ngrok 1.0升级
从用户的角度来看,ngrok 2.0的工作方式几乎与ngrok 1.0完全相同。 话虽如此,对于使ngrok一致,更简单和更灵活的目的已经进行了一些重要的改变。 以下部分详细介绍了在升级时需要注意的最重要的区别。
命令行语法
ngrok 2.0不再假定您希望默认创建一个http隧道。相反,您必须显式地命名要创建的隧道的协议。最常见的是,这是一个http隧道。
OLD
ngrok -subdomain=myapp 80
NEW
ngrok http -subdomain=myapp 80
OLD
ngrok -proto=tcp 22
NEW
ngrok tcp 22
此更改使语法一致:ngrok [protocol] [target port]。 它允许每个隧道协议具有特定于它的选项以及其自己的帮助文本。 例如,如果您尝试使用TCP隧道,指定http基本身份验证现在感觉更自然和错误:
OLD
ngrok -httpauth "user:pw" 8080
NEW
ngrok http -auth "user:pw" 8080
OLD, -httpauth ignored
ngrok -proto=tcp -httpauth "user:pw" 22
NEW, error: no 'auth' option defined for TCP tunnels
ngrok tcp -auth "user:pw" 22
配置文件
ngrok配置文件看到了最大的变化。这里只突出最重要的区别。
ngrok配置文件的默认位置已更改。这是为了帮助您并行运行ngrok 1.0和ngrok 2.0。
OLD location
~/.ngrok
NEW location
~/.ngrok2/ngrok.yml
配置文件中authtoken键的拼写已更改为与命令行选项一致:
OLD config
auth_token: abc123
NEW config
authtoken: abc123
配置文件中的隧道定义已更改,使配置结构更简单,嵌套更少。 密钥proto
现在采用协议名称而不是映射,并且引入新密钥 addr
以指定隧道的本地目标端口/地址。
OLD config
tunnels:
webapp:
proto:
http: 8080
auth: "user:pw"
ssh:
proto:
tcp: 22
NEW config
tunnels:
webapp:
proto: http
addr: 8080
subdomain: webapp
auth: "user:pw"
ssh:
proto: tcp
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中找到。这可能不是您打算使用的版本。