1. 首页 > 技术教程 > 正文

Open WebUI 绑定域名和 HTTPS:Nginx 反向代理配置方法

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

zhujixuan TASK 123

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