proxy_busy_buffers_size 控制Nginx在接收后端响应但未发完时的缓冲区内存上限,需配合proxy_buffering on及proxy_buffers使用,推荐设为buffers总量的1/4–1/2且不低于单块大小。

proxy_busy_buffers_size 的核心作用是控制 Nginx 在“已接收后端响应、但尚未全部发送给客户端”阶段所允许占用的最大内存,它不决定能收多少数据,只管“收了但没发完”的那部分缓冲区上限。调优的关键在于让 Nginx 既能持续从后端快速读取(避免卡住上游),又不因忙区占满而阻塞新数据流入。
明确前提:必须启用 proxy_buffering
该参数仅在 proxy_buffering on 时生效。若关闭缓冲(如流式日志、SSE 场景),它完全不参与工作,无需调整。确认配置中已显式开启:
- proxy_buffering on;
- 同时检查是否未被 location 级别覆盖为 off
与 proxy_buffers 总量按比例设定
它不是独立参数,必须和 proxy_buffers number size 协同。推荐值为 buffers 总量的 1/4 到 1/2,且不低于单块 buffer 大小:
- 若设 proxy_buffers 8 128k;(总量 1MB),busy 值建议 128k–256k
- 若设 proxy_buffers 16 256k;(总量 4MB),busy 值可设 1m–2m
- 默认值为 proxy_buffer_size × 2(通常 8k 或 16k),对大响应明显偏小,极易触发假阻塞
区分响应类型,避免一刀切
大载荷不等于同一模式,需结合业务特征微调:
- 首屏 HTML / SSR 页面(80–300KB):用 proxy_buffers 8 256k; + proxy_busy_buffers_size 256k;
- 大文件下载(几十 MB 起):增大 buffers 单块大小(如 512k),busy 值同步设为 512k–1m,并确保 proxy_temp_file_write_size ≥ 128k 以减少磁盘碎片
- 响应头较大(含长 Cookie、Vary、自定义 Header):单独调高 proxy_buffer_size(如 16k),但 busy 值仍按 body 缓冲逻辑计算,不必同步加
验证是否真正生效
reload 配置后不能只看服务是否启动,要观察两个关键信号:
- 用 curl -I http://your-site/ 检查响应头:
— 若含 X-Accel-Buffering: no,说明 buffering 已被关闭,busy 参数无效;
— 若有准确 Content-Length 且无 Transfer-Encoding: chunked,说明缓冲正常工作 - 监控 Nginx error log 中是否出现 upstream prematurely closed connection 或 client intended to send too large body 类报错,可能暗示 busy 区过早饱和或 buffers 不足



















