最近在开发中使用到这个工具,顺便收集资料,记录一下。
Ngrok 是一个跨平台工具,用于将本地开发环境中的应用程序安全地暴露给互联网。它通过创建一个安全的隧道,使得外部用户可以访问你本地运行的服务,比如 Web 应用、API、Webhook 等。
先上架构图,由AI 生成
主要功能
-
暴露本地服务器
Ngrok 可以将运行在本地机器上的 HTTP/HTTPS 服务映射到一个公开的 URL,使其可以通过互联网访问。 -
支持动态 URL
每次启动 Ngrok 时,会生成一个临时的唯一 URL。 -
支持 HTTPS
提供免费的 HTTPS 加密,使通信更加安全。 -
适用于 Webhook 测试
用于调试需要公网访问的 Webhook,例如测试 LINE、Telegram 或 Stripe 等 Webhook 集成。 -
流量监控和日志
Ngrok 提供仪表盘,实时查看通过隧道传输的请求数据,方便调试。 -
支持自定义域名和子域(付费版)
可以绑定自定义域名,或者设置固定的子域。
Ngrok 的应用场景
-
测试 Webhook 服务
- 本地开发的 Web 应用通常无法直接收到 Webhook 调用。Ngrok 可以解决这个问题,让外部服务通过公网访问本地服务。
-
共享本地项目
- 快速分享一个本地运行的 Web 项目给团队或客户,而无需部署到服务器。
-
调试与开发
- 通过 Ngrok 提供的日志功能,开发者可以实时查看传输数据,调试应用。
-
演示和快速验证
- 快速将应用暴露给用户或同事进行演示,无需繁琐的部署。
如何使用 Ngrok?
1. 安装 Ngrok
- 前往 Ngrok 官方网站 下载适合你操作系统的版本。
- 下载后解压并将
ngrok
文件添加到环境变量,或者直接运行解压的文件。
2. 启动隧道
- 运行一个本地服务,例如 Flask:
fask run
- 启动 Ngrok 将端口 5000 暴露到公网:
ngrok http 5000
- 运行后,Ngrok 会显示如下信息:
现在你可以通过Forwarding https://1234-5678.ngrok.io -> http://localhost:5000
https://1234-5678.ngrok.io
访问本地应用。
3. 查看请求和响应
- Ngrok 提供一个 Web 界面用于查看请求和响应日志: 打开 http://127.0.0.1:4040。
4. 登录账户(可选)
- 创建 Ngrok 账户后,可以获取一个 authtoken,解锁更多功能:
ngrok authtoken <YOUR_TOKEN>
Ngrok 的优势
-
快速部署
无需复杂的服务器配置或 DNS 设置。 -
跨平台支持
适用于 Linux、MacOS 和 Windows。 -
便捷的调试功能
实时日志和仪表盘使调试变得更容易。 -
安全加密
提供 HTTPS 支持,保证数据传输的安全性。 -
免费与扩展功能
免费用户也可以使用基础功能,付费用户可以享受更多高级功能。
Ngrok 的局限性
-
URL 不稳定(免费版)
每次启动生成的 URL 是动态的,不适用于长期服务。 -
带宽限制
免费版对流量和连接数量有限制。 -
安全隐患
如果不加以限制,任何人都可以访问你的本地服务。
替代工具
如果你需要其他类似功能的工具,可以考虑:
- LocalTunnel
开源、简单,但功能较少。 - Serveo
一个无需安装的在线隧道服务。 - Expose
开源替代方案,专注于隐私和开发。