NA-Vlet 内网穿透

本地开发环境暴露给外网:让 webhook 与第三方回调直接打到你本机

开发联调更新于 2026-09 · 约 8 分钟阅读

现代开发的接口越来越多是「对方主动调你」:GitHub 的 push webhook、支付平台的异步通知、企业微信机器人回调、 AI 平台的任务完成通知……这些请求只认公网地址,而你的 dev server 在 localhost:5173。把本地端口经内网穿透映射到公网,回调就会直接命中你正在改的代码—— 断点、热重载、日志全部生效,联调从「改一次发一次测试环境」变成「保存即生效」。

第一步:确认本地服务的监听地址

先把一个常见坑排掉:本地服务必须能被「非 localhost 的本机地址」访问。

# Vite / 前端 dev server
pnpm dev --host          # 监听 0.0.0.0:5173

# 常见本机服务端口
# Spring Boot 8080 / Express 3000 / Flask 5000 / Rails 3000

第二步:创建映射并自测

  1. 安装 NA-Vlet 客户端(免费下载),邮箱验证码注册登录。
  2. 「隧道映射」→ 新建,选「网站」模板,协议 HTTP,内网目标填 127.0.0.1:5173(换成你的实际端口)。
  3. 保存后拿到公网地址,先自己 curl 一遍确认链路通:curl -i http://公网地址/api/health。
  4. 链路通了再把地址填到第三方的回调配置里——顺序别反,否则你在对方面板上看不到有意义的报错。

第三步:接各家 webhook 的注意点

GitHub / GitLab webhook

仓库 Settings → Webhooks → Add webhook,Payload URL 填公网地址。GitHub 会先发一次 ping 事件校验连通性;如果配了 secret,记得在本地按 HMAC-SHA1 算签名(x-hub-signature 头)验签。Recent Deliverations 面板能重发请求,配合本地断点反复调试非常方便。

支付 / 订阅类回调

多数支付平台(微信支付 v3、Stripe 等)要求回调地址是 HTTPS。两个做法:给映射绑定自有域名与证书(NA-Vlet 支持), 或按各平台提供的沙箱/模拟回调工具先在 HTTP 上调通业务逻辑。详细以微信为例的完整流程见 微信回调本地调试教程。

企业微信 / 钉钉机器人

回调 URL 通常要求 IP 可公网访问 + 配置时立即验证(URL 有效性校验,解密 echo 串), 映射建立后即可在后台直接通过验证;机器人消息加解密的 AES key 在本地断点里看解密过程,比打印日志直观得多。

联调工作流建议

与 ngrok / cpolar 类工具的差异

这类「一条命令换一个随机 URL」的工具与本教程思路相同,差别在细节:随机域名每次重启都变, 意味着每次都要去第三方后台重新填回调地址;NA-Vlet 的映射地址稳定,配合域名绑定可以长期复用, 且隧道有 TLS 加密与白名单能力。临时演示用随机域名无所谓,长期联调建议固定地址。

dev server 暴露公网意味着别人也可能访问到你的开发环境(往往带源码、接口文档、调试端点)。 联调结束立即停用映射;长期开的映射务必配白名单或访问口令。