Ollama搭配Nginx做Basic鉴权

Ollama 是本地部署大语言模型的常用推理服务,默认启动后只监听 127.0.0.1,但很多人通过 Nginx 反代把它暴露到公网使用。
如果直接暴露且没有鉴权,任何知道地址的人都能调用你的 GPU 跑推理,轻则消耗显存,重则被刷爆账单。
本文用 Nginx 的 Basic Auth 给 Ollama 加上访问密码,让匿名请求直接返回 401,操作过程适合零基础用户照做。

动手前需要准备什么

  • 一台 Linux 服务器(本文以 Ubuntu 22.04 为例,Debian/CentOS 命令类似)
  • 已安装 Ollama 并确认正常启动
  • 已安装 Nginx(未安装的话执行 sudo apt install nginx -y
  • 有 root 或 sudo 权限

第一步:确认 Ollama 监听地址

Ollama 默认只允许本机访问,先检查当前监听:

sudo ss -lntp | grep 11434

如果看到 127.0.0.1:11434,说明没有向外网暴露,可以放心继续。
如果显示 0.0.0.0:11434,说明已经对全网开放,需要立刻修改。

修改监听地址的方法是编辑 systemd 服务:

sudo systemctl edit ollama

写入:

[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"

保存后重启:

sudo systemctl restart ollama

再次用 ss 确认监听地址变成 127.0.0.1。

第二步:生成 Basic Auth 密码文件

Nginx 的 auth_basic 模块需要借助 htpasswd 生成账号密码文件。
先安装工具:

sudo apt install apache2-utils -y

创建用户,比如用户名为 ollama

sudo mkdir -p /etc/nginx/conf.d
sudo htpasswd -c /etc/nginx/conf.d/ollama.htpasswd ollama

输入两次密码即可。
以后要加新用户,去掉 -c 参数避免覆盖旧密码:

sudo htpasswd /etc/nginx/conf.d/ollama.htpasswd another_user

第三步:配置 Nginx 反向代理

/etc/nginx/conf.d/ollama-proxy.conf 新建配置文件,写入:

server {
    listen 80;
    server_name your.domain.com;

    auth_basic "GPU Inference Service";
    auth_basic_user_file /etc/nginx/conf.d/ollama.htpasswd;

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

注意把 server_name 换成自己的域名或 IP。
检查配置并重载:

sudo nginx -t
sudo systemctl reload nginx

如果用了 HTTPS,还需要在 server 块里加证书配置,并建议将 HTTP 请求 301 跳转到 HTTPS,避免密码被明文抓包。

验证是否生效

本机直接请求 Ollama 端口,应该没有鉴权(因为走的是本机回环,Nginx 没有介入):

curl http://127.0.0.1:11434/

通过 Nginx 域名访问,不带密码应返回 401:

curl -i http://your.domain.com/

输出里应该有 HTTP/1.1 401 Unauthorized
带用户名密码再试:

curl -i -u ollama:你的密码 http://your.domain.com/

此时能看到 Ollama 返回的 Ollama is running 或 200 状态。
如果返回 200,说明 Basic 鉴权已生效。

几个容易踩的坑

  • auth_basic 设置在 server 层时,会对所有 location 生效,包括 /api 等接口,正好符合需求。
  • 反向代理必须把 Host 等请求头传给 Ollama,否则部分 API 可能报错。上面配置已包含,不要删。
  • 不要在 /etc/nginx/sites-enabled/default 里直接改,容易和已有站点冲突,独立配置文件更清晰。
  • 如果 Ollama 已经通过 Docker 部署,容器端口映射要改成 127.0.0.1:11434:11434,否则 Nginx 和外部网络都能直连容器,鉴权形同虚设。
  • Basic Auth 的账号密码只是 base64 编码,不是加密,线上环境必须加 HTTPS,否则密码等于明文传输。

关于是否需要担心 Basic Auth 不适合服务间调用,如果程序需要带密码访问,可以在请求头里加上 Authorization: Basic base64(user:pass),各语言 HTTP 库基本都支持。
如果未来要接入 API Token 或 JWT,也可以先把 Nginx 这层鉴权换成自定义模块,但 Basic Auth 依然是阻止匿名调用的最快方案。

实施时先按上面步骤做通,再考虑 HTTPS 收紧。
遇到 502 通常是 Nginx 无法连接 11434,检查 Ollama 进程和防火墙;
遇到 404 则看 location 路径有没有写错。
整体配置完成后,匿名访问已经无法触碰推理接口,GPU 资源真正掌握在自己手里。

分享到:
上一篇
搭建私有中转网关,对接通义千问、Gemini
下一篇
OpenAI Astra项目暂停,模型失控事件复盘
1
系统公告

机房迁移升级通知

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