Nanbeige4.1-3B部署教程:Nginx SSL加密+BasicAuth认证保护私有AI服务
想在自己的服务器上部署一个私有AI助手,又担心直接暴露在公网不安全?今天,我们就来手把手教你如何为Nanbeige4.1-3B模型搭建一个既安全又专业的Web服务。通过Nginx实现SSL加密,再加上BasicAuth基础认证,让你能安心地在任何地方访问自己的AI服务,不用担心数据泄露或被滥用。
1. 为什么需要安全部署?
你可能已经成功部署了Nanbeige4.1-3B的WebUI,通过http://你的服务器IP:7860就能访问。但这存在几个明显问题:
- 通信不安全:所有你和AI的对话内容,都是以明文形式在网络中传输,容易被截获。
- 无访问控制:任何人只要知道你的IP和端口,都能使用你的AI服务,不仅消耗你的计算资源,还可能产生不当内容。
- 不够专业:一个带锁的
https地址,比一个裸奔的http地址看起来可靠得多。
我们的目标很简单:把原本不设防的http://IP:7860,变成一个需要通过用户名密码登录、且全程加密的https://your-domain.com安全服务。
2. 部署前准备
在开始加密和加锁之前,我们需要确保基础服务已经就绪。请先完成以下两步。
2.1 基础模型与WebUI部署
首先,你需要已经在服务器上部署好Nanbeige4.1-3B模型及其Gradio WebUI。如果你还没做,可以参考项目提供的快速指南,核心步骤如下:
- 环境准备:确保你的服务器有Python环境(>=3.8)和足够的GPU显存(约6GB+)。
- 安装依赖:在项目目录(例如
/root/nanbeige-webui)下,安装必要的Python包。 - 启动服务:运行启动脚本,确保WebUI在
0.0.0.0:7860端口正常监听。
你可以通过访问http://你的服务器IP:7860来验证基础服务是否运行正常。
2.2 拥有一个域名(可选但推荐)
虽然直接使用IP地址配合SSL证书也是可行的,但拥有一个域名会带来诸多好处:
- 证书申请更简单:Let‘s Encrypt等免费证书颁发机构对域名的支持最完善。
- 访问更便捷:记住
ai.yourname.com比记住一串IP地址要容易得多。 - 更显专业:为你的私有AI服务提供一个专属域名。
如果你还没有域名,可以在各大域名注册商处购买一个。本教程后续将以ai.example.com为例,你需要将其替换为你自己的域名。
3. 配置Nginx反向代理与SSL加密
现在,我们进入核心环节,为服务套上“加密外壳”。Nginx将作为门户,接收外部的HTTPS请求,解密后转发给内部真正的WebUI服务。
3.1 安装Nginx与Certbot
在Ubuntu/Debian系统上,安装过程非常直接。
# 更新软件包列表 sudo apt update # 安装Nginx sudo apt install nginx -y # 安装Certbot(用于自动获取和管理Let's Encrypt免费SSL证书) sudo apt install certbot python3-certbot-nginx -y安装完成后,可以先启动Nginx并设置开机自启。
sudo systemctl start nginx sudo systemctl enable nginx此时,在浏览器访问你的服务器IP,应该能看到Nginx的默认欢迎页面,这说明Nginx安装成功。
3.2 获取免费的SSL证书
我们将使用Let‘s Encrypt提供的免费、自动化的SSL证书。确保你的域名(如ai.example.com)的DNS记录已经指向了你的服务器IP。
# 执行Certbot命令,为你的域名申请证书 # 将 `ai.example.com` 替换为你的实际域名 sudo certbot --nginx -d ai.example.com执行命令后,Certbot会引导你完成以下步骤:
- 输入你的邮箱(用于接收证书到期提醒)。
- 同意服务条款。
- 询问是否订阅电子前沿基金会的邮件(可选否)。
- Certbot会自动与Let‘s Encrypt通信,验证你对域名的所有权(通常通过创建特定的验证文件)。
- 验证成功后,它会自动下载并安装SSL证书。
最关键的一步来了:Certbot会询问你是否将所有的HTTP流量重定向到HTTPS。请务必选择“2: Redirect”。这样,即使用户不小心访问了http://ai.example.com,也会被强制跳转到安全的https://ai.example.com。
3.3 配置Nginx反向代理
证书安装好后,Certbot会自动修改Nginx的站点配置文件。但我们还需要手动调整,让它将请求转发给我们内部的Nanbeige WebUI服务(运行在7860端口)。
找到你的站点配置文件,通常位于/etc/nginx/sites-available/目录下,文件名就是你的域名(如ai.example.com)。用文本编辑器打开它:
sudo nano /etc/nginx/sites-available/ai.example.com你需要找到server块中location /的部分,将其修改为反向代理的配置。修改后的关键部分看起来应该是这样:
server { listen 443 ssl; # 监听443端口(HTTPS) server_name ai.example.com; # 你的域名 # SSL证书路径(Certbot自动配置的) ssl_certificate /etc/letsencrypt/live/ai.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ai.example.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; location / { # 核心配置:将请求代理到本地的Gradio WebUI服务 proxy_pass http://127.0.0.1:7860; # 以下配置用于正确传递WebSocket等连接信息,确保Gradio功能完整 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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_read_timeout 86400; # 设置较长的超时时间,适应AI生成耗时 } } # Certbot自动添加的HTTP重定向配置 server { listen 80; server_name ai.example.com; return 301 https://$server_name$request_uri; }修改完成后,保存并退出编辑器。然后测试Nginx配置是否正确,最后重新加载配置使其生效。
# 测试配置文件语法 sudo nginx -t # 如果显示 `syntax is ok` 和 `test is successful`,则继续 # 重新加载Nginx配置 sudo systemctl reload nginx至此,你的SSL加密通道已经搭建完成!现在你可以通过https://ai.example.com安全地访问你的AI服务了。浏览器地址栏应该会显示一把小锁,表示连接是加密的。
4. 添加BasicAuth基础认证
加密解决了通信安全问题,但我们还需要一把“门锁”来控制谁可以进来。BasicAuth就是一种简单的用户名密码认证机制。
4.1 创建密码文件
我们使用htpasswd工具来创建和管理密码文件。首先安装apache2-utils包(它包含了这个工具)。
sudo apt install apache2-utils -y然后,创建一个密码文件。我们将文件放在/etc/nginx/.htpasswd这个隐蔽的位置,并设置一个用户,比如叫admin。
# 创建密码文件并添加第一个用户 `admin` # 系统会提示你输入并确认密码 sudo htpasswd -c /etc/nginx/.htpasswd admin重要提示:-c参数表示创建新文件。如果后续需要添加第二个用户,绝对不能再用-c参数,否则会覆盖原文件。添加第二个用户应该使用:
sudo htpasswd /etc/nginx/.htpasswd another_user4.2 在Nginx配置中启用认证
现在,我们需要告诉Nginx,在转发请求到WebUI之前,先检查这个密码文件。
再次打开你的Nginx站点配置文件:
sudo nano /etc/nginx/sites-available/ai.example.com在location /块内部,添加两行认证配置:
location / { # 启用Basic认证 auth_basic "Private AI Service - Authentication Required"; auth_basic_user_file /etc/nginx/.htpasswd; # 原有的反向代理配置保持不变 proxy_pass http://127.0.0.1:7860; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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_read_timeout 86400; }保存文件,再次测试并重载Nginx配置。
sudo nginx -t sudo systemctl reload nginx4.3 验证认证生效
现在,当你再次访问https://ai.example.com时,浏览器会首先弹出一个登录框,要求你输入用户名(admin)和密码。只有输入正确的凭证后,才能看到Nanbeige4.1-3B的WebUI界面。
5. 进阶配置与优化
基础的安全防护已经完成,但为了让服务更稳定、更易用,我们还可以做一些优化。
5.1 配置SSL证书自动续期
Let‘s Encrypt的证书有效期为90天。Certbot安装时通常会自动创建一个定时任务(cron job或systemd timer)来续期。但手动确认一下是个好习惯。
# 测试证书自动续期流程(模拟运行,不会真的续期) sudo certbot renew --dry-run如果显示所有模拟续期测试成功,就说明自动续期配置正常。你也可以手动运行续期命令:
# 手动续期所有快到期的证书 sudo certbot renew5.2 调整Nginx性能参数
AI模型推理可能比较耗时,为了避免连接超时,可以适当调整Nginx的一些超时参数。你可以在Nginx的http块或server块中添加这些配置(通常在主配置文件/etc/nginx/nginx.conf或站点配置文件中)。
# 在 server 块内或 location 块外添加 proxy_connect_timeout 75s; proxy_send_timeout 3600s; # 发送超时时间调长 proxy_read_timeout 3600s; # 读取超时时间调长,适应长文本生成 client_body_timeout 3600s; client_header_timeout 3600s; send_timeout 3600s;5.3 设置防火墙规则(UFW)
如果你的服务器开启了防火墙(如UFW),需要确保放行HTTP(80)和HTTPS(443)端口,同时关闭不必要的7860端口的公开访问,因为现在所有流量都应该通过Nginx的443端口进入。
# 允许Nginx的HTTP和HTTPS流量 sudo ufw allow 'Nginx Full' # 删除之前可能为测试开放的7860端口规则(如果存在) sudo ufw delete allow 7860 # 重新加载防火墙规则 sudo ufw reload # 查看当前规则,确认只有80和443开放 sudo ufw status6. 总结与回顾
至此,我们已经完成了一个从“裸奔”到“全副武装”的私有AI服务部署。让我们回顾一下关键的步骤和达成的效果:
- 基础部署:确保Nanbeige4.1-3B WebUI在本地7860端口正常运行。
- 加密传输(SSL):通过Nginx和Let‘s Encrypt Certbot,为我们的域名配置了免费的HTTPS证书,实现了浏览器到服务器之间的通信加密。
- 访问控制(BasicAuth):在Nginx层添加了用户名密码认证,只有授权用户才能访问AI服务。
- 安全加固:通过防火墙规则,隐藏了原始的7860服务端口,所有访问必须经过Nginx网关。
现在,你的私有AI服务地址https://ai.example.com已经具备了企业级应用的基础安全特性。你可以放心地将这个链接分享给信任的伙伴,让他们也能在加密通道下,通过输入密码来使用你部署的强大AI模型。
这种“Nginx SSL + BasicAuth”的模式,是一种经典、有效且维护简单的安全部署方案,不仅适用于Nanbeige4.1-3B,也适用于其他任何基于Web的AI模型服务或内部工具。希望这篇教程能帮助你安全、放心地享受私有AI带来的便利。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。