简明教程:如何使用内网穿透神器ngrok

1,562 阅读3分钟

在本地开发时,是否为测试 Webhook 而烦恼?别担心,ngrok 来帮你解决!

什么是 ngrok?🤔

ngrok 是一款强大的内网穿透工具,能够将你本地运行的服务器暴露到公网。简单来说,它就像一扇“任意门”,让外网也能访问到你本地的开发环境,无需复杂的网络配置。

为什么选择 ngrok?💡

想象一下,你在开发过程中遇到了以下场景:

  • 微信公众号开发:需要配置 Webhook 接收消息。
  • GitHub 仓库管理:调试 Webhook 回调。
  • 客户演示:向客户展示本地运行的项目。
  • 第三方支付集成:测试支付接口的回调。

以往的解决方案可能需要:

  • 部署到服务器:麻烦且耗时。
  • 修改路由器设置:存在安全风险。
  • 使用其他内网穿透工具:如花生壳,配置复杂。

有了 ngrok,这些问题都迎刃而解!

如何快速上手 ngrok?🛠️

1. 安装 ngrok

Mac 用户:

brew install ngrok

Windows 用户: 前往 ngrok官网 下载对应的安装包并安装。

2. 注册并获取 Authtoken

  1. 访问 ngrok官网 注册一个账号。

  2. 登录后,在仪表盘中找到你的 Authtoken

  3. 配置 token:

    ngrok config add-authtoken your_token_here
    

3. 启动 ngrok

假设你的本地服务运行在 3000 端口,执行以下命令:

ngrok http 3000

运行后,你会看到类似如下的输出:

Session Status                online
Account                       your_email
Version                       3.x.x
Region                        United States (us)
Forwarding                    https://abc123.ngrok.io -> http://localhost:3000

此时,你可以通过 https://abc123.ngrok.io 访问你的本地服务了!

ngrok 的进阶使用技巧 🔥

1. 自定义子域名

你可以为你的服务指定一个自定义的子域名(需要付费):

ngrok http --subdomain=myapp 3000

访问链接将变为 https://myapp.ngrok.io,更方便记忆和使用。

2. 请求调试界面

ngrok 提供一个本地调试界面,帮助你查看所有请求的详细信息:

  • 打开浏览器访问 http://localhost:4040
  • 在这里,你可以实时查看请求日志,方便调试和排错。

3. 配置文件使用

通过配置文件,可以更加灵活地管理多个隧道:

  1. 创建配置文件 ~/.ngrok2/ngrok.yml

    authtoken: your_token_here
    tunnels:
      webapp:
        proto: http
        addr: 3000
      api:
        proto: http
        addr: 4000
    
  2. 启动指定隧道:

    ngrok start webapp
    ngrok start api
    

4. 使用 TCP 隧道

除了 HTTP 隧道,ngrok 还支持 TCP 隧道,适用于需要 SSH 访问或其他 TCP 服务的场景:

ngrok tcp 22

这将为你的 SSH 服务分配一个公网可访问的地址。

5. 自定义域名绑定(高级)

对于有自己域名的用户,可以将自定义域名绑定到 ngrok:

  1. 在域名服务商处配置 CNAME 记录指向 ngrok.io
  2. 在 ngrok 配置文件中添加自定义域名配置。

使用 ngrok 需要注意什么?⚠️

  • 免费版限制

    • 随机分配的域名,每次启动后域名可能会变化。
    • 连接数和带宽有限制,适合开发和测试使用。
  • 稳定性

    • 国内访问可能会有一定延迟,建议在条件允许的情况下选择付费版本以获得更好的稳定性和速度。

总结 📝

ngrok 是本地开发和测试的利器,特别是在处理 Webhook、第三方回调等场景时,能够极大地提升工作效率。尽管免费版有一些限制,但对于大多数开发需求已经绰绰有余。如果你还没试过 ngrok,赶快下载体验,相信你会爱上这个工具!🚀


更多实用资源:

快分享给你的开发小伙伴,一起享受高效的开发体验吧!✨