内网穿透方式

本地开发服务器暴露到公网

Ngrok

Ngrok :最流行的工具之一,一条命令就能生成一个公网 URL,还自带 HTTPS 和流量监控界面ngrok http 8080 这样就能用。

用法 :Ngrok 的使用非常简单,可以概括为三步:下载安装 → 配置身份验证令牌 → 一条命令启动隧道

下载与安装

根据你的操作系统选择对应的方式

方式1

  • macOS (推荐使用 Homebrew) :在终端执行 brew install ngrok
  • Windows :从官网下载安装包,解压得到 ngrok.exe 文件
  • Linux :可使用 snap install ngrok 命令,或从官网下载二进制文件

方式2:跳过 Homebrew,直接安装 ngrok(最快)

如果不想折腾,直接用官方二进制文件:

js 复制代码
# 1. 下载 ngrok
curl -O https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-darwin-amd64.zip

# 2. 解压
unzip ngrok-v3-stable-darwin-amd64.zip

# 3. 移动到系统路径
sudo mv ngrok /usr/local/bin/

# 4. 验证安装
ngrok --version

建议的安装流程

js 复制代码
# 1. 先尝试更新
brew update

# 2. 如果不行,清理重试
brew cleanup --prune=all && brew update

# 3. 如果还是不行,直接用 curl 下载 ngrok(最省事)
curl -O https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-darwin-arm64.zip
unzip ngrok-v3-stable-darwin-arm64.zip
sudo mv ngrok /usr/local/bin/

注册账号并配置 (仅首次需要)

  • ngrok官网 注册一个免费账号
  • 登录后,在仪表盘找到你的 Authtoken(身份验证令牌)
  • 在终端执行以下命令,让 ngrok 记住你的令牌:
js 复制代码
ngrok config add-authtoken <你的Authtoken>

启动隧道,暴露你的本地服务

假设你的 Vite 项目跑在 5173 端口,在终端中执行

js 复制代码
ngrok http 5173

看到如下信息就说明成功了

js 复制代码
Session Status                online
Forwarding                    https://<随机子域名>.ngrok-free.app -> http://localhost:5173

现在,任何人通过 https://<随机子域名>.ngrok-free.app 这个公网地址,就能访问你本地的项目了。

如:执行ngrok http 5173

注意点

启动本地vite项目报错

报错说明

Vite 默认只允许 localhost127.0.0.1 访问开发服务器。当你通过 Ngrok 域名访问时,Vite 检测到请求的 Host 是 recharger-serve-drippy.ngrok-free.dev,不在白名单内,所以拒绝了请求。

解决方法
方法一:修改 Vite 配置(推荐)

在项目根目录的 vite.config.jsvite.config.ts 中,添加 server.allowedHosts 配置:

js 复制代码
import { defineConfig } from 'vite'

export default defineConfig({
  server: {
    allowedHosts: [
      'recharger-serve-drippy.ngrok-free.dev',
      // 或者允许所有 .ngrok-free.dev 域名(更宽松)
      '.ngrok-free.dev',
    ],
  },
})

更宽松的方式(适合频繁换 Ngrok 域名):

js 复制代码
server: {
  allowedHosts: 'all', // 允许所有 Host(开发环境可用)
}

修改后,重新启动 Vite 开发服务器Ctrl + C 停掉再 pnpm dev)即可生效。

方法二:启动 Vite 时添加参数

不修改配置文件,直接通过命令行参数允许该域名:

js 复制代码
pnpm dev -- --host --allowedHosts recharger-serve-drippy.ngrok-free.dev

或者更简单,允许所有 Host:

js 复制代码
pnpm dev -- --host --allowedHosts all
方法三:启动时指定 Host 为 0.0.0.0

让 Vite 监听所有网络接口,同时关闭 Host 检查:

js 复制代码
pnpm dev -- --host 0.0.0.0 --allowedHosts all

Serveo(最简单,无需安装)

