内网穿透 ngork
什么是内网穿透?
通俗解释
想象你的电脑是一个“酒店房间”(内网 IP,如 127.0.0.1 或 192.168.x.x ),而互联网是“街道”。
- 别人在街道上(公网)是找不到你的房间号的,因为很多酒店都有“201房”。
- 内网穿透 就像是雇了一个“接线员”(ngrok 服务器)。
- 接线员在街道上设了一个“服务台”(公网 URL),别人只要访问这个服务台,接线员就会把信号通过一条“专用电话线”(隧道)直接转接到你的房间里。
核心作用
让外网(互联网)用户能够访问你本地电脑上运行的服务(如网站、数据库、SSH 等),而无需购买服务器或配置复杂的路由器端口转发。
ngrok 快速上手
ngrok 是目前最流行的反向代理工具,它能通过一条命令瞬间建立隧道。
第一步:安装与配置
下载:去 ngrok官网 下载对应的版本(Windows/Mac/Linux)。
解压:解压后得到一个可执行文件 ngrok (Windows下是 ngrok.exe)。
认证(必须):
注册并登录 ngrok dashboard。
https://dashboard.ngrok.com/get-started/your-authtoken
复制你的 Authtoken
在终端(cmd/PowerShell)运行:
ngrok config add-authtoken <你的Token>
第二步:常用命令速查
暴露 Web 服务 (HTTP)
这是最常用的功能,将本地网站通过公网访问。
-
默认 80 端口:
ngrok http 80 -
指定其他端口 (例如 3000):
ngrok http 3000
-
指定地区 (加速连接): 如果你在亚洲,建议加上
--region=ap(Asia Pacific):ngrok http 80 --region=ap
暴露 TCP 服务 (SSH/远程桌面)
如果你需要远程连接数据库、SSH 或 Windows 远程桌面 (RDP)。
-
暴露 SSH (默认 22):
ngrok tcp 22 -
暴露 远程桌面 (默认 3389):
ngrok tcp 3389注意:TCP 隧道在免费版中会随机分配一个端口号,例如
0.tcp.ap.ngrok.io:12345。
进阶技巧与常见坑
重点 1:路径问题 (Route vs Path)
ngrok 只负责打通端口,不负责跳转路径。
- 错误理解:我想直接穿透到
/share/index,所以输入ngrok http 8080/share/index❌ (命令会报错)。 - 正确做法:
- 运行
ngrok http 8080。 - 得到公网地址
https://abcd.ngrok-free.app。 - 手动在浏览器访问
https://abcd.ngrok-free.app/share/index。
- 运行
重点 2:Host Header (网页报错 Invalid Host)
有些本地服务(如 Vue/React 开发服、WordPress)会检查请求的 Host 头,发现是 ngrok 的域名就会拒绝连接。
-
解决方案:使用重写 Host 参数。
ngrok http 8080 --host-header="rewrite"这会让你的本地程序以为请求是直接来自 localhost,从而允许访问。
重点 3:流量监控 (Web Interface)
ngrok 启动后,不要关闭终端。你可以在浏览器打开以下地址进入管理面板:
- Inspect:查看所有经过隧道的请求(Request)和响应(Response)的详细内容,非常适合调试 API 回调(Webhook)。
- Status:查看当前隧道的连接状态。
环境变量配置 (Windows)
为了避免每次都要 cd 到下载目录才能运行 ngrok:
- 将
ngrok.exe移动到一个固定目录(例如C:\Program Files\ngrok\)。 - 搜索 Windows 设置 -> “编辑系统环境变量”。
- 点击 “环境变量” -> 在 “系统变量” 中找到 Path -> 点击 “编辑”。
- 点击 “新建” -> 粘贴你存放 ngrok 的文件夹路径。
- 重启终端,现在你在任何地方输入
ngrok都可以运行了。
💬 评论