ngrok 内网穿透工具详解
工具: ngrok - 内网穿透解决方案 用途: 将本地服务暴露到公网,实现临时公网访问 适用场景: 开发调试、Webhook 测试、临时演示、移动端测试、HTTPS 测试
📖 什么是 ngrok?
ngrok 是一个反向隧道工具,它能够在你本地运行的服务器和公网之间建立一个安全的隧道。简单来说,它可以把你的 localhost:3000 变成一个可以通过互联网访问的网址,比如 https://abc123.ngrok.io。
核心概念
- 本地服务: 运行在你电脑上的应用(如
http://localhost:3000) - ngrok 客户端: 运行在你电脑上的程序,连接到 ngrok 服务器
- ngrok 服务器: ngrok 提供的云端服务器,负责转发请求
- 公网 URL: ngrok 分配给你的临时公网地址(如
https://xxx.ngrok.io)
总结: ngrok 通过建立安全隧道,将本地服务映射到公网,让你无需购买服务器和配置域名,就能快速实现公网访问。特别适合开发测试场景。
🎯 核心功能
1. HTTP/HTTPS 隧道 ⭐
自动 HTTPS 支持是 ngrok 的核心优势:
# 将本地 3000 端口暴露到公网(自动提供 HTTP 和 HTTPS)
ngrok http 3000
输出示例:
Forwarding http://abc123.ngrok.io -> http://localhost:3000
Forwarding https://abc123.ngrok.io -> http://localhost:3000
HTTPS 特性:
- ✅ 自动提供: 即使本地服务是 HTTP,ngrok 也会自动提供 HTTPS 访问
- ✅ 免费 SSL 证书: 使用 Let's Encrypt 证书,完全免费且自动续期
- ✅ 浏览器信任: 所有主流浏览器都信任,无安全警告
- ✅ 适用场景: 微信小程序、PWA、移动 App、Webhook 等需要 HTTPS 的场景
常用命令:
# 基本使用
ngrok http 3000
# 只允许 HTTPS(禁止 HTTP)
ngrok http 3000 --scheme=https
# HTTPS + 基本认证
ngrok http 3000 --basic-auth="admin:password123"
# 本地服务已使用 HTTPS
ngrok http https://localhost:3000
总结: HTTP/HTTPS 隧道是 ngrok 最常用的功能,特别是自动 HTTPS 支持,让开发者无需配置 SSL 证书就能获得安全的 HTTPS 访问,这是 ngrok 相比其他工具的核心优势。
2. TCP 隧道
支持任意 TCP 协议(如数据库、SSH 等):


