You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx超时配置无效:Ollama流式HTTP请求504问题解决问询

Ollama Llama2 反向代理504超时问题解决配置方案

本地调用Ollama的/api/generate接口流式返回正常,但经Nginx反向代理后出现504超时,仅设置proxy_read_timeout无法解决,核心原因是Nginx默认的缓冲区机制会阻塞流式响应的实时传输,同时需适配HTTP/1.1的分块传输规则。以下是正确的Nginx配置及关键说明:

完整Nginx配置示例

server {
    listen 80;
    server_name your-domain.com; # 替换为你的公网域名或IP

    location /api/ {
        # 设置足够长的超时时间,单位为秒
        proxy_read_timeout 300s;
        proxy_connect_timeout 30s;
        proxy_send_timeout 300s;

        # 禁用缓冲区,确保流式内容实时转发给客户端
        proxy_buffering off;
        proxy_cache off;

        # 启用HTTP/1.1并适配分块传输
        proxy_http_version 1.1;
        proxy_set_header Connection '';
        proxy_set_header Transfer-Encoding '';

        # 传递必要的请求头信息
        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;

        # 反向代理到本地Ollama服务
        proxy_pass http://localhost:11434/api/;
    }
}

关键参数说明

  • proxy_buffering off:这是解决流式超时的核心配置。Nginx默认会缓存后端响应内容,直到缓冲区满或响应结束才发送给客户端,禁用后会实时转发Ollama的流式输出,避免因缓存导致的超时。
  • proxy_http_version 1.1 + proxy_set_header Connection '':HTTP/1.1支持分块传输编码,清空Connection头可避免Nginx复用连接时的协议兼容问题。
  • proxy_read_timeout 300s:设置后端响应的读取超时时间,单位为秒(注意Nginx的超时参数单位默认是秒,无需写毫秒值)。
  • proxy_set_header Transfer-Encoding '':确保分块传输的响应头正确传递,避免Nginx修改头信息导致客户端无法解析流式内容。

额外排查步骤

  1. 验证配置生效:执行nginx -t检查配置语法,无误后执行nginx -s reload重新加载配置。
  2. 确认Ollama监听范围:确保Ollama服务监听127.0.0.1(本地调用正常则无需修改),同时云服务器防火墙允许Nginx访问11434端口。
  3. 检查客户端请求:确保调用/api/generate接口时使用POST方法,且Content-Type设为application/json,错误的请求格式可能导致后端迟迟不响应引发超时。

内容的提问来源于stack exchange,提问作者user824624

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:40:01