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
bash
lsof -i :11434
若返回
bash
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
正常返回应如下
bash
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ollama 99664 user 3u IPv6 0xb5d825d19a65fcd3 0t0 TCP *:11434 (LISTEN)
2.2 环境变量强制覆盖配置(关键解决方案)
临时方案 :
通过设置当前终端会话环境变量 OLLAMA_HOST
强制临时指定监听地址:
bash
# 临时生效(当前终端会话)
export OLLAMA_HOST="0.0.0.0:11434"
ollama serve
永久生效方案 :
将环境变量添加到 Shell 配置文件(如 ~/.bashrc
或 ~/.zshrc
):
bash
echo 'export OLLAMA_HOST="0.0.0.0:11434"' >> ~/.zshrc
source ~/.zshrc
2.3 其他排查项
-
检查端口占用 :
bashlsof -i :11434
若其他进程占用端口,终止进程:
bashkill -9 <PID>
3. 最终验证
执行以下命令测试:
bash
curl http://192.168.1.106:11434/api/generate \
-d '{"model": "deepseek-r1:8b", "prompt": "为什么天空是蓝色的?"}'
若返回正常结果,问题解决!
4. 总结
- 核心问题 :Ollama 默认仅监听
localhost
,需通过配置或环境变量开启外部访问。 - 关键步骤 :
- 使用环境变量
OLLAMA_HOST
强制覆盖配置(优先级最高)。 - 检查防火墙和端口占用。
- 使用环境变量
通过以上方法,即使配置文件未生效,也能通过环境变量快速解决问题。希望本文能帮助你顺利部署 Ollama 服务!