Nginx+Bearer Key 保护 Ollama + OpenClaw 远程连接
一、场景与架构
- Ollama 默认仅监听
127.0.0.1:11434,无密码,公网暴露极危险。 - 方案:Nginx 做反向代理 + Bearer Token 鉴权,对外用域名 / 路径访问,密钥保护。
- 最终效果:
http://你的域名/ollama→ 鉴权 → 转发到本地 Ollama;OpenClaw 带 Key 远程连接。
二、Nginx 配置(带 Bearer 鉴权)
1)配置文件(/etc/nginx/conf.d/ollama.conf)
nginx
server {
listen 80;
server_name 你的域名; # 换成你的域名或公网IP
# 核心:/ollama/ 路径反向代理+鉴权
location /ollama/ {
# 1. 预检请求放行(跨域)
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
add_header Access-Control-Allow-Headers Authorization,Content-Type;
return 204;
}
# 2. Bearer Key 校验(关键!)
set $auth $http_authorization;
if ($auth != "Bearer ollamakey") { # 密钥:ollamakey,可自定义
add_header WWW-Authenticate 'Bearer realm="Ollama API"';
return 401; # 鉴权失败返回401
}
# 3. 反向代理到本地 Ollama
proxy_pass http://127.0.0.1:11434/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
}
}
#if ($http_authorization != "Bearer E4613") { # return 401 Unauthorized; #} # 反向代理到 11434 #location /ollama/ { # 反向代理 #proxy_pass http://127.0.0.1:11434/; #proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; #proxy_http_version 1.1; #proxy_set_header Authorization ""; # 清除转发时的 Authorization #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Forwarded-Proto $scheme; #} # 放行模型列表API location = /ollama/api/tags { proxy_pass http://127.0.0.1:11434/api/tags; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location = /ollama/api/show { proxy_pass http://127.0.0.1:11434/api/show; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # 其他所有 /ollama/ 下的请求都需要鉴权 location /ollama/ { # OPTIONS预检 if ($request_method = 'OPTIONS') { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; add_header Access-Control-Allow-Headers Authorization,Content-Type; return 204; } # 鉴权 if ($http_authorization != "Bearer E43") { add_header WWW-Authenticate 'Bearer realm="Ollama API"'; return 401; } proxy_pass http://127.0.0.1:11434/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Authorization ""; }
- 密钥自定义:把
ollamakey换成你的强密码,例如Bearer E46xxxxA3。
2)生效与重启
bash
运行
nginx -t # 检查配置,必须显示 success
systemctl restart nginx
三、本地验证(先测通 Nginx+Ollama)
1)查 Ollama 模型列表(确认服务正常)
bash
运行
ollama list
2)带 Key 测试接口(关键验证)
bash
运行
curl -i \
-H "Authorization: Bearer ollamakey" \
http://你的域名/ollama/api/tags
- 正常:返回 200 + 模型 JSON 列表。
- 401:Key 写错或 Nginx 配置没生效。
- 404:路径错(必须
/ollama/api/tags)。
四、OpenClaw 对接配置(远程连接)
1)模型提供商选择
- 选:Ollama(不要选 OpenAI)。
2)3 个核心参数(照抄)
表格
| 配置项 | 填写内容 |
|---|---|
| Base URL | http://你的域名/ollama(无 /v1,末尾无斜杠) |
| API Key | ollamakey(Bearer 后的值) |
| 自定义请求头 | Authorization: Bearer ollamakey(头名 / 值分开填) |
3)模型名
填本地存在的模型,如
qwen3:7b、gemma4:e4b(用 ollama list 查看)。4)测试连接
- 点「测试」,返回成功即可对话。
- 常见失败:Base URL 带端口、多写
/v1、请求头没带对。
五、排错速查(最常见 3 点)
- 401 Unauthorized:
- 请求头格式错:少空格(
Bearerollamakey)、多引号、大小写错误。
- 请求头格式错:少空格(
- 404 Not Found:
- Base URL 错:写成
http://域名:11434或/ollama/v1。
- Base URL 错:写成
- OpenClaw 连不上:
- 没加自定义请求头,或头名写错(必须
Authorization)。
- 没加自定义请求头,或头名写错(必须
六、总结
- Nginx 用
location /ollama/+Bearer鉴权,安全暴露 Ollama。 - 验证用
curl -H "Authorization: Bearer 密钥" 地址,通了再配 OpenClaw。 - OpenClaw 核心:Base URL 填
/ollama、Key 填密钥、头带Authorization。
要不要我把这套配置整理成一份可直接复制的 Nginx 配置文件和 OpenClaw 导入模板,你直接粘贴就能用?

浙公网安备 33010602011771号