Nginx配置Ollama 访问api服务

使用Nginx配置Ollama API访问服务指南

一、前置准备
  1. 基础环境要求:

    • 已部署Ollama服务(默认端口11434)
    • 服务器安装Nginx 1.18+版本
    • 有效域名(示例使用api.ollama.service.com)
    • 开放服务器80/443端口
  2. 网络拓扑确认:

    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;
        }
    }
}

三、关键配置说明
  1. 流式传输优化组合:

    • proxy_buffering off:禁用响应缓冲
    • proxy_http_version 1.1:启用持久连接
    • chunked_transfer_encoding off:避免分块编码干扰
  2. CORS防护矩阵:

    graph TB
    A[客户端请求] --> B[检测Origin头]
    B --> C{是否预检请求?}
    C -->|是| D[返回OPTIONS响应]
    C -->|否| E[添加CORS响应头]
    
  3. 代理头传递链:

    客户端IP → X-Real-IP → X-Forwarded-For → Ollama服务
    
四、接口测试验证
  1. 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

  1. 流式请求测试:
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));
  }
}
五、性能监控建议
  1. 流量观测指标:

    pie
    title 请求类型分布
    "模型推理" : 65
    "参数调整" : 20
    "状态查询" : 15
    
  2. 推荐监控参数:

    • 连接保持时间:keepalive_timeout
    • 每秒请求数(RPS)
    • 平均响应延迟
六、安全增强建议
  1. 防护措施清单:
    • 启用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xianghan收藏册

极简精品作,一分也是一份鼓励哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值