根据你的描述,你在尝试将 Ollama 的 localhost
地址替换为本地 IP 地址(如 192.168.*.*
)时,遇到了网络错误,提示无法连接到服务。但在浏览器中访问 http://<你的IP>:11434
时,Ollama 显示正在运行。以下是可能的原因和解决方案:
一、问题分析
-
Ollama 默认绑定到
127.0.0.1
默认情况下,Ollama 服务绑定到127.0.0.1
(即localhost
),这意味着它只能接受来自本地主机的连接。如果你尝试通过本地 IP 地址访问,可能会遇到连接问题。 -
防火墙或网络配置问题
即使你已经在防火墙中允许了 11434 端口,可能存在其他网络配置问题,导致无法通过本地 IP 访问。 -
Docker 网络配置问题
如果你使用 Docker 部署 Ollama,可能需要确保 Docker 容器正确配置了网络,并且端口映射正确。
二、解决方案
1. 更改 Ollama 的绑定地址
你可以通过设置环境变量 OLLAMA_HOST
来更改 Ollama 的绑定地址,使其监听所有网络接口:
bash复制
export OLLAMA_HOST="0.0.0.0:11434"
ollama serve
这将使 Ollama 服务能够接受来自任何 IP 地址的连接。
2. 检查防火墙和安全软件
确保防火墙或安全软件没有阻止 11434 端口的流量。你可以暂时关闭防火墙进行测试:
bash复制
sudo systemctl stop firewalld # 对于 CentOS
# 或
sudo ufw disable # 对于 Ubuntu
如果关闭防火墙后可以正常访问,说明需要调整防火墙规则。
3. 检查 Docker 网络配置
如果你使用 Docker 部署 Ollama,确保容器正确映射了 11434 端口:
bash复制
docker run -d -p 11434:11434 \
--name ollama \
mintplexlabs/ollama
同时,确保容器内部的 Ollama 服务绑定到 0.0.0.0
。
4. 使用 Nginx 反向代理
如果上述方法无法解决问题,可以使用 Nginx 设置反向代理,将外部请求转发到 Ollama 服务:
nginx复制
events {}
http {
server {
listen 11435; # 对外暴露的端口
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;
}
}
}
然后运行 Nginx 容器:
bash复制
docker run -d \
--name nginx-proxy \
-p 11435:11435 \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:1.24.0
这样,你可以通过 <你的IP>:11435
访问 Ollama 服务。
三、总结
通过更改 Ollama 的绑定地址、检查防火墙配置和 Docker 网络设置,你应该能够解决无法通过本地 IP 访问 11434 端口的问题。如果问题仍然存在,可以尝试使用 Nginx 设置反向代理,将请求转发到 Ollama 服务。
希望这些方法能帮助你解决问题。如果还有疑问,欢迎随时交流。