核心是关闭 proxy_buffering off 并在 location 块中精准配置,同步禁用 proxy_cache off、proxy_request_buffering off,启用 chunked_transfer_encoding on 和 tcp_nodelay on,调优超时与响应头透传。

要让 Nginx 对特定接口实现无缓冲流式传输,核心是**在对应 location 块中精准关闭缓冲机制,并确保协议语义与头信息正确透传**。不是全局调优带宽或压缩,而是打破 Nginx 默认“攒够再发”的行为。
必须关闭 proxy_buffering
这是最关键一步,其他配置都依赖它生效:
- 该指令只能写在 location 块内,不能只放在 http 或 server 层级
- 例如针对 SSE 接口 /api/stream 或 AI 流式响应 /v1/chat/stream,需单独定义 location
- 配置示例:proxy_buffering off;
同步禁用关联缓冲与缓存
proxy_buffering 关闭后,还需显式关闭配套机制,避免隐式拦截:
- proxy_cache off; —— 防止把流式响应误当静态内容缓存
- proxy_request_buffering off; —— 确保客户端 POST/PUT 请求体不被 Nginx 先收全再转发(对上传流、SSE POST 场景至关重要)
- 这两项建议始终与 proxy_buffering off 同时出现,生产环境不建议省略
启用分块传输并优化 TCP 行为
让底层网络配合流式语义,减少延迟和粘包:
- chunked_transfer_encoding on; —— HTTP 分块编码是流式响应的协议基础
- tcp_nodelay on; —— 关闭 Nagle 算法,小数据包立即发出
- proxy_read_timeout 300; —— 设置足够长的读超时(如 5 分钟),防止长连接被误断
- 可选调优:proxy_buffer_size 1k; proxy_buffers 4 1k;,进一步降低初始延迟感
检查后端响应头与关键透传
Nginx 是通道,两端配合才能跑通:
- 确认后端已返回正确的 Content-Type,例如 text/event-stream(SSE)或 application/json + Transfer-Encoding: chunked
- WebSocket 必须配置:proxy_set_header Connection "upgrade"; 和 proxy_set_header Upgrade $http_upgrade;
- 常规流式接口也建议透传:proxy_set_header X-Real-IP $remote_addr;、Host $host;,避免后端因头缺失拒绝请求











