在上一章节,我们完成了Open WebUI的部署流程。通过IP地址访问的方式不专业且难以记忆,本文为您介绍如何为Open WebUI配置域名并为域名配置HTTPS证书。
1. 创建域名信息模板并实名认证
根据工信部要求,在注册域名时需要填写用户信息并通过实名认证。您可以在阿里云域名控制台通过创建信息模板完成实名认证。
- 登录阿里云域名控制台,在左侧导航栏单击信息模板,在信息模板页面单击创建新信息模板。
- 根据界面提示,完成域名持有者信息填写,单击提交。
说明:域名实名认证资料的审核通常在1个工作日内可以完成,部分可能需要3~5个工作日,请您耐心等待审核结果。
2. 购买域名
注册域名前您需要根据实际需求,提前规划好域名持有者、域名名称等信息。
- 登录阿里云万网,在阿里云域名注册页面的搜索框中,搜索您想要注册的域名以及域名后缀,单击查询域名。
- 若域名查询结果为未注册,单击立即注册。
- 在订单信息页面,选择域名的购买年限和域名所有者类型,单击立即购买。
3. 域名备案
域名注册成功后,您需要将域名解析至您的服务器后才可提供对外服务。当您的网站托管在中国内地服务器上时,必须按照备案主体所在省市的管局规则先进行ICP备案,才能对外提供服务。
- 备案前准备。了解ICP备案所在地域的管局规则,根据管局要求准备ICP备案的材料。详细信息请在各地区管局备案规则中单击对应省份查看。
- 提交ICP备案。在阿里云ICP代备案管理系统,根据界面提示,按要求填写主办单位信息和网站/App信息等,系统将根据您所填信息,自动校验是否可以进行ICP备案。
- 备案审核,审核分为阿里云初审和管局审核。在阿里云初审过程中阿里云审核专员会致电核实备案的真实性,若初审通过会收到工信部短信核验,根据短信内容完成短信核验,ICP备案信息将提交至管局审核。若备案成功,您会收到短信和邮件通知。
4. 获取SSL证书
为了确保网站安全,您可以申请SSL证书,以实现通过HTTPS加密协议安全访问网站。本文以个人测试证书(免费版)为例。
4.1 创建SSL证书
- 领取个人测试证书(免费版)。
登录阿里云数字证书管理服务(原SSL证书),在左侧导航栏选择证书管理 > SSL证书管理。在个人测试证书(原免费证书)页签,单击立即购买。 - 创建证书。购买完成后,单击创建证书,证书类型选择上一步购买的个人测试证书(免费版),域名名称输入注册的域名。
- 提交证书申请。向CA提交必要的信息(如域名、企业信息等),并通过验证流程来证明您对域名或组织的所有权。只有通过验证后,CA才会签发证书。
当证书显示“已签发”时,即可以正常使用。请注意,免费证书的有效期一般为三个月。
4.2 下载SSL证书
在证书操作列单击更多,在下载列页签,选择服务器类型为Nginx的证书,单击下载。
4.3 设置域名解析
- 登录域名解析dns控制台,选中需要使用的域名,单击解析设置。
- 添加记录。
按照如下方式填写记录内容,然后单击确定,约1分钟后生效。即可以通过域名访问您部署的网站。
主机记录:@
记录值:ECS公网IP - 验证域名解析生效。
访问http://your-domain:8080
,如果能够正常访问到Open WebUI的网站,则证明解析成功。
5. 给域名配置证书
服务目前监听8080端口,且Open WebUI并不支持直接设置证书文件以支持HTTPS。为了确保能够通过HTTPS请求访问服务,可以在用户与Open WebUI之间增加反向代理服务Nginx,用户与Nginx之间建立HTTPS链接,再由Nginx将用户的请求从默认的443端口转发至服务实际监听的端口8080。
5.1 登录实例
连接至ECS实例,以便后续在实例上执行相关命令。
- 前往ECS控制台实例列表,选择目标实例所在的资源组和地域后,在列表中找到待连接的实例,单击操作列下的远程连接。
- 单击通过Workbench远程连接下的立即登录。
- 选择认证方式,填写相应登录凭证后,单击登录。
注意:如果您是通过计算巢创建的实例,请点击计算巢资源页签的资源ID列进入ECS实例详情页,或者直接根据资源ID在ECS列表中找到ECS实例,再使用Workbench方式远程连接实例。
5.2 安装Nginx
执行以下命令安装Nginx。
# 添加Nginx官方源到系统中 sudo tee /etc/yum.repos.d/nginx.repo <<-'EOF' [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/8/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true EOF # 安装Nginx sudo dnf -y install nginx # 启动Nginx服务 sudo systemctl start nginx # 设置Nginx服务开机自启 sudo systemctl enable nginx # 确认nginx是否安装成功,如果有绿色文字显示active (running),则代表安装成功 sudo systemctl status nginx
5.3 上传SSL证书到ECS
- 执行以下命令,在Nginx的配置目录中创建一个用于存放证书的目录。
sudo mkdir -p /etc/nginx/ssl
- 将之前下载的SSL证书中的证书文件(.pem文件)和私钥文件(.key文件)上传到Nginx服务器的证书目录(/etc/nginx/ssl)。使用Workbench远程连接实例。具体操作如下:
- 使用Workbench远程连接实例。
- 在顶部菜单栏左上角处,选择文件 > 打开新文件树。
c. 在文件树中,右键单击需要上传文件的位置(例如/etc/nginx/ssl),然后在菜单中单击上传文件。
d. 选择待上传的目标文件。
弹出如下上传成功提示框时,表示上传完成。
您也可在本地使用SSH客户端,使用SCP命令上传文件到服务器。命令格式如下:
scp <本地文件路径> <云服务器登录名>@<云服务器公网IP地址>:<实例目录>
5.4 配置Nginx
- 执行以下命令,在Nginx配置文件中添加SSL证书和端口。
注意:将下列内容中,所有的example.com
替换成您自己的域名。
注意:这里假设部署的网站服务监听端口为8080;如果监听的是其他端口,则根据实际情况修改。
sudo tee /etc/nginx/conf.d/default.conf <<-'EOF' # HTTP Server Block (Redirect to HTTPS) server { listen 80; server_name example.com; # Redirect all HTTP requests to HTTPS return 301 https://$host$request_uri; } # HTTPS Server Block server { #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。 listen 443 ssl; #填写证书绑定的域名 server_name example.com; #填写证书文件绝对路径 ssl_certificate /etc/nginx/ssl/example.com.pem; #填写证书私钥文件绝对路径 ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置) #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示优先使用服务端加密套件。默认开启 ssl_prefer_server_ciphers on; # Proxy Settings (If you are using a backend service) location / { proxy_pass http://127.0.0.1:8080; # 此处端口需替换 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; # WebSocket Support (Optional) proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } EOF
- 重启Nginx。
sudo systemctl restart nginx
- 验证HTTPS生效。通过域名访问
https://your-domain
确认是否能够访问Open WebUI服务。