client_body_buffer_size

Директива `client_body_buffer_size` задаёт размер буфера для чтения тела запроса клиента в память.

Синтаксисclient_body_buffer_size size;
По умолчанию16k
Контекстhttp, server, location
Аргументы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, это может привести к непредвиденному поведению при обработке больших запросов.

← Ко всем директивам