ngrok

整理项目中 ngrok 的使用情况,并汇总介绍和常用内容。

3 tools called

查看是否有 ngrok 相关的启动脚本:

2 tools called

ngrok 介绍与常用内容:

ngrok 完整介绍与使用指南

📖 什么是 ngrok?

ngrok 是一个内网穿透工具,将本地服务暴露到公网,提供 HTTPS 访问。

核心功能

  • 内网穿透:将本地服务映射到公网
  • HTTPS 支持:自动提供 SSL 证书
  • WebSocket 支持:支持 WebSocket 连接
  • 请求监控:提供请求查看界面
  • 域名固定:付费版支持固定域名

🎯 为什么需要 ngrok?

1. 开发测试场景

  • 本地服务需要外部访问(如移动端测试、第三方回调)
  • 需要 HTTPS(如浏览器访问麦克风、摄像头)
  • 快速分享给他人测试

2. 项目中的实际应用

在你的语音转文字项目中,ngrok 用于:

10:10:fastAPI/语音转文字需求/语音转文字/README.md 复制代码
- 🔒 **HTTPS支持**:通过ngrok提供安全的麦克风访问

原因:

  • 浏览器要求 HTTPS 才能访问麦克风
  • 需要从其他设备(手机、平板)访问本地服务
  • WebSocket 需要 HTTPS 才能正常工作

🚀 安装与配置

1. 下载安装

Windows:

bash 复制代码
# 下载 ngrok.exe
# 从官网下载: https://ngrok.com/download
# 解压到任意目录,添加到系统PATH

macOS:

bash 复制代码
brew install ngrok/ngrok/ngrok

Linux:

bash 复制代码
# 下载并解压
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz
tar -xzf ngrok-v3-stable-linux-amd64.tgz
sudo mv ngrok /usr/local/bin/

2. 注册账号并获取 Authtoken

  1. 访问 https://ngrok.com/ 注册账号
  2. 登录后进入 Dashboard
  3. 复制你的 Authtoken

3. 配置 Authtoken

bash 复制代码
ngrok config add-authtoken YOUR_AUTHTOKEN

配置后,token 会保存在:

  • Windows: %USERPROFILE%\.ngrok2\ngrok.yml
  • macOS/Linux: ~/.ngrok2/ngrok.yml

📝 常用命令

1. 基本使用

HTTP 代理(最常用):

bash 复制代码
# 代理本地8000端口
ngrok http 8000

# 代理其他端口
ngrok http 3000
ngrok http 8080

HTTPS 代理:

bash 复制代码
# 只允许HTTPS访问
ngrok http 8000 --scheme=https

指定域名(付费功能):

bash 复制代码
ngrok http 8000 --domain=your-domain.ngrok.io

2. 高级配置

自定义配置文件:

bash 复制代码
# 创建配置文件
ngrok config edit

# 查看配置
ngrok config check

配置文件示例 (~/.ngrok2/ngrok.yml):

yaml 复制代码
version: "2"
authtoken: YOUR_AUTHTOKEN
tunnels:
  web:
    addr: 8000
    proto: http
    bind_tls: true  # 强制HTTPS
  api:
    addr: 8001
    proto: http
    subdomain: myapi  # 自定义子域名(付费功能)

使用配置文件启动:

bash 复制代码
ngrok start web
ngrok start api
ngrok start web api  # 同时启动多个

3. 查看请求监控

启动 ngrok 后,会显示:

复制代码
Forwarding  https://xxxx-xx-xx-xx-xx.ngrok-free.app -> http://localhost:8000

访问监控界面:

复制代码
http://127.0.0.1:4040  # 本地监控界面

功能:

  • 查看所有请求和响应
  • 重放请求
  • 查看请求头、响应头、请求体

4. WebSocket 支持

ngrok 自动支持 WebSocket,无需额外配置:

bash 复制代码
# 启动HTTP代理,WebSocket会自动支持
ngrok http 8000

前端连接示例:

javascript 复制代码
// 自动检测协议
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
const wsUrl = `${protocol}//${window.location.host}/ws`;
const websocket = new WebSocket(wsUrl);

🔧 项目中的使用示例

语音转文字项目

36:47:fastAPI/语音转文字需求/语音转文字/README.md 复制代码
#### 方法2:使用ngrok(支持其他设备访问)
```bash
# 1. 安装ngrok
# 2. 配置authtoken
ngrok config add-authtoken YOUR_AUTHTOKEN

# 3. 启动ngrok
ngrok http 8000

# 4. 启动服务
python main.py
复制代码
**完整流程:**

1. 启动本地服务:
```bash
python start.py
# 或
python main.py
  1. 启动 ngrok 代理:
