Ollama REST API搭配Nginx反向代理部署问题排查
Ollama + Nginx 反向代理配置问题解决
你的502 Bad Gateway错误根源在于Dockerfile的多阶段构建逻辑错误:第二个FROM nginx:latest会完全丢弃前一个ollama/ollama镜像的所有内容,最终容器里只运行Nginx服务,没有Ollama进程,导致Nginx无法连接到localhost:11434。以下是问题的具体解决和疑问解答:
疑问解答
1. Docker容器内无ps命令,如何查看运行进程?
- 无需进入容器,直接在宿主机执行命令:
docker top <容器ID或容器名称>,即可查看容器内所有运行的进程。 - 若必须在容器内查看,可先安装进程工具包:
- Debian/Ubuntu系容器:
apt update && apt install -y procps - Alpine系容器:
apk add procps
安装完成后即可使用ps aux等命令查看进程。
- Debian/Ubuntu系容器:
2. 如何启动Ollama服务器?
- 进入Ollama容器的交互式终端:
docker exec -it <Ollama容器ID/名称> sh - 直接执行命令:
ollama serve,服务将默认监听11434端口。
3. 如何配置Docker以自动启动Ollama服务器?
推荐使用Docker Compose管理Ollama和Nginx两个容器,让它们处于同一网络,实现自动启动和服务互通。
步骤1:创建docker-compose.yml文件
version: '3.8' services: ollama: image: ollama/ollama:latest volumes: - ollama_data:/root/.ollama # 持久化Ollama数据 restart: always # 自动重启服务 nginx: image: nginx:latest ports: - "80:80" # 映射宿主机80端口到容器80端口 volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf # 挂载自定义Nginx配置 depends_on: - ollama # 确保Ollama先启动 restart: always volumes: ollama_data: # 定义数据卷
步骤2:修正Nginx配置文件(nginx.conf)
将原配置中的localhost:11434改为容器名称ollama(Docker Compose会自动解析容器DNS):
server { listen 80; location /api/tags { proxy_pass http://ollama:11434/api/tags; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 若需暴露完整API端点,可替换为以下配置,仅拦截非API路径返回404 # location /api/ { # proxy_pass http://ollama:11434/api/; # proxy_set_header Host $host; # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # } location / { return 404; } }
步骤3:启动服务
在配置文件所在目录执行命令:
docker-compose up -d
启动完成后,访问http://你的服务器IP/api/tags即可正常获取Ollama的标签数据。
内容的提问来源于stack exchange,提问作者Michał Turczyn
相关产品推荐
相关产品推荐

