proxy_busy_buffers_size是proxy_buffers中划出的“正在发送、尚未确认”数据配额,需配合proxy_buffering on使用,设错会导致502或卡顿;须按proxy_buffers总量比例设置(如8 128k配256k),且不低于单块大小、不超过总量1/2,并同步调优proxy_buffer_size、超时等参数。

proxy_busy_buffers_size 不是独立配置的“繁忙缓冲区”,而是从 proxy_buffers 总内存中划出的一块“正在发送、尚未确认”的数据配额。它必须配合 proxy_buffering on 使用,设错会直接导致后端写阻塞、响应卡顿或 502 错误。
先确认 buffering 是否真正启用
这个参数只在 proxy_buffering on; 时生效。默认虽为 on,但常见失效场景包括:
- location 块里写了
proxy_buffering off;,覆盖了上级配置 - 后端响应头含
X-Accel-Buffering: no(可通过curl -I检查) - 启用了
proxy_cache或proxy_pass_request_headers off等间接影响缓冲行为的指令
务必在对应 location 中显式写入 proxy_buffering on;,并验证响应头是否含 Content-Length 或无 X-Accel-Buffering 头。
按 proxy_buffers 总量比例设置
它不是随便填个数字,而是必须与 proxy_buffers 协同计算:
- 若
proxy_buffers 8 128k;(总量 1MB),推荐proxy_busy_buffers_size 256k;或512k; - 若
proxy_buffers 16 256k;(总量 4MB),推荐proxy_busy_buffers_size 1m;或2m; - 底线:不低于单块 buffer 大小(如 128k),且不超过总量的 1/2
设太小(如仍用默认 8k)会导致刚收几 KB 就停读上游;设太大(如超总量 2/3)则空闲 buffer 不足,多连接时抢不到资源。
结合响应类型微调
不同业务对“边收边发”的节奏要求不同:
- SSR 页面(HTML 约 100KB):用
proxy_buffers 8 128k;+proxy_busy_buffers_size 256k;,再配proxy_read_timeout 90; - 大 JSON/API 导出(2–5MB):用
proxy_buffers 16 256k;+proxy_busy_buffers_size 2m; - 视频/安装包等 ≥10MB 场景:建议直接
proxy_buffering off;,此时该参数完全不生效,避免缓冲反成瓶颈
必须同步检查的关键项
单独调这个参数几乎无效,还需确保:
-
proxy_buffer_size足够装下响应头(如含 JWT 或长 Cookie,可设为32k;) -
proxy_read_timeout和send_timeout合理(如300;和60;),避免慢连接长期占着 busy 缓冲区 - 单位用小写(
128k合法,128kb会被静默忽略) - 修改后执行
nginx -t && nginx -s reload,再用curl -I和 error.log 验证是否真起效


















