菜鸟科技网

ngrok命令如何使用?

下面我将为你详细介绍 ngrok 的命令,从基础到进阶。

ngrok命令如何使用?-图1
(图片来源网络,侵删)

安装和认证

在使用命令之前,你需要先安装并认证 ngrok

安装

根据你的操作系统选择安装方式:

  • macOS (使用 Homebrew):
    brew install ngrok/ngrok/ngrok
  • Windows (使用 Scoop):
    scoop install ngrok
  • Linux (Debian/Ubuntu):
    # 下载并安装
    sudo apt update
    sudo apt install ngrok
  • 从官网下载: 访问 ngrok 官网 下载适合你系统的二进制文件,并将其添加到系统 PATH 中。

认证

为了使用自定义子域名等高级功能,你需要免费注册一个 ngrok 账户并获取你的 Authtoken。

  1. 注册账户:访问 ngrok.com/signup
  2. 登录后,在你的 Dashboard 页面找到你的 Authtoken。
  3. 在终端中运行以下命令进行认证:
    ngrok config add-authtoken YOUR_AUTH_TOKEN

    YOUR_AUTH_TOKEN 替换为你从 Dashboard 复制的真实 Token。

    ngrok命令如何使用?-图2
    (图片来源网络,侵删)

核心命令:启动隧道

这是 ngrok 最基本也是最常用的功能。

基本语法

ngrok [options] <protocol> <port>
  • [options]: 可选参数,用于配置隧道。
  • <protocol>: 协议,通常是 httphttps
  • <port>: 你本地开发服务器运行的端口号(3000, 8080)。

示例

假设你的本地服务器运行在 http://localhost:8080

启动一个 HTTP 隧道:

ngrok http 8080

运行后,你会看到类似下面的输出,这表示隧道已经成功建立:

ngrok命令如何使用?-图3
(图片来源网络,侵删)
ngrok by @inconshreveable
Session Status                online
Account                       Your Name (Plan: Free)
Version                       3.1.0
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://a1b2-3c4d-5e6f.ngrok.io -> http://localhost:8080
Forwarding                    https://a1b2-3c4d-5e6f.ngrok.io -> http://localhost:8080
Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00
  • http://a1b2-3c4d-5e6f.ngrok.iohttps://a1b2-3c4d-5e6f.ngrok.io 就是你在公共互联网上可以访问的地址。
  • http://127.0.0.1:4040 是 ngrok 的本地 Web 界面,你可以在这里查看详细的请求日志、统计数据等。

常用选项和参数

你可以通过添加选项来更精细地控制隧道。

指定自定义子域名

如果你有付费账户,可以使用固定的子域名。

ngrok http 8080 --subdomain=mycoolapp

访问地址将变为 http://mycoolapp.ngrok.io

绑定自定义域名

如果你拥有自己的域名(api.myapp.com),并配置了 CNAME 指向 ngrok,可以这样使用。

ngrok http 8080 --hostname=api.myapp.com

基本认证

为你的隧道添加用户名和密码,防止陌生人随意访问。

ngrok http 8080 --auth="username:password"

访问时需要输入 usernamepassword

指定地区

如果你需要连接到特定地区的服务器(例如欧洲)。

ngrok http 8080 --region=eu

可用地区代码: us (默认), eu, au, ap, sa, jp, in

后台运行

ngrok 在后台运行,不占用你的终端窗口。

ngrok http 8080 --log=stdout

(注意:在 macOS 和 Linux 上,你可以使用 nohup ngrok http 8080 & 来实现类似效果)

查看详细日志

将日志输出到文件中,方便排查问题。

ngrok http 8080 --log=ngrok.log

管理现有隧道

当你启动 ngrok 后,它会持续运行直到你手动停止,如果你需要管理已有的隧道,可以使用 ngrok 的 API 或配置文件。

使用配置文件 (ngrok.yml)

这是更高级和推荐的管理方式,尤其适合需要稳定、重复配置的场景。

  1. 创建一个名为 ngrok.yml 的文件在你的项目根目录或用户主目录 (~/.ngrok2/ngrok.yml)。

  2. 在文件中定义你的隧道配置:

    # ngrok.yml
    tunnels:
      my-app:
        proto: http
        addr: 3000
        subdomain: my-awesome-app
        auth: "admin:secret123"
      api-server:
        proto: http
        addr: 8080
        hostname: api.myapp.com
  3. 启动配置好的隧道:

    # 启动名为 'my-app' 的隧道
    ngrok start my-app
    # 启动所有在配置文件中定义的隧道
    ngrok start --all

使用 ngrok 命令管理

  • 列出所有正在运行的隧道:

    ngrok list
  • 停止一个正在运行的隧道 (通过 ID):

    ngrok stop <tunnel_id>

    你可以从 ngrok list 的输出或 ngrok http ... 启动时的日志中找到 tunnel_id

  • 停止所有正在运行的隧道:

    ngrok stop --all

常见问题

  • 端口被占用:确保你的本地应用正在该端口上运行,并且没有其他程序占用它。
  • 命令未找到:确保 ngrok 已正确安装并添加到了系统的 PATH 环境变量中。
  • Authtoken 无效:检查你的 Token 是否正确复制,或者尝试重新获取一个。
  • 如何获取请求日志? 打开 http://127.0.0.1:4040 这个 Web 界面,它会实时显示所有通过 ngrok 转发的请求详情,包括请求头、响应头、请求体和响应体。
命令 描述
ngrok http <port> 最基本的用法,启动一个 HTTP 隧道。
ngrok http <port> --subdomain=<name> 使用自定义子域名。
ngrok http <port> --auth="user:pass" 添加基本认证。
ngrok start <tunnel_name> ngrok.yml 配置文件启动指定的隧道。
ngrok list 列出所有正在运行的隧道。
ngrok stop <id> 停止指定 ID 的隧道。

希望这份详细的指南能帮助你熟练使用 ngrok

分享:
扫描分享到社交APP
上一篇
下一篇