HTTPS 与反向代理
使用 TLS 加密、反向代理或托管隧道来保障您的 Open WebUI 部署安全。
HTTPS 加密了用户与 Open WebUI 之间的所有流量,保护了聊天历史记录、凭据和上传的文件。同时,对于像语音通话(Voice Calls)这样的浏览器功能也是必需的,因为这些功能需要一个安全上下文才能访问麦克风。
语音通话需要 HTTPS
现代浏览器 在非 HTTPS 源上会阻止麦克风访问。除非您使用的是 localhost,否则语音通话将无法在普通的 http:// 下工作。
选择您的方法
| 方法 | 最适合 | TLS 管理 |
|---|---|---|
| Cloudflare Tunnel | 无需开放端口的生产环境 | 自动(Cloudflare 边缘) |
| ngrok | 开发与测试环境 | 自动(ngrok 边缘) |
| Tailscale | 跨设备的私有访问 | 自动(Tailscale serve) |
| Nginx | 拥有完全控制权的自托管生产环境 | 手动或 Let's Encrypt |
| Caddy | 极简配置的自托管生产环境 | 自动(Let's Encrypt) |
| HAProxy | 高可用性 / 负载均 衡 | 手动或 Let's Encrypt |
| 云负载均衡器 | AWS ALB, GCP LB, Azure App Gateway | 由云服务商托管 |
快速推荐
- 只想快速搞定 HTTPS? 使用 Cloudflare Tunnel(生产环境)或 ngrok(开发环境)。无需管理证书,无需开放端口。
- 已经在运行反向代理? 添加 Caddy 以获取自动证书,或添加 Nginx 以获得最大控制权。
- 需要负载均衡? 使用 HAProxy 或您的云服务商提供的负载均衡器。
核心配置注意事项
无论您选择哪种方法,请务必记住以下几点:
| 设置 | 为什么这很重要 |
|---|---|
WEBUI_URL | 将此项设置为您的公共 HTTPS URL,以便 OAuth 回调和内部链接可以正确解析 |
CORS_ALLOW_ORIGIN | 必须与您的公共 URL 匹配,否则 WebSocket 连接会静默失败 |
| 禁用代理缓冲 (Proxy buffering off) | SSE 流式传输所需。如果启用缓冲,聊天回复中的 Markdown 渲染将会发生中断 |
| WebSocket 支持 | 确保您的代理透传 Upgrade 和 Connection 标头,以保证实时功能的正常使用 |
| 延长超时时间 | LLM 的回复可能需要数分钟。请将代理的读取超时时间至少设置为 300s |