news 2026/5/2 6:32:09

Clawdbot+Qwen3:32B部署教程:Nginx反向代理配置、HTTPS支持与跨域CORS解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Clawdbot+Qwen3:32B部署教程:Nginx反向代理配置、HTTPS支持与跨域CORS解决方案

Clawdbot+Qwen3:32B部署教程:Nginx反向代理配置、HTTPS支持与跨域CORS解决方案

1. 为什么需要这套组合:从本地调试到生产就绪的完整闭环

你刚跑通了 Qwen3:32B,用ollama run qwen3:32b能对话,但很快会遇到三个现实问题:

  • 前端页面打不开,浏览器报错net::ERR_CONNECTION_REFUSED
  • 想用 HTTPS 访问却被拦截,提示“不安全连接”;
  • 自己写的网页调用 API 时,控制台疯狂刷Blocked by CORS policy

这不是模型的问题,而是网关层缺失——Clawdbot 正是为解决这类问题而生。它不训练模型,也不生成文本,但它像一位经验丰富的“AI交通指挥官”:把本地运行的qwen3:32b(通过 Ollama 提供的 OpenAI 兼容接口)接入统一入口,再对外暴露干净、安全、可管理的 Web 服务。

整个链路非常清晰:
你的浏览器 → Clawdbot 控制台(带 token 验证)→ Nginx 反向代理(处理 HTTPS 和路由)→ Clawdbot 后端服务 → Ollama 的 http://127.0.0.1:11434/v1 接口 → qwen3:32b 模型

本教程不讲模型原理,只聚焦三件事:
怎么让 Clawdbot 稳定监听外部请求;
怎么用 Nginx 把 HTTP 升级成 HTTPS;
怎么彻底关闭浏览器跨域限制,让你的前端项目能直接调用 AI 接口。

全程基于真实部署环境验证,所有命令可复制粘贴,无需修改即可运行。

2. 环境准备与 Clawdbot 快速启动

2.1 基础依赖确认

