proxy_request_buffering
指令 `proxy_request_buffering` 控制 NGINX 是否对代理请求缓冲请求主体。 — NGINX HTTP Core
proxy_request_buffering
httpserverlocation
语法proxy_request_buffering on | off;
默认值on
上下文http, server, location
模块NGINX HTTP Core
参数flag
说明
NGINX 中的 `proxy_request_buffering` 指令决定了代理请求的请求主体如何处理,具体来说是是否在发送到上游服务器之前进行缓冲。默认情况下,当启用 `proxy_request_buffering`(通常是启用状态)时,NGINX 会在将请求转发到上游服务器之前将整个请求主体读取到内存或临时文件中,取决于其大小。这使得 NGINX 能更有效地处理某些场景,例如在代理之前根据配置重写头部或修改请求数据。 当设置为 `off` 时,请求主体缓冲被禁用,这意味着数据会在从客户端接收时按流传递给上游服务器。这在处理大文件或流式传输的场景中很有用,在这些情况下缓冲是不高效或不切实际的。然而,如果处理不当,可能会增加加载时间,并使错误处理复杂化,因为上游服务器在完全接收客户端的数据之前可能无法获得完整的请求数据。此外,在高负载下禁用缓冲可能导致资源受限,因为请求主体将作为持续流处理,而不是像启用缓冲时那样作为整个块。
配置示例
location /upload {
proxy_pass http://backend;
proxy_request_buffering off;
}⚠
如果禁用缓冲,请确保上游服务器能够处理流式请求。
⚠
请注意,禁用请求缓冲可能会使错误处理变得复杂,并在高负载下影响性能。