proxy_request_buffering 控制 Nginx 是否缓冲客户端请求体:设为on(默认)时完整缓存后再转发,适合需重试或校验的场景;设为off时边收边转,适用于大文件流式上传、AI推理等实时处理场景,但要求后端支持流式读取且需配套调优超时与缓冲参数。

proxy_request_buffering 控制 Nginx 是否对客户端发来的请求体(request body)进行缓冲,它影响的是“上行”数据流——即从客户端到后端服务器的请求过程,而非响应阶段。
作用与触发场景
当客户端上传大文件、提交长表单或使用 chunked transfer encoding 时,Nginx 默认会将整个请求体先缓存在内存或磁盘中,再一次性转发给后端。这个行为由 proxy_request_buffering 决定:
- 设为 on(默认值):Nginx 缓冲完整请求体,确保后端收到的是完整、可重放的请求;适合需要重试、鉴权、日志记录或 WAF 检查的场景。
- 设为 off:Nginx 边收边转,不等待请求体收完就向后端透传数据流;适用于流式上传、避免内存堆积,但后端无法重读请求体,且某些模块(如 limit_req、auth_request)可能失效。
与 proxy_buffering 的关键区别
别混淆这两个指令:
- proxy_buffering 管响应(response)——控制 Nginx 如何接收并转发后端返回的数据;
- proxy_request_buffering 管请求(request)——控制 Nginx 如何接收并转发客户端发送的数据。
二者互不影响,可独立开关。例如:可以关闭请求缓冲(off)以支持实时视频流上传,同时开启响应缓冲(on)来优化下游用户体验。
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
配置方式与生效范围
该指令支持在 http、server 或 location 块中设置:
location /upload/ {
proxy_pass http://backend;
proxy_request_buffering off; # 关键:禁用请求体缓冲
client_max_body_size 2G;
}注意:proxy_request_buffering off 仅对含请求体的请求(POST/PUT 等)生效;GET 或 HEAD 请求不受影响。若后端依赖完整请求头+体做校验(如签名验证),关闭此选项可能导致失败。
相关联的缓冲参数
即使关闭了 proxy_request_buffering,以下参数仍起作用:
- client_body_buffer_size:决定内存中暂存请求体的大小(默认 8k 或 16k);超出则写入临时文件。
- client_body_temp_path:指定请求体临时文件存放路径。
- client_max_body_size:限制客户端请求体最大尺寸,超限返回 413。
这些参数共同决定了 Nginx 处理大请求体时的资源占用和 I/O 行为,无论是否启用请求缓冲。

















