凌峰创科服务平台

Windows如何搭建ngrok内网穿透服务器?

什么是 ngrok?

ngrok 是一个反向代理工具,它可以将你本地电脑上运行的服务(比如一个网站、一个 API、一个游戏服务器)暴露到公网上,让你或任何人都能通过一个公共的 URL 访问它。

Windows如何搭建ngrok内网穿透服务器?-图1
(图片来源网络,侵删)

核心工作原理:

  1. 你在本地电脑上运行一个服务(一个网站在 http://localhost:8080)。
  2. 你启动 ngrok 客户端,告诉它要映射哪个本地端口(8080)。
  3. ngrok 客户端会连接到 ngrok 的云端服务器。
  4. ngrok 云端服务器会给你分配一个公共的 URL(https://random-string.ngrok.io)。
  5. 当有人访问 https://random-string.ngrok.io 时,请求会通过 ngrok 云端服务器安全地转发到你本地的 http://localhost:8080

为什么需要 ngrok?

  • 开发调试:无需将代码部署到正式服务器,就能让同事或客户测试你的本地网站/API。
  • 临时分享:快速分享你本地运行的一个工具、文件或演示。
  • 接收 Webhook:当第三方服务(如 GitHub、支付宝、微信支付)需要回调你的服务器时,ngrok 可以提供一个临时的公网地址。
  • 物联网:测试本地运行的物联网设备服务器。

在 Windows 上使用 ngrok 的完整步骤

第 1 步:下载 ngrok

  1. 访问 ngrok 官方网站:https://ngrok.com/download
  2. 网站会自动检测你的操作系统,并为你提供 Windows 的 64 位版本下载链接,点击下载 ngrok-stable-windows-amd64.zip 文件。
  3. 下载完成后,你会得到一个 .zip 压缩包。

第 2 步:解压并配置环境变量(推荐)

为了方便在任何目录下使用 ngrok,最好将其路径添加到系统的环境变量中。

  1. 解压文件

    • 在你的电脑上创建一个固定的文件夹,C:\dev\tools\ngrok
    • 将下载的 ngrok-stable-windows-amd64.zip 解压到这个文件夹中,解压后,你会看到一个 ngrok.exe 文件。
  2. 添加到环境变量 Path

    Windows如何搭建ngrok内网穿透服务器?-图2
    (图片来源网络,侵删)
    • 在 Windows 搜索栏中输入 “编辑系统环境变量”,然后打开它。
    • 在弹出的“系统属性”窗口中,点击右下角的 “环境变量...” 按钮。
    • 在下方的 “系统变量” 部分,找到名为 Path 的变量,选中它,然后点击 “编辑...”。
    • 在 “编辑环境变量” 窗口中,点击 “新建”,然后输入你刚刚创建的 ngrok 文件夹路径,C:\dev\tools\ngrok
    • 一路点击 “确定” 保存所有设置。
  3. 验证安装

    • 重新打开一个新的命令提示符 或 PowerShell 窗口(重要:必须重新打开,否则环境变量不会生效)。
    • 输入以下命令并回车:
      ngrok --version
    • 如果看到版本号(ngrok version 3.x.x),说明安装和配置成功!

第 3 步:获取 Authtoken(身份验证)

免费版本的 ngrok 每次启动都会分配一个随机的公共 URL,这很不方便,注册一个免费账户并获取 Authtoken 可以让你使用固定的子域名,并且能查看连接历史记录。

  1. 访问 ngrok 官网,注册一个免费账户并登录。
  2. 登录后,进入你的 Dashboard
  3. 在页面中找到你的 Authtoken,它是一串很长的字符。
  4. 将 Authtoken 绑定到你的 ngrok 客户端
    • 在新的命令提示符窗口中,运行以下命令(将 YOUR_AUTHTOKEN 替换成你自己的 Token):
      ngrok config add-authtoken YOUR_AUTHTOKEN
    • 看到 Config saved to configuration file: C:\Users\你的用户名\.ngrok2\ngrok.yml 即表示成功。

第 4 步:启动本地服务器

在暴露你的服务之前,必须先在本地启动它,这里以最简单的 Python HTTP 服务器为例。

  1. 打开一个新的文件夹,D:\my_project,在里面创建一个 index.html 文件,内容如下:

    Windows如何搭建ngrok内网穿透服务器?-图3
    (图片来源网络,侵删)
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title>我的本地服务器</title>
    </head>
    <body>
        <h1>你好,世界!</h1>
        <p>这是一个通过 ngrok 暴露的本地服务器。</p>
    </body>
    </html>
  2. 打开命令提示符,切换到这个目录:

    cd D:\my_project
  3. 启动一个简单的 HTTP 服务器(Python 内置):

    • 如果你安装了 Python 3:
      python -m http.server 8080
    • 如果你安装的是 Python 2:
      python -m SimpleHTTPServer 8080
    • 你会看到类似 Serving HTTP on 0.0.0.0 port 8080 ... 的提示,这说明你的本地服务器已经在 http://localhost:8080 上运行了。保持这个命令窗口开启

第 5 步:通过 ngrok 暴露本地服务

打开另一个新的命令提示符窗口(不要关闭运行本地服务器的那个)。

  1. 暴露 HTTP 服务(端口 8080): 运行以下命令:

    ngrok http 8080
    • http 表示你要暴露的是一个 HTTP 服务。
    • 8080 是你本地服务器运行的端口号。
  2. 查看 ngrok 仪表盘: 命令执行后,你会看到一个控制台界面,显示类似下面的信息:

    ngrok by @inconshreveable
    Session Status                online
    Account                       Your Name (Plan: Free)
    Version                       3.x.x
    Region                        United States (us-cal-1)
    Web Interface                 http://127.0.0.1:4040
    Forwarding                    https://abcdefg12345.ngrok.io -> http://localhost:8080
    Connections                   ttl     opn     rt1     rt5     p50     p90
                                  0       0       0.00    0.00    0.00    0.00
    • Forwarding 这一行是关键,它告诉你,任何访问 https://abcdefg12345.ngrok.io 的请求都会被转发到你本地的 http://localhost:8080
    • Web Interface 提供了一个本地的监控页面(http://127.0.0.1:4040),你可以在这里查看详细的请求日志、统计数据和在线状态。

你可以在任何设备的浏览器上访问 https://abcdefg12345.ngrok.io,就能看到你本地 D:\my_project 文件夹里的 index.html 内容了!


进阶用法

使用自定义子域名

在免费账户下,你可以在 Dashboard 中设置一个固定的子域名(mycoolapp.ngrok.io),然后使用以下命令来启用它:

# 假设你在 Dashboard 设置了子域名 mycoolapp
ngrok http --subdomain=mycoolapp 8080

暴露 TCP 端口

ngrok 不仅可以暴露 HTTP,还可以暴露任何 TCP 端口,比如数据库、SSH、游戏服务器等。

假设你的本地有一个 Minecraft 服务器运行在 25565 端口:

ngrok tcp 25565

你会得到一个类似 tcp://0.tcp.ngrok.io:12345 的地址,别人就可以通过 tcp.ngrok.io:12345 来连接你的 Minecraft 服务器了。

使用配置文件

对于复杂的配置,你可以创建一个 ngrok.yml 文件来管理,这个文件通常位于 C:\Users\你的用户名\.ngrok2\ 目录下。

示例 ngrok.yml:

authtoken: YOUR_AUTHTOKEN
tunnels:
  my-web-app:
    addr: 8080
    proto: http
    host_header: localhost:8080
  my-api:
    addr: 3000
    proto: http

然后你可以这样启动:

# 启动配置文件中名为 "my-web-app" 的隧道
ngrok start my-web-app
# 启动配置文件中所有隧道
ngrok start --all

注意事项

  • 免费版本限制
    • �次启动 URL 会随机变化(除非设置了子域名)。
    • 有带宽和连接数限制。
    • 连接可能会在一段时间后超时(约 2 小时),需要重新启动 ngrok。
    • 无法使用自定义域名或 HTTPS 证书。
  • 安全性:ngrok 的 URL 是公开的,任何人都可以访问。不要用它来暴露包含敏感数据或生产环境的服务,它仅适用于开发和测试。
  • 防火墙:确保 Windows 防火墙允许 ngrok.exe 和你的本地服务(如 Python)的网络访问。
  • 端口占用:确保你要暴露的端口(如 8080)没有被其他程序占用。

通过以上步骤,你就可以在 Windows 上轻松地使用 ngrok 将任何本地服务分享给世界了!

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