Nginx配置Ollama 访问api服务
使用Nginx配置Ollama API访问服务指南
一、前置准备
-
基础环境要求:
- 已部署Ollama服务(默认端口11434)
- 服务器安装Nginx 1.18+版本
- 有效域名(示例使用api.ollama.service.com)
- 开放服务器80/443端口
-
网络拓扑确认:
graph LR A[客户端] --> B[域名DNS解析] B --> C[Nginx服务器] C --> D[Ollama服务:11434]
二、核心配置解析
server {listen 80;server_name api.ollama.service.com;# 基础路由配置location / {proxy_pass http://IP:11434;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;}# 流式API专用配置location /api/ {proxy_pass http://IP:11434;proxy_http_version 1.1;proxy_set_header Connection '';# 实时传输优化proxy_buffering off;proxy_cache off;chunked_transfer_encoding off;# CORS跨域配置add_header 'Access-Control-Allow-Origin' '*' always;add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;# 预检请求处理if ($request_method = 'OPTIONS') {add_header 'Access-Control-Max-Age' 1728000;return 204;}}
}
三、关键配置说明
-
流式传输优化组合:
proxy_buffering off
:禁用响应缓冲proxy_http_version 1.1
:启用持久连接chunked_transfer_encoding off
:避免分块编码干扰
-
CORS防护矩阵:
graph TB A[客户端请求] --> B[检测Origin头] B --> C{是否预检请求?} C -->|是| D[返回OPTIONS响应] C -->|否| E[添加CORS响应头]
-
代理头传递链:
客户端IP → X-Real-IP → X-Forwarded-For → Ollama服务
四、接口测试验证
- CORS验证测试:
curl -I -X OPTIONS http://api.ollama.service.com/api/ \
-H 'Origin: http://test-domain.com' \
-H 'Access-Control-Request-Method: POST'
预期响应包含:
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 1728000
- 流式请求测试:
async function testStreaming() {const response = await fetch('http://api.ollama.service.com/api/generate', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': 'Bearer API_KEY'},body: JSON.stringify({model: 'llama2',prompt: '为什么天空是蓝色的?'})});const reader = response.body.getReader();while(true) {const {done, value} = await reader.read();if(done) break;console.log(new TextDecoder().decode(value));}
}
五、性能监控建议
-
流量观测指标:
pie title 请求类型分布 "模型推理" : 65 "参数调整" : 20 "状态查询" : 15
-
推荐监控参数:
- 连接保持时间:
keepalive_timeout
- 每秒请求数(RPS)
- 平均响应延迟
- 连接保持时间:
六、安全增强建议
- 防护措施清单:
- 启用HTTPS(Let's Encrypt免费证书)
- 配置请求频率限制
limit_req_zone $binary_remote_addr zone=ollama_limit:10m rate=10r/s;
- 添加JWT验证层
- 启用Nginx访问日志审计
本文配置已通过以下环境验证:
- Ubuntu 22.04 LTS
- Nginx 1.22.1
- Ollama 0.1.27
- 测试工具:curl 7.81.0、Postman v10.14