无


使用量
本地安装
用 npm 安装软件包 :
npm install ngrok
然后使用 ngrok.connect() 开始ngrok和打开地道.
const ngrok = require('ngrok');
(async function() {
const url = await ngrok.connect();
})();
此模块使用 node>=10.19.0 与同步/等待。 用于基于召回的版本 2.3.0 (单位:千美元)。 。 。 .
全局安装
npm install ngrok -g
ngrok http 8080
对于Linux 上的全球安装, 您可能需要运行 sudo npm install --unsafe-perm -g ngrok 应付 性质 npm 邮购脚本.
Auth 托肯语
您可以创建基本的 http- https- tcp 地道 自定义。对于自定义的子域和更多域,您应当通过 在 ngrok.com 注册。一旦您设置了自动调试机,它就会被存储在 ngrok 配置中,并用于所有隧道。 您可以直接设置验证符 :
await ngrok.authtoken(token);
或将认证传给 connect 这样的方法 :
await ngrok.connect({authtoken: token, ...});
连接
有几种方法可以创建隧道 Ngrok使用 connect 方法.
默认, connect 将打开 HTTP 隧道到端口 80
const url = await ngrok.connect(); // https://757c1652.ngrok.io -> http://localhost:80
您可以将端口号码传递到 connect 指定端口:
const url = await ngrok.connect(9090); // https://757c1652.ngrok.io -> http://localhost:9090
或者你可以通过一个选项对象,例如:
const url = await ngrok.connect({proto: 'tcp', addr: 22}); // tcp://0.tcp.ngrok.io:48590
const url = await ngrok.connect(opts);
选项
有很多选择,你可以通过 connect,这里有一些例子:
const url = await ngrok.connect({
proto: 'http', // http|tcp|tls, defaults to http
addr: 8080, // port or network address, defaults to 80
auth: 'user:pwd', // http basic authentication for tunnel
subdomain: 'alex', // reserved tunnel name https://alex.ngrok.io
authtoken: '12345', // your authtoken from ngrok.com
region: 'us', // one of ngrok regions (us, eu, au, ap, sa, jp, in), defaults to us
configPath: '~/git/project/ngrok.yml', // custom path for ngrok config file
binPath: path => path.replace('app.asar', 'app.asar.unpacked'), // custom binary path, eg for prod in electron
onStatusChange: status => {}, // 'closed' - connection is lost, 'connected' - reconnected
onLogEvent: data => {}, // returns stdout messages from ngrok process
});
见 所有隧道定义选项的 ngrok 文档 包括: name, inspect, host_header, bind_tls, hostname, crt, key, client_cas, remote_addr。 。 。 .
关于区域的说明:第一隧道所使用的区域将用于以下所有隧道.
断开连接
Ngrok进程和所有地道将在节点进程完成后被杀死. 为了手动阻止地道:
await ngrok.disconnect(url); // stops one
await ngrok.disconnect(); // stops all
await ngrok.kill(); // kills ngrok process
HTTP地道上的注释:默认绑定 tls是真实的,所以每当使用HTTP原型两条地道时都会被创建出-HTTP和HTTP. 如果断开HTTPS隧道,HTTP隧道仍然开放. 您可能想要通过 HTTP 版本 URL 来关闭它们, 或者简单地将全部断开 ngrok.disconnect()。 。 。 .
配置
你可以使用ngrok的 配置文件,然后通过 name 选项。 配置文件允许存储隧道选项 。 Ngrok在这里寻找他们:
OS X /Users/example/.ngrok2/ngrok.yml
Linux /home/example/.ngrok2/ngrok.yml
Windows C:\Users\example\.ngrok2\ngrok.yml
您可以指定自定义 configPath 当做地道.
检查员
当隧道建成后,您可以使用http://127.0.0.1:4040中托管的ngrok接口来检查通过ngrok制作的webhooks.
内部主机为同一 URL 客户端 api。这个软件包暴露了一个API客户端,该客户端将API包裹起来,您可以自己管理地道.
const url = await ngrok.connect();
const api = ngrok.getApi();
const tunnels = await api.listTunnels();
您也可以获取内部 API 的 URL :
const url = await ngrok.connect();
const apiUrl = ngrok.getUrl();
API 密码
API 包装器可以访问所有 ngrok 客户端 API 方法:
const url = await ngrok.connect();
const api = ngrok.getApi();
列出隧道
const tunnels = await api.listTunnels();
开始隧道
const tunnel = await api.startTunnel(opts);
获取隧道细节
const tunnel = await api.tunnelDetail(tunnelName);
停止隧道
await api.stopTunnel(tunnelName);
名单请求
await api.listRequests(options);
重放请求
await api.replayRequest(requestId, tunnelName);
删除所有请求
await api.deleteAllRequests();
请求细节
const request = await api.requestDetail(requestId);
代理服务器
- 如果你是公司代理的幕后黑手 有问题安装ngrok,你可以设定
HTTPS_PROXY{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}我们来修理它 ngrok的后置脚本使用got模块以获取二进制和hpagent模块支持 HTTPS 代理。 您需要安装hpagent作为依赖的模块 - 如果您正在使用 CA 文件, 请在环境变量中设置路径
NGROK_ROOT_CA_PATH。在邮站脚本中下载 ngrok 二进制需要路径
博览会变化
获取活动进程处理
给产卵的ngrok工艺使用一个把手
ngrok.getActiveProcess(); // returns ChildProcess
使用 @ expo/ngrok- bin来管理 ngrok 二进制
版本二进制的好处 。 这个 binPath 选项不支持.
如何运作
npm install 从正式的 ngrok 主机下载您平台的 ngrok 二进制 。 自己设置二进制 NGROK_CDN_URL 安装 ngrok 之前的环境变量 。 强制特定平台 NGROK_ARCH,例如: NGROK_ARCH=freebsdia32。 。 。 .
第一次创建地道时, ngrok 进程会产出并运行到断开或母进程被杀死时. 所有进一步的地道都通过通常在http://127.0.0.1:4040上运行的内部ngrok API连接或断开.
ngrok 二进制更新
如果您想从您的软件直接强制更新 ngrok 二进制, 您可以要求 ngrok/download 模块并调用 downloadNgrok 直接函数 :
const downloadNgrok = require('ngrok/download');
downloadNgrok(myCallbackFunc, { ignoreCache: true });
用点头符
如果您想要在更改时重新启动您的应用程序, 您可以使用 节点恶魔。此博客文章显示 如何使用 nodemon 和 ngrok 一起使用 这样您的服务器会重新启动, 但您的隧道不会。 。 。 .
贡献者
请跑 git update-index --assume-unchanged bin/ngrok 不覆盖 ngrok 树枝 在你的公关。 不幸的是,它不能被赋予.
测试套房包括没有认证的基本用途,以及免费和付费认证的功能。 作为环境变量,您可以提供自己的符号,否则会给出警告并忽略某些规格(局部和在PR构建中). GitHub Actions 向主分支提供真实的代号,并运行所有规格 .
升级到第4版
更新软件包的主要动力是消除对已贬值软件的依赖 request 模块. request 改为: got。主要呼吁 ngrok 函数, connect, (中文(简体) ), authtoken, (中文(简体) ), disconnect, (中文(简体) ), kill, (中文(简体) ), getVersion 财务报告和审定财务报表 getUrl 回应与第3版相同.
更新了HTTP库,意味着被包裹的API会改变,因此创建了一个客户端类,其中包含了可用API调用的方法. 见上文文件 如何使用 API 客户端。 。 。 .
反之在于你不再需要知道你需要的API方法的路径了. 例如,要在第三版中列出运行中的地道,你会做到:
const api = ngrok.getApi();
const tunnels = await api.get('api/tunnels');
现在你可以打电话给 listTunnels 函数 :
const api = ngrok.getApi();
const tunnels = await api.listTunnels();
类型脚本
从第3版到第4版,捆绑型号也进行了大修. 大多数类型生活在 Ngrok 命名空间,特别是 Ngrok.Options 替换 INgrokOptions。 。 。 .