请确保以下组件已安装并正常运行:

  • Docker 24.0+(Clawdbot 官方镜像基于容器部署)
  • Ollama 0.3.10+(必须支持 Qwen3:32B,旧版本会报model not found
  • Nginx 1.18+(系统包管理器安装即可,无需编译)

验证方式(每条执行后应有合理输出):

# 检查 Docker docker --version # 检查 Ollama 是否运行 ollama list | grep qwen3:32b # 检查 Nginx nginx -v

注意:qwen3:32b在 24G 显存 GPU 上可运行,但首次加载需约 90 秒,响应延迟偏高(平均 3–5 秒/次)。如追求流畅交互,建议升级至 48G 显存或改用qwen3:14b(响应快 60%,质量损失极小)。本教程以 32B 为准,所有配置均兼容。

2.2 启动 Clawdbot 并完成初始配置

Clawdbot 不需要源码编译,官方提供预构建镜像。执行以下命令一键拉起:

# 拉取并启动 Clawdbot(后台运行,映射端口 3000) docker run -d \ --name clawdbot \ -p 3000:3000 \ -v $(pwd)/clawdbot-config:/app/config \ --restart=unless-stopped \ ghcr.io/clawdbot/clawdbot:latest

等待 10 秒后,访问http://localhost:3000。此时你会看到弹窗提示:

disconnected (1008): unauthorized: gateway token missing (open a tokenized dashboard URL or paste token in Control UI settings)

这是正常行为——Clawdbot 默认启用 token 认证,防止未授权访问。

按文档说明操作:

  1. 复制当前 URL(形如https://xxx.web.gpu.csdn.net/chat?session=main);
  2. 删除chat?session=main,替换为?token=csdn
  3. 得到最终地址:https://xxx.web.gpu.csdn.net/?token=csdn
  4. 粘贴访问,页面即进入控制台。

成功标志:左上角显示 “Clawdbot Dashboard”,右下角状态栏显示 “Connected to ollama”。

2.3 关联本地 Qwen3:32B 模型

Clawdbot 默认不自动发现 Ollama 模型,需手动配置。进入控制台 → Settings → Model Providers → Add Provider,填写以下 JSON(注意缩进和逗号):

{ "name": "my-ollama", "baseUrl": "http://host.docker.internal:11434/v1", "apiKey": "ollama", "api": "openai-completions", "models": [ { "id": "qwen3:32b", "name": "Local Qwen3 32B", "reasoning": false, "input": ["text"], "contextWindow": 32000, "maxTokens": 4096, "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 } } ] }

关键点:baseUrl使用http://host.docker.internal:11434/v1而非127.0.0.1。因为 Clawdbot 运行在容器内,“localhost” 指向容器自身,而非宿主机。host.docker.internal是 Docker Desktop 提供的特殊 DNS,可正确解析到宿主机网络。

保存后,在 Chat 页面选择 “Local Qwen3 32B”,输入 “你好”,即可收到模型回复。

3. Nginx 反向代理配置:让服务走出 localhost

Clawdbot 默认只监听localhost:3000,外部无法访问。要让团队成员、手机、甚至公网用户使用,必须通过 Nginx 做反向代理。

3.1 创建 Nginx 配置文件

新建/etc/nginx/conf.d/clawdbot.conf(Linux/macOS),内容如下:

upstream clawdbot_backend { server 127.0.0.1:3000; } server { listen 80; server_name your-domain.com; # 替换为你的实际域名,如 ai.example.com # 强制跳转 HTTPS return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name your-domain.com; # SSL 证书路径(使用 Let's Encrypt 生成) ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; # SSL 安全加固(推荐配置) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; # 静态资源缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } # 核心代理规则:所有请求转发给 Clawdbot location / { proxy_pass http://clawdbot_backend; 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_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; } # API 路由单独处理(关键!用于前端直连) location /v1/ { proxy_pass http://clawdbot_backend/v1/; proxy_http_version 1.1; 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; } }

说明:

  • your-domain.com必须替换为你的真实域名(如ai.mycompany.com),不能留空或写localhost
  • SSL 证书路径需与你实际存放位置一致(Let’s Encrypt 默认在此);
  • proxy_read_timeout 300是重点:Qwen3:32B 首次响应可能达 90 秒,设太小会导致 Nginx 中断连接并返回 504;
  • /v1/路由单独配置,是为了后续前端调用 API 时路径精准匹配。

3.2 获取免费 HTTPS 证书(Let’s Encrypt)

使用 Certbot 一键申请(以 Ubuntu 为例):

# 安装 Certbot sudo apt update && sudo apt install certbot python3-certbot-nginx -y # 申请证书(需域名已解析到本机 IP) sudo certbot --nginx -d your-domain.com # 自动续期(Certbot 已配置 systemd timer,无需额外操作)

执行后,证书将自动生成并写入/etc/letsencrypt/live/your-domain.com/,Nginx 配置中已引用。

3.3 启动并验证 Nginx

# 测试配置语法 sudo nginx -t # 重载配置(不中断服务) sudo systemctl reload nginx # 查看日志确认无报错 sudo tail -f /var/log/nginx/error.log

打开浏览器访问https://your-domain.com,输入?token=csdn,应正常进入 Clawdbot 控制台。此时服务已具备:
✔ 域名访问
✔ HTTPS 加密
✔ 外部网络可达

4. 彻底解决跨域问题(CORS):让前端自由调用 AI 接口

Clawdbot 默认不开启 CORS,导致你在 Vue/React 项目中调用https://your-domain.com/v1/chat/completions时,浏览器直接拦截请求。这不是前端代码问题,而是服务端未声明“允许谁来调用我”。

4.1 为什么不能只靠前端加代理?

开发时你可能用 Vite 的server.proxy或 Webpack DevServer 代理绕过 CORS。但这仅限本地开发,上线后前端静态文件托管在 CDN 或 Nginx,仍会触发跨域。真正的解法必须落在服务端。

Clawdbot 本身不提供 CORS 开关,但我们可以用 Nginx 在反向代理层注入响应头——这是最轻量、最可靠的方式。

4.2 修改 Nginx 配置,注入 CORS 头

在刚才的/etc/nginx/conf.d/clawdbot.conf文件中,找到location /v1/ { ... }块,在proxy_pass下方添加以下三行:

# 添加 CORS 支持(允许任意来源,生产环境请严格限制) add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE' always; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, X-Requested-With' always;

生产环境强烈建议将*替换为具体域名,例如:

add_header 'Access-Control-Allow-Origin' 'https://myapp.com' always;

如果前端需携带 Cookie(如登录态),还需增加:

add_header 'Access-Control-Allow-Credentials' 'true' always;

同时,Clawdbot 的/v1/接口需支持OPTIONS预检请求。Nginx 默认不处理,需显式配置:

# 处理 CORS 预检请求(OPTIONS) if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE' always; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, X-Requested-With' always; add_header 'Access-Control-Max-Age' 17280000; add_header 'Content-Type' 'text/plain; charset=utf-8'; add_header 'Content-Length' 0; return 204; }

将这段if块放在location /v1/ { ... }内部最上方。

4.3 前端调用示例(验证是否生效)

创建一个简单的 HTML 文件,测试跨域调用:

<!DOCTYPE html> <html> <head><title>Clawdbot API Test</title></head> <body> <button onclick="callAI()">调用 Qwen3:32B</button> <pre id="result"></pre> <script> async function callAI() { const res = await fetch('https://your-domain.com/v1/chat/completions', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ollama' // Clawdbot 使用 Ollama 的 apiKey }, body: JSON.stringify({ model: "qwen3:32b", messages: [{ role: "user", content: "用一句话介绍你自己" }] }) }); const data = await res.json(); document.getElementById('result').textContent = JSON.stringify(data, null, 2); } </script> </body> </html>

your-domain.com替换为你的域名,用浏览器打开该 HTML。若控制台无 CORS 错误,且<pre>中显示模型回复,则配置成功。

成功标志:Network 面板中/v1/chat/completions请求状态码为200,Response Headers 包含Access-Control-Allow-Origin: *

5. 进阶技巧与常见问题排查

5.1 如何让 Clawdbot 启动时自动加载模型?

Ollama 默认不预加载模型,首次调用才加载,导致首请求超时。可在 Clawdbot 启动前,用脚本触发一次“热身”:

# 创建 warmup.sh #!/bin/bash curl -X POST http://127.0.0.1:11434/api/chat \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3:32b", "messages": [{"role": "user", "content": "warm up"}], "stream": false }' > /dev/null 2>&1

docker run命令前执行此脚本,或加入容器启动命令。

5.2 日志查看与错误定位

Clawdbot 日志默认输出到容器 stdout。实时查看:

docker logs -f clawdbot

常见错误及对策:

错误现象可能原因解决方法
Connection refusedon/v1/Nginx 未正确代理到 Clawdbot检查proxy_pass地址是否为http://127.0.0.1:3000,确认 Clawdbot 容器正在运行
502 Bad GatewayClawdbot 未启动或崩溃docker ps查看容器状态,docker logs clawdbot查看错误堆栈
401 Unauthorized前端未传Authorization: Bearer ollama检查 fetch 请求 headers,Clawdbot 的 apiKey 固定为ollama
504 Gateway TimeoutQwen3:32B 响应超时将 Nginx 的proxy_read_timeout提高至600

5.3 安全加固建议(生产环境必做)

  • Token 管理:不要长期使用?token=csdn。Clawdbot 支持 JWT Token,可在 Settings → Security 中生成长期有效 Token,并通过Authorization: Bearer <token>传入;
  • IP 白名单:在 Nginx 中限制访问来源,例如allow 192.168.1.0/24; deny all;
  • API 限流:Clawdbot 企业版支持速率限制,开源版可用 Nginx 的limit_req模块实现基础限流;
  • 禁用敏感路由:在 Nginx 中location /api/admin { deny all; },防止未授权访问管理接口。

6. 总结:你已掌握一套可落地的 AI 网关部署方案

回顾一下,我们完成了什么:

  • 从零启动:用一条docker run命令拉起 Clawdbot,并成功对接本地qwen3:32b
  • 突破网络限制:通过 Nginx 反向代理,让服务脱离localhost,支持域名 + HTTPS 访问;
  • 打通前后端:用 Nginx 注入 CORS 头,让任何前端项目都能直连 AI 接口,无需代理服务器;
  • 兼顾性能与安全:超时设置适配大模型,SSL 加密保障传输,Token 认证控制访问权限。

这套方案不是玩具,而是已在多个内部 AI 工具平台稳定运行的生产级配置。它不依赖云厂商特定服务,全部基于开源组件,可完全私有化部署。

下一步,你可以:
🔹 把这个网关接入你的内部知识库,构建专属 RAG 应用;
🔹 用/v1/接口开发一个轻量级客服机器人嵌入官网;
🔹 将多个模型(Qwen3、Llama3、DeepSeek)同时注册到 Clawdbot,用一个前端切换不同能力。

技术的价值不在炫技,而在让复杂变简单。当你不再为“连不上”、“跨不过”、“不安全”而分心,真正的 AI 应用创新才刚刚开始。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 15:38:22

3个科学方法让阅读效率倍增:Fast-Font快速阅读字体应用指南

3个科学方法让阅读效率倍增&#xff1a;Fast-Font快速阅读字体应用指南 【免费下载链接】Fast-Font This font provides faster reading through facilitating the reading process by guiding the eyes through text with artificial fixation points. 项目地址: https://gi…

作者头像 李华
网站建设 2026/4/24 18:26:41

USB-Disk-Ejector:Windows设备安全移除工具全解析

USB-Disk-Ejector&#xff1a;Windows设备安全移除工具全解析 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It is a quick, flexible, portable alternative…

作者头像 李华
网站建设 2026/4/26 21:00:56

手机摄影画质差?教你用USB OTG外接专业相机提升10倍效果

手机摄影画质差&#xff1f;教你用USB OTG外接专业相机提升10倍效果 【免费下载链接】Android-USB-OTG-Camera 项目地址: https://gitcode.com/gh_mirrors/an/Android-USB-OTG-Camera 你是否遇到过这样的困扰&#xff1a;手机自带摄像头拍不出满意的夜景效果&#xff1…

作者头像 李华
网站建设 2026/5/1 1:09:07

通义千问2.5-7B-Instruct vs Qwen1.5-7B:指令微调效果全面对比评测

通义千问2.5-7B-Instruct vs Qwen1.5-7B&#xff1a;指令微调效果全面对比评测 你是不是也遇到过这样的困惑&#xff1a;明明都是7B量级的通义千问模型&#xff0c;Qwen1.5-7B用着挺顺手&#xff0c;突然看到新发布的Qwen2.5-7B-Instruct&#xff0c;参数没变、名字多了个“In…

作者头像 李华
网站建设 2026/5/2 5:56:37

革新性A股行情分析与订单流解析实战指南

革新性A股行情分析与订单流解析实战指南 【免费下载链接】AXOrderBook A股订单簿工具&#xff0c;使用逐笔行情进行订单簿重建、千档快照发布、各档委托队列展示等&#xff0c;包括python模型和FPGA HLS实现。 项目地址: https://gitcode.com/gh_mirrors/ax/AXOrderBook …

作者头像 李华
网站建设 2026/4/30 10:27:37

GLM-Image镜像部署:支持--port自定义端口+HTTPS反向代理配置详解

GLM-Image镜像部署&#xff1a;支持--port自定义端口HTTPS反向代理配置详解 1. 为什么需要自定义端口和HTTPS反向代理 你刚拉取完GLM-Image镜像&#xff0c;执行bash /root/build/start.sh&#xff0c;浏览器打开http://localhost:7860&#xff0c;界面出来了&#xff0c;图片…

作者头像 李华