ngrok:Node.js 本地隧道工具
文章目录
ngrok:Node.js 本地隧道工具
ngrok 是一个 Node.js 封装库,用于调用 ngrok 客户端创建本地隧道。该项目在 GitHub 上获得了 2,418 个 Star。

ngrok 的作用是将本地运行的服务暴露到公网,方便测试和调试。比如本地开发了一个 Web 服务,端口是 8080,通过 ngrok 可以获得一个公网 URL,其他人可以通过这个 URL 访问你的本地服务。
这个库的第 5 版使用 ngrok 客户端第 3 版。如果需要使用 ngrok 客户端第 2 版,应该使用这个库的第 4 版。
安装
通过 npm 安装:
npm install ngrok
安装完成后,在代码中引入并使用:
const ngrok = require('ngrok');
(async function() {
const url = await ngrok.connect();
})();
默认情况下,connect 方法会创建一个 HTTP 隧道,指向本地 80 端口。也可以指定端口:
const url = await ngrok.connect(9090);
还可以传入选项对象,配置更多参数:
const url = await ngrok.connect({
proto: 'http',
addr: 8080,
basic_auth: 'user:pwd',
subdomain: 'alex',
authtoken: '12345',
region: 'us',
});
支持的协议包括 HTTP、TCP 和 TLS。可以通过 subdomain 参数设置自定义子域名,通过 region 参数选择服务器区域(us、eu、au、ap、sa、jp、in)。
认证
基本的 HTTP/HTTPS/TCP 隧道不需要认证令牌。如果需要自定义子域名等高级功能,需要在 ngrok.com 注册账号获取 authtoken,并通过以下方式设置:
await ngrok.authtoken(token);
或者在连接时传入:
await ngrok.connect({authtoken: token});
断开连接
ngrok 进程会在 Node.js 进程结束时自动关闭。也可以手动断开:
await ngrok.disconnect(url); // 断开指定隧道
await ngrok.disconnect(); // 断开所有隧道
await ngrok.kill(); // 终止 ngrok 进程
API 管理
ngrok 提供了一个 API 客户端,可以管理隧道和请求:
const api = ngrok.getApi();
const tunnels = await api.listTunnels();
const tunnel = await api.startTunnel(opts);
await api.stopTunnel(tunnelName);
还可以查看和重放请求:
await api.listRequests(options);
await api.replayRequest(requestId, tunnelName);
await api.deleteAllRequests();
配置文件
ngrok 支持使用配置文件存储隧道选项。配置文件的默认位置因操作系统而异:
| 系统 | 路径 |
|---|---|
| MacOS | ~/Library/Application Support/ngrok/ngrok.yml |
| Linux | ~/.config/ngrok/ngrok.yml |
| Windows | %HOMEPATH%\AppData\Local\ngrok\ngrok.yml |
可以通过 configPath 参数指定自定义配置文件路径。
静态免费域名
2023 年 4 月,ngrok 推出了静态免费域名功能,即使是免费账号也可以获得固定的子域名。使用方法:
ngrok.connect({
domain: "xxx.ngrok-free.app",
authtoken: "YOUR-AUTH-TOKEN"
})
注意:subdomain 和 domain 参数不能同时使用,否则只会生效 subdomain。
代理设置
如果在企业代理环境下安装遇到问题,可以设置 HTTPS_PROXY 环境变量。需要安装 hpagent 模块作为依赖。
如果使用 CA 文件,可以通过 NGROK_ROOT_CA_PATH 环境变量指定路径。

环境变量。需要安装hpagent` 模块作为依赖。
如果使用 CA 文件,可以通过 NGROK_ROOT_CA_PATH 环境变量指定路径。
[外链图片转存中…(img-3q2FIe3N-1782799517717)]
更多推荐
所有评论(0)