client_body_in_file_only

指令 `client_body_in_file_only` 控制请求体是否仅保存到文件中。 — NGINX HTTP Core

client_body_in_file_only
httpserverlocation
语法client_body_in_file_only on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数1

说明

NGINX 中的 `client_body_in_file_only` 指令用于在 `client_body` 被设置为文件时,控制客户端请求体的存储行为。该指令可指定请求体是否应仅保存为文件,而不是直接在内存中处理。 该指令接受 `on` 或 `off` 参数:`on` 允许将请求体保存到临时文件,而 `off` 则不使用文件存储,而是在内存中直接管理请求体。 启用后,在需要处理大文件上传的场景中尤其有用,因为它能防止服务器消耗过多内存,从而避免性能下降。此外,临时文件还可以作为异步处理大型请求体的机制,从而更高效地利用资源。该指令可以放在 `http`、`server` 或 `location` 上下文中,根据应用架构需要提供灵活的配置。 但是,必须确保用于存储文件的目录具有足够的权限,以避免意外错误。当该指令关闭时,任何带请求体的请求都将在内存中处理,这可能不适用于大型请求体,从而在高负载情况下增加耗尽服务器资源的风险。

配置示例

location /upload {
    client_body_in_file_only on;
    client_max_body_size 10M;
    # other configurations
}

使用 `client_body_in_file_only on` 需要适当的文件系统权限来写入临时文件,如果未正确配置,可能会导致错误。

使用 NGINX 对请求体进行后续处理时,应考虑文件存储,因为这可能会改变你处理上传或表单的方式。