1. 环境准备与基础配置在Windows Server 2019上部署AI服务网关首先需要搭建好基础运行环境。我实测下来最稳定的组合是Ollama 0.1.20版本搭配Qwen:4b模型这个配置对硬件要求相对友好16GB内存的服务器就能流畅运行。1.1 安装Ollama服务端直接从官网下载Windows版本的Ollama安装包建议选择稳定版而非最新测试版。安装过程中有个关键细节默认安装路径会带空格Program Files这在后续调用时容易出问题。我的经验是手动指定安装目录为C:\Ollama这样的无空格路径。安装完成后打开cmd验证是否成功ollama --version如果返回版本号说明安装正确。这里有个常见坑点某些安全软件会拦截ollama.exe的网络请求记得在防火墙中添加白名单。1.2 配置系统环境变量为了让服务稳定运行需要设置两个关键环境变量OLLAMA_MODELS指向模型存储目录例如C:\Ollama\modelsOLLAMA_HOST指定服务监听地址0.0.0.0:11434配置方法setx OLLAMA_MODELS C:\Ollama\models /M setx OLLAMA_HOST 0.0.0.0:11434 /M设置完成后必须重启服务器才能生效。我遇到过三次因为没重启导致配置不生效的情况这点要特别注意。1.3 下载Qwen:4b模型在已配置好环境变量的前提下运行ollama pull qwen:4b这个4b参数的模型约占用8GB磁盘空间下载速度取决于网络环境。有个加速技巧可以先在Linux机器上用aria2多线程下载再迁移到Windows服务器。实测下载时间能从2小时缩短到20分钟。2. 服务启动与验证2.1 启动Ollama服务以管理员身份运行CMD执行ollama serve成功启动后会看到类似输出INFO[0000] Listening on [::]:11434此时服务已在后台运行。建议用以下命令测试模型是否加载成功ollama run qwen:4b 你好如果返回中文应答说明模型运转正常。2.2 配置后台服务为了让服务在服务器重启后自动运行需要创建计划任务打开任务计划程序创建基本任务触发器设为计算机启动时操作选择启动程序路径填写ollama.exe的完整路径在参数栏填写serve我习惯额外添加一个每日重启任务这样可以定期释放内存。具体做法是在触发器中添加每天凌晨3点的执行计划。3. Nginx反向代理配置3.1 安装Nginx 1.27推荐使用官方Mainline版本解压到C:\nginx-1.27.0目录。测试启动cd C:\nginx-1.27.0 start nginx访问http://localhost应能看到欢迎页面。3.2 关键配置修改修改conf/nginx.conf在http块内添加server { listen 80; server_name your_server_ip; location /api/ { proxy_pass http://127.0.0.1:11434; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }这里有个性能优化点在http块顶部添加worker_processes auto; events { worker_connections 1024; use epoll; }可以显著提升并发处理能力。3.3 安全加固配置建议添加以下安全措施限制访问IPallow 192.168.1.0/24; deny all;启用HTTPS需要准备SSL证书listen 443 ssl; ssl_certificate server.crt; ssl_certificate_key server.key;添加基础认证auth_basic Restricted; auth_basic_user_file conf/htpasswd;4. 系统优化与监控4.1 性能调优参数在Ollama启动参数中添加set OLLAMA_NUM_PARALLEL4 set OLLAMA_MAX_LOADED_MODELS2这可以控制并行请求数和内存占用。对于4核8G的服务器建议保持这个配置。4.2 资源监控方案推荐使用Windows自带的性能监视器添加以下计数器Process(ollama)% Processor TimeProcess(ollama)\Working SetMemory\Available MBytes可以设置阈值告警当内存使用超过80%时自动重启服务。4.3 日志管理技巧修改nginx.conf中的日志格式log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $request_time; access_log logs/access.log main buffer32k flush5m;这样会记录更详细的访问信息且采用缓冲写入减少磁盘IO压力。5. 常见问题排查5.1 服务无法启动先检查端口冲突netstat -ano | findstr 11434如果端口被占用可以修改OLLAMA_HOST变量换用其他端口。5.2 模型加载失败查看ollama日志type C:\Users\%USERNAME%\.ollama\logs\ollama.log常见错误是磁盘空间不足或模型文件损坏重新pull模型即可。5.3 Nginx 502错误在nginx配置中添加proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s;这是因为大模型响应时间较长需要调整超时阈值。6. 进阶应用场景6.1 多模型切换方案通过nginx的location规则实现location /api/qwen { proxy_pass http://127.0.0.1:11434/api/generate; proxy_set_header Model qwen:4b; } location /api/llama { proxy_pass http://127.0.0.1:11434/api/generate; proxy_set_header Model llama2; }这样客户端可以通过不同路径访问不同模型。6.2 负载均衡配置当单机性能不足时可以部署多台Ollama实例在nginx中配置upstream ollama_cluster { server 192.168.1.101:11434; server 192.168.1.102:11434; server 192.168.1.103:11434; } location /api/ { proxy_pass http://ollama_cluster; }配合健康检查机制可以实现高可用架构。6.3 请求限流策略防止API被滥用limit_req_zone $binary_remote_addr zoneapi_limit:10m rate5r/s; location /api/ { limit_req zoneapi_limit burst10 nodelay; proxy_pass http://127.0.0.1:11434; }这会限制每个IP每秒最多5个请求。