应按响应特征分档设置proxy_buffers:中小响应用8×256k或16×128k(总量约2MB),中大响应用32×256k(总量8MB)并限流;单块大小需为4KB整数倍且匹配后端推送块;proxy_busy_buffers_size设为总量1/4~1/2且不低于单块大小。

直接用 proxy_buffers 指令设置数量和单块大小,格式是 proxy_buffers 数量 大小,例如 proxy_buffers 16 128k 表示为每个请求分配 16 块缓冲区,每块 128KB。
按响应体大小分档设数量
数量不能拍脑袋定,要匹配你后端实际返回的典型体积:
- 中小响应(API JSON、SSR 首屏、静态资源,50–500KB):用
proxy_buffers 8 256k或16 128k,总量控制在 2MB 左右 - 中大响应(报表导出、模板渲染、镜像回源,1–50MB):用
proxy_buffers 32 256k,总量 8MB,但建议同步加限流或改用proxy_buffering off - 高频小包(IoT 上报、心跳):用
proxy_buffers 16 16k,单块贴合消息粒度,避免跨块拷贝
数量与单块大小要协同匹配
只调数量不看单块大小,容易出问题:
- 后端常推送 256KB 块 → 选
proxy_buffers 8 256k比32 64k更稳,减少 buffer 切换开销 - 单块大小建议为 4KB 整数倍(如 128k、256k),利于内存页对齐和 TLB 命中
- 严禁堆数量:比如
proxy_buffers 64 4m,单请求就占 256MB,10 并发就能压垮内存
必须配合 proxy_buffering 显式开启
proxy_buffers 只在 proxy_buffering on 时生效:
- 默认虽为 on,但 location 块里若写了
proxy_buffering off,整个配置失效 - 建议在 http 或 server 块里显式写上
proxy_buffering on; - 可用
curl -I检查响应头是否含X-Accel-Buffering: yes来确认是否生效
别忘了设好 busy 区上限
数量定了,还要划出“正在发给客户端但还没清空”的那部分上限:
-
proxy_busy_buffers_size必须 ≥ 单块大小,且建议为总量的 1/4~1/2 - 例如
proxy_buffers 16 128k(总量 2MB),推荐proxy_busy_buffers_size 1m - 设太小会卡住后端读取,导致延迟飙升甚至 502;设太大则空闲 buffer 不足,影响并发接收


















