proxy_request_buffering off 是优化超大文件上传内存占用最直接有效的手段,通过让 nginx 边收边转避免整体会话体缓存,需在 location 块中显式配置并配合 client_max_body_size 等超时参数及 temp_path 优化。

proxy_request_buffering off 是优化超大文件上传内存占用最直接有效的手段,核心在于让 Nginx “边收边转”,避免整体会话体缓存。
默认开启时,Nginx 会先把整个请求体(比如 2GB 视频)完整读入内存或临时磁盘文件,再统一转发给后端。这不仅容易触发 OOM、写满 client_body_temp_path,还会显著拖慢首字节响应时间,尤其在弱网或重传频繁场景下。
关闭后,Nginx 不再等待全部数据到达,而是收到一块就立即转发一块。内存占用基本恒定(仅维持 TCP 窗口和协议头开销),与文件大小无关,对高并发大上传场景尤为关键。
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
必须在 location 块中显式配置
它不是全局开关,也不能写在 http 或 server 块里。要针对上传路径单独启用:
location /api/upload {
proxy_pass http://backend;
proxy_request_buffering off;
client_max_body_size 20G;
client_header_timeout 3600;
client_body_timeout 3600;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
配套参数缺一不可
-
client_max_body_size:必须设为足够大(如20G或0表示无限制),否则会在缓冲前就返回 413 -
client_header_timeout和client_body_timeout:延长客户端上传过程中的空闲等待,防止中途断连 -
proxy_read_timeout和proxy_send_timeout:需同步拉长,确保后端有足够时间处理并返回响应 -
client_body_temp_path:即使关闭 buffering,Nginx 在 SSL 解密重构造等极少数路径仍可能用到该目录,务必确认其挂载在 SSD 上、空间充足、inode 富余
注意区分 proxy_bufferingproxy_request_buffering 控制请求体(即客户端发来的数据)是否缓冲;proxy_buffering 控制响应体(即后端返回的数据)是否缓冲——两者完全独立,不要混淆。上传优化只关前者,后者按响应类型另行配置(如流式接口需关 proxy_buffering off)。
不复杂但容易忽略










