client_body_buffer_size

The `client_body_buffer_size` 指令设置读取客户端请求主体到内存时的缓冲区大小。 — NGINX HTTP Core

client_body_buffer_size
httpserverlocation
语法client_body_buffer_size size;
默认值16k
上下文http, server, location
模块NGINX HTTP Core
参数1

说明

`client_body_buffer_size` 指令指定 NGINX 用于读取客户端请求主体的缓冲区最大尺寸。如果请求主体超过此大小,NGINX 会将其写入临时文件,这有助于管理内存使用并通过允许更大上传而不耗尽内存资源来提高性能。该指令可以在 `http`、`server` 或 `location` 上下文中设置,能够根据特定应用需求灵活配置。 当收到请求主体时,NGINX 会将请求的大小与指定的 `client_body_buffer_size` 进行比较。如果大小在限制范围内,请求主体会缓存在内存中;否则会存储到磁盘文件中。对于处理文件上传或大载荷的应用来说,这一行为非常关键,因为设置合适的缓冲区大小可优化内存消耗和处理速度。该值可以用字节、千字节 (k)、兆字节 (m) 等指定,从而根据预期的请求大小进行精细调整。 该指令常与其他相关配置一起使用,例如 `client_max_body_size`,其指定客户端请求主体的总体最大允许大小。这进一步确保了资源得到适当管理,防止通过过大的上传滥用资源。

配置示例

http {
    client_body_buffer_size 32k;
}

将缓冲区大小设置得非常小时,可能导致对较大的请求体进行过多的磁盘写入,从而影响性能。

如果 `client_max_body_size` 低于 `client_body_buffer_size`,对于较大的请求可能会导致意外行为。