bash 复制代码
ngrok http 8000
  1. 获取公网地址:

    Forwarding https://podgily-leeriest-tien.ngrok-free.dev -> http://localhost:8000

  2. 访问服务:

  • 浏览器:https://podgily-leeriest-tien.ngrok-free.dev
  • WebSocket:wss://podgily-leeriest-tien.ngrok-free.dev/ws

💡 使用场景

1. 开发测试

  • 移动端测试本地 API
  • 第三方服务回调(支付、OAuth)
  • 分享给团队成员测试

2. 演示展示

  • 快速展示给客户
  • 远程演示本地功能
  • 临时公网访问

3. WebRTC/媒体访问

  • 需要 HTTPS 访问麦克风、摄像头
  • WebSocket 实时通信
  • 音视频流传输

4. API 测试

  • Postman 测试本地 API
  • 第三方服务集成测试
  • Webhook 接收测试

⚠️ 注意事项

1. 免费版限制

  • 每次启动域名会变化
  • 连接数有限制
  • 有流量限制
  • 有请求频率限制

2. 安全注意事项

  • 不要在生产环境使用免费版
  • 注意暴露的服务安全性
  • 及时关闭不需要的隧道
  • 不要在公网暴露敏感数据

3. 性能考虑

  • 免费版有延迟
  • 不适合高并发场景
  • 仅用于开发测试

4. 常见问题

问题1:连接超时

bash 复制代码
# 检查本地服务是否正常运行
curl http://localhost:8000

# 检查防火墙设置

问题2:HTTPS 证书警告

  • ngrok 提供的证书是有效的
  • 如果浏览器警告,检查是否访问了正确的 ngrok 域名

问题3:WebSocket 连接失败

bash 复制代码
# 确保使用 wss:// 协议
# 检查后端 WebSocket 配置

🆚 与其他方案对比

ngrok vs nginx

特性 ngrok nginx
配置难度 ⭐ 简单 ⭐⭐⭐ 复杂
HTTPS ✅ 自动 ❌ 需要证书
公网访问 ✅ 自动 ❌ 需要公网IP
适用场景 开发测试 生产环境
成本 免费版可用 需要服务器

推荐方案

96:103:fastAPI/语音转文字需求/语音转文字/README.md 复制代码
1. **ngrok**:最简单的解决方案,自动提供HTTPS
2. **nginx**:本地代理,需要SSL证书
3. **自签名证书**:开发环境使用

### 推荐方案

- **开发测试**:使用ngrok
- **生产环境**:使用nginx + 正式SSL证书

📚 常用命令速查

bash 复制代码
# 基本启动
ngrok http 8000

# HTTPS only
ngrok http 8000 --scheme=https

# 指定域名(付费)
ngrok http 8000 --domain=your-domain.ngrok.io

# 查看配置
ngrok config check

# 编辑配置
ngrok config edit

# 查看版本
ngrok version

# 查看帮助
ngrok help

🔗 相关资源


📝 总结

ngrok 适合:

  • ✅ 开发测试环境
  • ✅ 快速公网访问
  • ✅ HTTPS/WebSocket 支持
  • ✅ 临时演示展示

不适合:

  • ❌ 生产环境
  • ❌ 高并发场景
  • ❌ 需要固定域名(免费版)
  • ❌ 长期稳定服务

在你的项目中,ngrok 主要用于开发测试阶段,让语音转文字服务可以通过 HTTPS 访问,从而支持浏览器的麦克风权限。

相关推荐
zlpzlpzyd7 小时前
vue.js 3中全局组件和局部组件的区别
前端·javascript·vue.js
浩星7 小时前
css实现类似element官网的磨砂屏幕效果
前端·javascript·css
一只小风华~7 小时前
Vue.js 核心知识点全面解析
前端·javascript·vue.js
2022.11.7始学前端7 小时前
n8n第七节 只提醒重要的待办
前端·javascript·ui·n8n
SakuraOnTheWay7 小时前
React Grab实践 | 记一次与Cursor的有趣对话
前端·cursor
阿星AI工作室7 小时前
gemini3手势互动圣诞树保姆级教程来了!附提示词
前端·人工智能
徐小夕7 小时前
知识库创业复盘:从闭源到开源,这3个教训价值百万
前端·javascript·github
xhxxx7 小时前
函数执行完就销毁?那闭包里的变量凭什么活下来!—— 深入 JS 内存模型
前端·javascript·ecmascript 6
StarkCoder7 小时前
求求你试试 DiffableDataSource!别再手算 indexPath 了(否则迟早崩)
前端
fxshy7 小时前
Cursor 前端Global Cursor Rules
前端·cursor