Node.js 流式调用为什么在 Nginx 后面变成“一次性输出”
模型明明逐字输出,经过 Nginx 后却等几十秒一次性返回,最常见原因是代理缓冲。普通网页适合 buffering,但 SSE/流式文本通常需要关闭缓冲并延长 read timeout。
模型明明逐字输出,经过 Nginx 后却等几十秒一次性返回,最常见原因是代理缓冲。普通网页适合 buffering,但 SSE/流式文本通常需要关闭缓冲并延长 read timeout。
一、为什么会出现这个问题

- 错误可能由 Nginx、Cloudflare、应用网关、第三方平台或真正的模型上游任意一层返回。
- 代理 read timeout、buffering、连接复用等默认值并不适合 AI 长请求。
- 流式 SSE 在中间层被缓存、提前关闭或事件格式被改写。
- 只看客户端最后一行错误,无法判断真正的故障来源。
二、推荐的排查顺序
1. 确认错误来自哪一层
保留响应头、request id、Cloudflare Ray ID、Nginx access/error log 和应用日志,同一时间点对齐分析。
2. AI 路由单独配置
SSE、长文本、Agent、视频任务不要直接套普通网站的 timeout 和 buffering。对 /v1/ 等接口单独设置更容易维护。
3. 只对暂时性错误重试
502/503 等可以有限重试;401、403、参数错误等确定性问题不应该盲目重试。
三、可以直接复制的排查示例
location /v1/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_buffering off;
proxy_cache off;
gzip off;
proxy_read_timeout 600s;
}
四、使用建议
不要全站关闭 buffering。只对真正需要流式的 API 路由单独配置。
原创文章,作者:Codex中文网,如若转载,请注明出处:https://codex-zh.com/posts/nodejs-streaming-nginx-buffering/
相关文章
Cloudflare 1010、403、WAF 拦截,怎么区分是源站还是 Cloudflare
Cloudflare 可能在请求到达源站之前就拦截,因此源站 access log 里完全没有记录。排查这类问题要同时看 Cloudflare 返回特征和源站日志,而不是只看浏览器页面。
Codex 返回 JSON parse error 怎么办?中转站响应格式排查
围绕「Codex 返回 JSON parse error 怎么办」给出面向 Codex 用户的原理、配置、操作步骤、排查方法与常见问题,适合新手直接照着实践。
Codex 流式响应卡住不结束怎么办?SSE 事件和代理缓冲排查
围绕「Codex 流式响应卡住不结束怎么办」给出面向 Codex 用户的原理、配置、操作步骤、排查方法与常见问题,适合新手直接照着实践。
GPT-6 正式进入 ChatGPT:这次更新到底改变了什么?
更新日期:2026 年 10 月 9 日。本文结合 OpenAI 最新官方资料整理;涉及社区体验的内容会单独标注。