ngrok 的使用详解

8 min read

ngrok 是一款用于本地端口映射到公网的工具,可以让外网访问本地服务,通常用于本地开发、调试、测试、演示等场景。下面就来详细介绍一下 ngrok 的使用方法和注意事项。

  1. 安装和配置

下载 ngrok 的安装包,并解压到一个合适的目录中,配置环境变量。

  1. 注册 ngrok 账号

进入 ngrok 的官网注册一个账号,完成注册后会分配一个 Authtoken。

  1. 启动 ngrok

在命令行中输入启动命令:

ngrok authtoken <Your_Authtoken>

ngrok http <port>

其中,port 是要映射到公网的本地端口号。例如,要映射本地的 8080 端口,可输入如下命令:

ngrok http 8080

启动 ngrok 后会生成一个公网 URL,在浏览器中输入此 URL 即可访问本地服务。除了 http 协议外,ngrok 还支持 https、tcp 和 tls 等协议,可根据实际情况进行配置。

  1. 自定义 ngrok 域名

默认情况下,ngrok 生成的公网域名是随机的,如果需要自定义域名,可以在 ngrok 的命令行参数中指定。例如,使用自定义域名 example.com:

ngrok http -subdomain example 8080

需要注意的是,自定义域名需要在 DNS 中正确配置解析,否则可能会出现域名无法访问的情况。

  1. 配置 ngrok 防火墙

在默认情况下,ngrok 会对外开放指定的端口,并允许所有人访问。为了保障安全性,可以在 ngrok 的配置文件中增加防火墙规则,限制访问权限,例如只允许指定 IP 访问:

web_addr: 0.0.0.0:4040
tunnels:
  ssh:
    addr: 22
    proto: tcp
    auth: user:password
    remote_addr: xxx.ngrok.io:10000
    inspect: true
    proto:
      tcp:
        ip_whitelist:
          - 10.0.0.1

具体配置方法可参考 ngrok 的官方文档。

  1. 遇到的常见问题

6.1 ngrok 连接失败

可能是网络环境问题,可以尝试使用 VPN 或修改网络设置。如果是防火墙阻止了 ngrok 的连接,则需要添加防火墙规则。

6.2 ngrok 连接超时

ngrok 连接时间默认为 8 小时,如果需要更长时间的连接,可以使用 ngrok 的专业版。此外,也可以使用 ngrok 的 API 编写脚本,自动更新连接。

6.3 ngrok 域名无法访问

可能是 DNS 配置问题,需要检查是否设置了正确的页面规则。另外,如果使用的是自定义域名,也需要在 ngrok 的后台配置域名解析记录。