跳到主要内容
警告

本教程由社区贡献,不获得 Open WebUI 团队的支持。它仅作为演示,说明如何根据您的特定用例定制 Open WebUI。想要贡献?请查看贡献教程。

使用 Nginx 的 HTTPS

确保您的用户与 Open WebUI 之间的安全通信至关重要。HTTPS(超文本传输协议安全)对传输的数据进行加密,保护其免受窃听和篡改。通过将 Nginx 配置为反向代理,您可以无缝地为 Open WebUI 部署添加 HTTPS,从而增强安全性和可信度。

本指南提供了三种设置 HTTPS 的方法

  • 自签名证书:适用于开发和内部使用,使用 Docker。
  • Let's Encrypt:非常适合需要受信任 SSL 证书的生产环境,使用 Docker。
  • Windows + 自签名:在 Windows 上进行开发和内部使用的简化说明,无需 Docker。

选择最适合您部署需求的方法。

Nginx Proxy Manager

Nginx Proxy Manager (NPM) 允许您轻松管理反向代理,并使用来自 Let's Encrypt 的有效 SSL 证书来保护您的本地应用程序(如 Open WebUI)。此设置启用了 HTTPS 访问,由于许多移动浏览器的安全要求,这对于使用语音输入功能是必需的,同时避免将应用程序的特定端口直接暴露给互联网。

先决条件

  • 一台运行 Docker 和 Open WebUI 容器的家庭服务器。
  • 一个域名(免费选项如 DuckDNS,或付费选项如 Namecheap/GoDaddy)。
  • Docker 和 DNS 配置的基础知识。

步骤

  1. 为 Nginx 文件创建目录

    mkdir ~/nginx_config
    cd ~/nginx_config
  2. 使用 Docker 设置 Nginx Proxy Manager

    nano docker-compose.yml
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt

运行容器

docker-compose up -d
  1. 配置 DNS 和域名

    • 登录您的域名提供商(例如 DuckDNS)并创建一个域名。
    • 将域名指向您的代理的本地 IP(例如 192.168.0.6)。
    • 如果使用 DuckDNS,请从其仪表板获取 API 令牌。
以下是 https://www.duckdns.org/domains 中的一个简单示例:
  1. 设置 SSL 证书
  • 通过 http://server_ip:81 访问 Nginx Proxy Manager。例如:192.168.0.6:81
  • 使用默认凭据(admin@example.com / changeme)登录。根据提示更改它们。
  • 前往 SSL 证书 → 添加 SSL 证书 → Let's Encrypt。
  • 填写您的电子邮件地址和从 DuckDNS 获取的域名。一个域名包含星号,另一个不包含。例如:*.hello.duckdns.orghello.duckdns.org
  • 选择“使用 DNS 质询”,选择 DuckDNS,然后粘贴您的 API 令牌。例如:dns_duckdns_token=f4e2a1b9-c78d-e593-b0d7-67f2e1c9a5b8
  • 同意 Let’s Encrypt 条款并保存。如果需要更改传播时间(120 秒)。
  1. 创建代理主机
  • 对于每个服务(例如 Open WebUI、Nextcloud),前往主机 → 代理主机 → 添加代理主机。
  • 填写域名(例如 openwebui.hello.duckdns.org)。
  • 将方案设置为 HTTP(默认),启用 Websockets support 并指向您的 Docker IP(如果运行 Open WebUI 的 Docker 与 NGINX 管理器在同一台计算机上,则这将与之前的 IP 相同(例如:192.168.0.6)。
  • 选择之前生成的 SSL 证书,强制使用 SSL,并启用 HTTP/2。
  1. 将您的 URL 添加到 Open WebUI(否则会遇到 HTTPS 错误)
  • 前往您的 Open WebUI → 管理面板 → 设置 → 常规
  • Webhook URL 文本字段中,输入您将通过 Nginx 反向代理连接到 Open WebUI 的 URL。例如:hello.duckdns.org(此项非必需)或 openwebui.hello.duckdns.org(此项必需)。

访问 WebUI:

通过 HTTPS 访问 Open WebUI,地址可以是 hello.duckdns.orgopenwebui.hello.duckdns.org(根据您的设置方式)。

防火墙注意事项:请注意,本地防火墙软件(如 Portmaster)可能会阻止内部 Docker 网络流量或所需的端口。如果您遇到问题,请检查您的防火墙规则,以确保此设置所需的通信被允许。

下一步

设置 HTTPS 后,安全地访问 Open WebUI,地址为

如果您使用域名,请确保您的 DNS 记录已正确配置。对于生产环境,建议使用 Let's Encrypt 获取受信任的 SSL 证书。