整理项目中 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
- 访问 https://ngrok.com/ 注册账号
- 登录后进入 Dashboard
- 复制你的 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
- 启动 ngrok 代理:
bash
ngrok http 8000
-
获取公网地址:
Forwarding https://podgily-leeriest-tien.ngrok-free.dev -> http://localhost:8000
-
访问服务:
- 浏览器:
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
🔗 相关资源
- 官网:https://ngrok.com/
- 文档:https://ngrok.com/docs
- Dashboard:https://dashboard.ngrok.com/
- GitHub:https://github.com/inconshreveable/ngrok
📝 总结
ngrok 适合:
- ✅ 开发测试环境
- ✅ 快速公网访问
- ✅ HTTPS/WebSocket 支持
- ✅ 临时演示展示
不适合:
- ❌ 生产环境
- ❌ 高并发场景
- ❌ 需要固定域名(免费版)
- ❌ 长期稳定服务
在你的项目中,ngrok 主要用于开发测试阶段,让语音转文字服务可以通过 HTTPS 访问,从而支持浏览器的麦克风权限。