如果你追求极致的简单,Serveo 是最快的选择。它甚至不需要你在电脑上安装任何软件,直接利用系统自带的 SSH 命令即可

1.暴露本地服务 :假设你的 Vite 项目运行在 5173 端口,执行下面的命令,就会生成一个随机域名,访问它就能看到你的本地页面了

js 复制代码
ssh -R 80:localhost:5173 serveo.net

2.自定义子域名:你可以给生成的域名起一个固定的名字,这样每次启动就不会变了

js 复制代码
ssh -R <你的自定义名字>.serveo.net:80:localhost:5173 serveo.net

比如,你就可以用 recharger.serveo.net 来访问。

host

说明

hosts 文件确实可以实现"指定域名映射到本地",但它的作用范围仅限于你自己的电脑,无法让其他人通过域名访问你本地的服务。

它的局限性非常明显:

  • 仅限本机hosts 文件只对修改了它的那台电脑生效。其他同事访问 my-project.test,看到的还是这个域名在互联网上的真实 IP 地址,而不是你的本地服务。
  • 无法穿透网络 :它只是把域名指向了你电脑的 IP,但你的电脑 IP(如 192.168.x.x)是内网地址,外网设备(比如不在同一个 Wi-Fi 下的同事)依然无法访问。

这只能解决"本地开发需要用特定域名"的模拟场景,而不是你要的"让外网朋友访问本地服务"。

使用流程

nano修改 hosts 文件的完整流程

1. 打开文件

终端中输入,打开文件

js 复制代码
sudo nano /etc/hosts
2. 用方向键移动光标,直接打字修改内容

在最后一行增加类似

js 复制代码
127.0.0.1   admin.stage.xxx.cn
3. 修改完成后,按Ctrl + O保存
  • 屏幕底部显示 "File Name to Write: /etc/hosts"
  • 直接按回车确认
4. 按 Ctrl + X 退出

微信登录开发

修改本地Hosts文件(适用于已有正式域名)

如果你已经在微信后台配置了一个正式域名(如www.yourdomain.com),可以通过修改本地Hosts文件,让这个域名指向你的本地IP。

  1. 获取正式域名:确保 www.yourdomain.com 已配置在微信后台的"授权回调域"中。
  2. 修改Hosts文件:在本地Hosts文件中添加一条映射:127.0.0.1 www.yourdomain.com
  3. 启动本地服务:确保你的本地开发服务器监听在80端口(因为微信的授权回调域默认是80端口)。如果你的服务在其他端口(如8080),则需要通过Nginx等Web服务器进行端口转发。

这样,当微信将用户重定向到 www.yourdomain.com 时,请求会被直接发送到你的本地电脑,从而完成调试。

cpolar Web UI

后续补充

相关推荐
hoLzwEge2 小时前
前端项目的基石:深入解读 package.json 的作用与核心配置
前端·前端框架
奇奇怪怪的2 小时前
Agentic RAG:Agent 驱动的自主检索
前端
陆枫Larry2 小时前
页面接口换图后不刷新,刷新页面后才看得到新图
前端
0x862 小时前
# Flutter 实时语音识别工程实践:从音频采集到流式 ASR 的完整链路
前端
Patrick_Wilson2 小时前
从一次 Safari 白屏,聊聊 CDN 外置 React 的坑与前端监控盲区
前端·react.js·cdn
lichenyang4533 小时前
从 Demo 到本地 HAR 包:把 HarmonyOS JSBridge 运行时做成可复用库
前端
不简说3 小时前
拖拽DIY表格插件来了!sv-print 七月更新:这次真的能自己拼表格了
前端·javascript·前端框架
weixin_471383033 小时前
Next.js - 04 - 深入理解next.js渲染原理
前端·javascript·next.js
ssshooter3 小时前
小程序分包页面报 "has not been registered yet" 的隐蔽根因:一个动态 import 拖垮整个分包
前端·javascript·微信小程序