Open WebUI 部署在 VPS 上之后,默认走 HTTP 加端口号访问,既不安全也不方便记忆。绑域名、上 HTTPS 是生产环境的基本要求,Nginx 反向代理是最稳的方案。本文直接给完整配置步骤,从域名解析到证书续签,适合在 Ubuntu/Debian VPS 上操作,也兼容 CentOS(命令微调)。

Open WebUI 绑定域名和 HTTPS 的前置条件
动手之前确认三件事:
• 一台能跑 Open WebUI 的 VPS,内存不低于 2GB(推荐 4GB 以上,尤其要接本地模型)。
• 一个已解析到 VPS 公网 IP 的域名,比如 `chat.yourdomain.com`。
• 服务器上已经用 Docker 或 pip 部署好 Open WebUI,并能通过 `http://localhost:3000` 访问(默认端口 3000,可自定义)。
如果还没装 Open WebUI,官方 Docker 命令最省事:
docker run -d –name open-webui -p 3000:8080 \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
装完后先测试本地访问是否正常,再继续。
Nginx 反向代理配置方法
1. 安装 Nginx 并放行端口
sudo apt update && sudo apt install nginx -y
sudo yum install epel-release -y && sudo yum install nginx -y
确保防火墙放过 80 和 443 端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
2. 申请 SSL 证书(Let's Encrypt)
用 Certbot 自动申请,省去手动续签的麻烦。
sudo apt install certbot python3-certbot-nginx -y
sudo certbot –nginx -d chat.yourdomain.com
按提示输入邮箱,同意条款,Certbot 会自动修改 Nginx 配置并启用 HTTPS。
如果不想用 Certbot 自动改配置,也可以只获取证书文件:
sudo certbot certonly –nginx -d chat.yourdomain.com
证书会放在 `/etc/letsencrypt/live/chat.yourdomain.com/` 目录下。
3. 编写 Nginx 反向代理配置
创建配置文件:
sudo vim /etc/nginx/sites-available/open-webui
写入以下内容(以 Certbot 自动配置为蓝本,手动调整):
nginx
server {
listen 80;
server_name chat.yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name chat.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/chat.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/chat.yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://127.0.0.1:3000; # 你的 Open WebUI 本地端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; # 流式响应必须关掉缓冲
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade"; # WebSocket 支持
}
}
关键点说明:
• `proxy_buffering off` 保证流式输出(AI 对话逐字返回)不被缓存打断。
• `proxy_set_header Upgrade` 和 `Connection "upgrade"` 是为了 WebSocket 长连接,Open WebUI 的实时功能依赖它。
• 如果 Open WebUI 跑在 Docker 里且端口映射不同,把 `proxy_pass` 的端口改成 Docker 映射的宿主机端口。
启用站点并测试:
sudo ln -s /etc/nginx/sites-available/open-webui /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
4. 验证 HTTPS 和重定向
浏览器访问 `https://chat.yourdomain.com`,看到 Open WebUI 登录页且地址栏带锁,说明配置成功。
再试 `http://chat.yourdomain.com`,应该自动跳转到 HTTPS。
老鸟叮嘱:避坑模块
1.不要用 root 跑 Open WebUI 或 Nginx
Docker 部署时建议用非 root 用户运行容器,Nginx worker 进程默认以 `www-data` 运行,不要改。
2.SSL 证书自动续签
Certbot 默认添加了 systemd timer,但建议手动检查:`sudo certbot renew –dry-run`。如果失败,可能是 80 端口被占用,或者域名解析异常。
3.端口冲突
如果 VPS 上还跑了其他 Web 服务(比如 n8n、OpenAI API 代理),记得调整监听端口或域名,避免冲突。
4.WebSocket 断开
如果对话中途经常断连,检查 Nginx 的 `proxy_read_timeout`,默认 60 秒可能不够。建议加一行:`proxy_read_timeout 86400s;`(24 小时)。
5.安全加固
– 禁止直接通过 IP 访问:在 `server` 块外添加默认拒绝。
– 限制访问来源:如果只有你自己用,可以加上 IP 白名单(`allow x.x.x.x; deny all;`)。
– 使用强密码或 OAuth 登录,Open WebUI 支持多种认证方式。
常见问题 FAQ
Q1:Open WebUI 绑定域名后,原来的 IP:端口还能访问吗?
A:如果 Nginx 只代理了域名,IP:3000 仍然可以访问。建议用防火墙或 iptables 限制 3000 端口只允许本地访问:`sudo ufw deny 3000`(前提是 Open WebUI 监听 127.0.0.1,而不是 0.0.0.0)。Docker 启动时加 `-p 127.0.0.1:3000:8080` 即可。
Q2:必须用 Let's Encrypt 吗?可以换其他 CA 吗?
A:完全可以。只要把 `ssl_certificate` 和 `ssl_certificate_key` 路径改成你证书的位置就行,Nginx 配置逻辑不变。
Q3:反向代理后,Open WebUI 的 WebSocket 功能(如实时日志)失效怎么办?
A:检查 Nginx 配置里是否包含 `proxy_set_header Upgrade $http_upgrade;` 和 `proxy_set_header Connection "upgrade";`。另外确认 Open WebUI 后端是否启用了 WebSocket,默认是开启的。
Q4:VPS 内存只有 1GB,能跑 Open WebUI 加 Nginx 吗?
A:如果 Open WebUI 只作为前端,后端调用外部 API(如 OpenAI、Claude),1GB 勉强够用。如果还要跑本地模型(Ollama),至少需要 4GB 以上,否则频繁 OOM 导致 Nginx 504 超时。
Q5:配置完 HTTPS 后,Open WebUI 里配置的 API Key 安全吗?
A:HTTPS 加密了传输过程,但 API Key 仍然以明文存储在 Open WebUI 的数据库里。建议设置严格的数据库访问权限,并定期轮换 Key。不要将数据库暴露在公网。
Q6:如何让 Open WebUI 支持多个域名?
A:在 Nginx 配置里添加多个 `server_name`,或者复制 server 块并修改域名和证书路径。注意每个域名都需要单独的 SSL 证书(通配符证书可覆盖子域名)。
结尾
把 Open WebUI 绑上域名和 HTTPS 是走向生产环境的第一步。Nginx 反向代理配置并不复杂,但 WebSocket、证书续签、端口隔离这些细节容易踩坑。按本文步骤走一遍,再根据实际环境微调,基本能一次跑通。如果你用的是 Cloudflare Tunnel 或其他反向代理工具,原理相通,只是证书管理方式不同。保持 Nginx 日志开启(`access_log` 和 `error_log`),遇到问题先看日志,别急着重装系统。
—
**相关阅读:**
– [Open WebUI VPS 部署教程:给 Ollama 配一个网页聊天界面](https://www.zhujixuan.com/jishujiaocheng/9855.html)
– [VPS 部署 AI 工具需要哪些基础?Linux、Docker、Nginx 和域名配置入门](https://www.zhujixuan.com/jishujiaocheng/9747.html)
– [n8n 接入 OpenAI 教程:自动生成摘要、标题和邮件回复](https://www.zhujixuan.com/jishujiaocheng/9894.html)
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9857.html 商家投稿邮箱:zhujixuanblog@qq.com
