网站开发的话 dw里面选择啥软件开发 网站建设
2026/5/21 15:24:11 网站建设 项目流程
网站开发的话 dw里面选择啥,软件开发 网站建设,苏州外贸公司网站建设流程,宁河做网站公司Clawdbot直连Qwen3-32B部署教程#xff1a;Nginx反向代理SSL证书配置完整步骤 1. 为什么需要这个部署方案 你是不是也遇到过这样的问题#xff1a;本地跑着Qwen3-32B大模型#xff0c;用Ollama启动后只能通过http://localhost:11434访问#xff0c;但想让团队同事、客户或…Clawdbot直连Qwen3-32B部署教程Nginx反向代理SSL证书配置完整步骤1. 为什么需要这个部署方案你是不是也遇到过这样的问题本地跑着Qwen3-32B大模型用Ollama启动后只能通过http://localhost:11434访问但想让团队同事、客户或者外部用户也能安全稳定地使用直接暴露内网端口风险高没有域名访问不专业HTTP协议在现代浏览器里还被标记为“不安全”。Clawdbot作为轻量级Chat平台前端本身不带服务端逻辑它需要一个可靠的Web网关来对接后端大模型。而Qwen3-32B这类32B参数量级的模型对推理服务的稳定性、并发响应和网络路径都有更高要求。单纯靠Ollama自带的API接口既没法加HTTPS也没法做负载均衡或访问控制。本教程要带你从零完成一套生产可用的部署链路Ollama托管Qwen3-32B模型已预装Clawdbot前端静态资源部署无需Node.js运行时Nginx反向代理统一入口80/443端口Let’s Encrypt自动签发SSL证书免费、可信、自动续期全链路请求转发https://chat.yourdomain.com→ Nginx →http://127.0.0.1:18789Clawdbot网关→http://127.0.0.1:11434Ollama API整个过程不依赖Docker Compose编排不修改Clawdbot源码不重写任何前端逻辑——只靠配置和几条命令就能把本地大模型变成一个可对外服务的AI聊天平台。2. 环境准备与基础服务确认2.1 前置条件检查请确保你的服务器满足以下最低要求推荐Ubuntu 22.04 LTS或CentOS 7已安装Ollamav0.3.0并成功拉取qwen3:32b模型ollama list | grep qwen3 # 应输出qwen3:32b latest 25.4 GB ...已下载Clawdbot Web版静态包官方Release中clawdbot-web-v*.tar.gz服务器有独立公网IP且域名如chat.example.com已解析到该IP防火墙放行80、443端口UFW或firewalldroot或具备sudo权限的用户注意本教程不涉及模型量化、GPU驱动安装或Ollama服务配置优化。假设你已能通过curl http://localhost:11434/api/chat调通Qwen3-32B基础API。2.2 创建Clawdbot网关服务18789端口Clawdbot本身是纯前端但它需要一个中间层来转发请求到Ollama。我们用最轻量的方式实现一个Python简易网关脚本仅60行不依赖Flask/FastAPI等框架。新建文件/opt/clawdbot-gateway/app.py#!/usr/bin/env python3 # -*- coding: utf-8 -*- import os import json import requests from http.server import HTTPServer, BaseHTTPRequestHandler from urllib.parse import urlparse, parse_qs OLLAMA_URL http://127.0.0.1:11434 GATEWAY_PORT 18789 class GatewayHandler(BaseHTTPRequestHandler): def do_POST(self): if self.path /api/chat: try: content_length int(self.headers.get(Content-Length, 0)) post_data self.rfile.read(content_length) data json.loads(post_data) # 强制指定模型为 qwen3:32b防止前端误传 data[model] qwen3:32b # 转发到Ollama resp requests.post(f{OLLAMA_URL}/api/chat, jsondata, streamTrue, timeout300) self.send_response(resp.status_code) self.send_header(Content-Type, application/json) self.end_headers() for chunk in resp.iter_content(chunk_size8192): self.wfile.write(chunk) except Exception as e: self.send_error(500, fGateway error: {str(e)}) else: self.send_error(404) def do_OPTIONS(self): self.send_response(200) self.send_header(Access-Control-Allow-Origin, *) self.send_header(Access-Control-Allow-Methods, POST, OPTIONS) self.send_header(Access-Control-Allow-Headers, Content-Type) self.end_headers() if __name__ __main__: server HTTPServer((127.0.0.1, GATEWAY_PORT), GatewayHandler) print(fClawdbot Gateway listening on http://127.0.0.1:{GATEWAY_PORT}) server.serve_forever()赋予执行权限并测试启动chmod x /opt/clawdbot-gateway/app.py nohup python3 /opt/clawdbot-gateway/app.py /var/log/clawdbot-gateway.log 21 验证网关是否就绪curl -X POST http://127.0.0.1:18789/api/chat \ -H Content-Type: application/json \ -d {messages:[{role:user,content:你好}]}若返回流式JSON含message字段说明网关已连通Ollama。2.3 部署Clawdbot前端静态文件解压Clawdbot Web包到Nginx默认站点目录mkdir -p /var/www/clawdbot tar -xzf clawdbot-web-v*.tar.gz -C /var/www/clawdbot --strip-components1确认关键文件存在ls -l /var/www/clawdbot/{index.html,main.js,config.json} # config.json 中需确保 apiEndpoint 字段为 /api/chat相对路径由Nginx重写小技巧Clawdbot的config.json里不要写http://...绝对地址所有API请求都走同域由Nginx统一代理这样才安全且免跨域。3. Nginx反向代理配置详解3.1 安装与基础配置Ubuntu系统安装Nginxsudo apt update sudo apt install nginx -y sudo systemctl enable nginx sudo systemctl start nginx清空默认站点创建Clawdbot专属配置rm /etc/nginx/sites-enabled/default nano /etc/nginx/sites-available/clawdbot填入以下内容请将chat.yourdomain.com替换为你的真实域名server { listen 80; server_name chat.yourdomain.com; # 强制HTTPS跳转 return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name chat.yourdomain.com; # SSL证书路径后续由certbot自动生成 ssl_certificate /etc/letsencrypt/live/chat.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/chat.yourdomain.com/privkey.pem; # SSL安全加固采用Mozilla推荐配置 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; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # 静态文件根目录 root /var/www/clawdbot; index index.html; # 处理前端路由SPA模式 location / { try_files $uri $uri/ /index.html; } # 关键API请求全部代理到本地网关 location /api/chat { proxy_pass http://127.0.0.1:18789; 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_buffering off; proxy_cache off; proxy_redirect off; } # 可选添加健康检查端点 location /healthz { return 200 OK; add_header Content-Type text/plain; } }启用配置并测试语法ln -sf /etc/nginx/sites-available/clawdbot /etc/nginx/sites-enabled/ nginx -t sudo systemctl reload nginx此时访问http://chat.yourdomain.com应看到Clawdbot首页但API仍会失败因为还没配SSL证书。4. SSL证书自动申请与续期4.1 使用Certbot获取Let’s Encrypt证书安装CertbotUbuntusudo apt install certbot python3-certbot-nginx -y首次申请证书需确保域名DNS已生效且80端口可被外网访问sudo certbot --nginx -d chat.yourdomain.com --non-interactive --agree-tos -m adminyourdomain.comCertbot会自动修改Nginx配置插入SSL证书路径添加HTTP→HTTPS重定向规则配置自动续期定时任务/etc/cron.d/certbot验证证书是否生效sudo certbot certificates # 查看输出中是否有 chat.yourdomain.com 的有效证书4.2 手动触发续期测试推荐避免到期才发现问题先手动跑一次续期流程sudo certbot renew --dry-run若输出Congratulations, all simulated renewals succeeded说明自动续期机制正常。安全提醒证书默认90天有效期Certbot会在到期前30天自动续期。无需人工干预但建议每月登录服务器执行一次sudo certbot renew --dry-run确认。5. 全链路验证与常见问题排查5.1 四层连通性逐级验证按顺序执行以下检查任一环节失败即定位问题所在层级命令预期结果说明L1Ollama是否就绪ollama ps显示qwen3:32b正在运行检查模型是否加载L2网关是否可达curl -v http://127.0.0.1:18789/healthz返回200 OK网关进程存活L3Nginx静态服务curl -I http://chat.yourdomain.comHTTP/2 200content-type: text/htmlDNSHTTP通L4HTTPSAPI通路curl -k https://chat.yourdomain.com/api/chat -X POST -d {}返回400 Bad Request非502/503说明已抵达网关注意最后一步返回400是正常的因为没传合法JSON但只要不是502Bad Gateway或503Service Unavailable就证明Nginx→网关→Ollama整条链路已打通。5.2 典型问题速查表问题页面打开空白浏览器控制台报Failed to fetch检查/var/www/clawdbot/config.json中apiEndpoint是否为/api/chat不能带协议和域名检查Nginx配置中location /api/chat块是否拼写正确proxy_pass末尾不能加斜杠应为18789不是18789/问题发送消息后卡住无响应检查Ollama日志journalctl -u ollama -n 50 --no-pager是否有OOM或CUDA错误检查网关日志tail -f /var/log/clawdbot-gateway.log是否有连接拒绝Connection refused在网关服务器上执行curl -v http://127.0.0.1:11434/api/chat -d {model:qwen3:32b}直连Ollama测试问题HTTPS访问提示证书不安全执行sudo certbot certificates确认证书状态为EXPIRED还是VALID检查Nginx配置中ssl_certificate路径是否与certbot certificates输出完全一致清除浏览器缓存或用curl -vk https://chat.yourdomain.com验证证书链问题中文乱码、emoji显示异常在Nginx配置的server块中添加charset utf-8;6. 进阶优化建议可选6.1 提升Qwen3-32B响应速度Ollama默认使用CPU推理32B模型首token延迟可能达15秒以上。若服务器有NVIDIA GPU建议安装NVIDIA Container Toolkit即使不用DockerOllama也依赖它调用CUDA启动Ollama时指定GPUOLLAMA_NUM_GPU1 ollama serve在Clawdbot网关中增加超时控制修改app.py中timeout300为timeout120避免前端长时间等待6.2 添加基础访问控制不想完全公开在Nginx中加入IP白名单适用于内网或小范围试用# 在 server 块顶部添加 allow 192.168.1.0/24; # 允许内网 allow 203.0.113.42; # 允许特定公网IP deny all;6.3 日志分析与监控将Clawdbot网关日志接入ELK或简单用goaccess分析# 实时统计API调用TOP10 sudo tail -f /var/log/clawdbot-gateway.log | awk {print $1} | sort | uniq -c | sort -nr | head -107. 总结你已掌握一套可落地的大模型Web化方案回顾整个部署流程你实际完成了三件关键事情解耦了模型与前端Qwen3-32B由Ollama专注推理Clawdbot专注交互体验网关层负责协议转换与安全管控构建了生产级入口Nginx不仅提供HTTPS还承担了静态资源服务、反向代理、流式响应支持、健康检查等核心能力实现了零成本安全合规Let’s Encrypt证书让整个链路符合现代Web安全标准且全自动续期无需人工维护。这套方案的优势在于极简、可控、可演进不依赖Kubernetes或复杂编排单机即可承载中小团队日常使用所有组件Ollama、Python网关、Nginx、Certbot均为开源、轻量、社区活跃后续可无缝替换Clawdbot为其他前端如Open WebUI只需调整Nginx代理路径若需扩容可将Ollama迁移到专用GPU服务器Nginx保持不变。现在打开浏览器访问https://chat.yourdomain.com输入一句“用Python写个快速排序”亲眼看看Qwen3-32B如何在你自己的服务器上以专业、安全、稳定的方式为你服务。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询