Ollama本地服务无法通过IP访问的终极解决方案

5 阅读2分钟

Ollama本地服务无法通过IP访问的终极解决方案


问题描述

在 Mac 系统上启动 Ollama 服务后,通过 localhost 可以正常访问 API,但通过本地 IP(如 192.168.1.106)访问时却报错 Connection refused


1. 问题现象

  • 正常访问curl http://localhost:11434/api/generate 可正常返回结果。
  • 异常访问curl http://192.168.1.106:11434/api/generate 报错 Connection refused

2. 排查步骤与解决方案

2.1 检查ollama 配置`

Ollama 默认仅监听 localhost,需配置为监听 0.0.0.0

执行以下命令检查 ollama 监听的 ip

lsof -i :11434

若返回

COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ollama  99664  user    3u  IPv6 0xb5d825d19a65fcd3      0t0  TCP localhost:11434 (LISTEN)

其中localhost:11434说明 ollama 只监听了localhost,这样当你使用 ip 访问 ollama 服务的时候就会被 refused

正常返回应如下

COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ollama  99664  user    3u  IPv6 0xb5d825d19a65fcd3      0t0  TCP *:11434 (LISTEN)

2.2 环境变量强制覆盖配置(关键解决方案)

临时方案
通过设置当前终端会话环境变量 OLLAMA_HOST 强制临时指定监听地址:

# 临时生效(当前终端会话)  
export OLLAMA_HOST="0.0.0.0:11434"  
ollama serve  

永久生效方案
将环境变量添加到 Shell 配置文件(如 ~/.bashrc~/.zshrc):

echo 'export OLLAMA_HOST="0.0.0.0:11434"' >> ~/.zshrc  
source ~/.zshrc  

2.3 其他排查项

  1. 检查端口占用
    lsof -i :11434  
    
    若其他进程占用端口,终止进程:
    kill -9 <PID>  
    

3. 最终验证

执行以下命令测试:

curl http://192.168.1.106:11434/api/generate \  
  -d '{"model": "deepseek-r1:8b", "prompt": "为什么天空是蓝色的?"}'  

若返回正常结果,问题解决!


4. 总结

  • 核心问题:Ollama 默认仅监听 localhost,需通过配置或环境变量开启外部访问。
  • 关键步骤
    1. 使用环境变量 OLLAMA_HOST 强制覆盖配置(优先级最高)。
    2. 检查防火墙和端口占用。

通过以上方法,即使配置文件未生效,也能通过环境变量快速解决问题。希望本文能帮助你顺利部署 Ollama 服务!