NewAPI整合Ollama本地大模型公网调用

为什么要用NewAPI包装Ollama再发布公网

Ollama默认只监听本地地址(127.0.0.1:11434),直接改成0.0.0.0虽然能开放端口,但缺少身份验证、频率限制、日志审计等能力。NewAPI作为一个轻量API网关,可以给Ollama添加API Key鉴权、请求限流、访问日志,还能统一管理多个模型端点。
适合需要把本地大模型安全地提供给外网应用(如小程序、Web服务)调用的场景。

环境准备:安装Ollama与NewAPI

1. 安装Ollama(如果还未安装)

在Ubuntu/Debian上执行:

curl -fsSL https://ollama.com/install.sh | sh

安装完成后拉取一个模型(例如llama3.2:1b)作为测试:

ollama pull llama3.2:1b
ollama serve   # 确保服务运行在11434端口

2. 部署NewAPI

推荐使用Docker部署,快速且隔离。
新建docker-compose.yml

version: '3.8'
services:
  newapi:
    image: newapi/newapi:latest
    container_name: newapi
    ports:
      - "3000:3000"
    volumes:
      - ./newapi_data:/app/data
    environment:
      - SQL_DSN=newapi.db
    restart: always

启动:

docker-compose up -d

访问http://服务器IP:3000,首次设置管理员账号。

配置NewAPI对接本地Ollama

登录NewAPI后台,进入渠道管理 -> 添加渠道

  • 类型选择 Ollama
  • 名称随便填(如“本地Ollama”)
  • 地址填写 http://宿主机IP:11434 (如果NewAPI与Ollama在同一台机器,可以用Docker内网地址,但建议用宿主机IP避免解析问题)
  • 模型列表手动添加你拉取的模型名(例如llama3.2:1b
  • API Key暂时留空,因为Ollama本身无鉴权
  • 保存后回到令牌管理,创建一个新令牌,设置过期时间和额度,这个令牌就是将来公网调用的凭证。

部署后立即测试

# 假设令牌为 sk-test123
curl http://服务器IP:3000/v1/chat/completions \
  -H "Authorization: Bearer sk-test123" \
  -H "Content-Type: application/json" \
  -d '{"model": "llama3.2:1b", "messages": [{"role": "user", "content": "你好"}]}' \
  --insecure

得到正常JSON响应则说明内网联通。

公网发布:域名、反向代理与安全设置

内网测试通过后,需要把NewAPI端口(3000)暴露到公网。强烈建议不要直接映射端口到公网,而是使用Nginx反代并开启HTTPS。

1. 配置Nginx反向代理(假设已有域名api.example.com

server {
    listen 443 ssl;
    server_name api.example.com;
    ssl_certificate /path/to/ssl.pem;
    ssl_certificate_key /path/to/ssl.key;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

重启Nginx,并通过https://api.example.com访问。

2. 安全加固要点

  • 在NewAPI后台开启IP白名单(如果调用源固定)
  • 设置合理的速率限制(如每分钟60次)
  • 定期轮换API Key并设置过期时间
  • 不要泄露管理后台地址(可在Nginx层限制内网IP访问管理路径)

效果验证与高频问题解答

验证公网调用

从任意地方(比如另一台服务器)执行:

curl https://api.example.com/v1/chat/completions \
  -H "Authorization: Bearer sk-你的令牌" \
  -H "Content-Type: application/json" \
  -d '{"model": "llama3.2:1b", "messages": [{"role": "user", "content": "1+1=?"}]}'

如果返回包含"content":"2"的JSON,则公网调用成功。

常见问题

Q:NewAPI报“channel not found”或“model not available”?
A:检查渠道配置中模型列表是否准确,必须与ollama list输出的模型名称完全一致(含标签)。

Q:公网访问返回502?
A:检查NewAPI容器是否正常,Nginx反代地址是否正确;如果是Docker部署的NewAPI,proxy_pass应指向宿主机IP而非127.0.0.1。

Q:如何让NewAPI也支持流式输出?
A:默认支持,只需在请求中添加stream: true参数,确保Nginx关闭缓冲(proxy_buffering off)。

Q:Ollama需要开启公网端口吗?
A:不需要,Ollama仍然只监听本地,NewAPI在内网桥接即可。

如果你在整合过程中遇到其他异常,建议先检查NewAPI日志(docker logs newapi)和Ollama日志,重点排查渠道地址与鉴权参数。
按照本文步骤操作,零基础也能快速跑通NewAPI整合Ollama本地大模型的公网调用。

分享到:
上一篇
OneAPI开源AI中转站Docker一键部署教程
下一篇
自建AI Token中转站法律风险完整拆解与合规建议
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意