client_body_in_single_buffer
Директива 'client_body_in_single_buffer' управляет тем, читается ли тело запроса клиента в один буфер. — NGINX HTTP Core
Описание
Директива 'client_body_in_single_buffer' используется для оптимизации того, как NGINX обрабатывает тело запроса клиента при обработке запросов. Когда эта директива установлена в 'on', полное тело запроса читается в один буфер, что может снизить накладные расходы на управление несколькими буферами, особенно для небольших тел запросов. Это может привести к повышению производительности в сценариях, когда сервер обрабатывает много небольших запросов. С другой стороны, когда директива установлена в 'off', NGINX может выделять несколько буферов для тела запроса при определённых условиях, что позволяет более гибко обрабатывать большие входящие тела, но может добавить дополнительную нагрузку на управление этими буферами. Использование единого буфера может быть полезно для приложений с низкой задержкой, где критична быстрая обработка тел запросов. При настройке этой директивы важно учитывать требования вашего приложения, особенно в отношении ожидаемых размеров полезной нагрузки и баланса между использованием памяти и производительностью. Параметр этой директивы — простой флаг, который можно включить или отключить, и он может быть определён в контекстах http, server или location. Это простой способ настройки поведения NGINX при обработке тел запросов в соответствии с характеристиками рабочей нагрузки обслуживаемых приложений.
Пример конфига
server {
listen 80;
server_name example.com;
client_body_in_single_buffer on;
location /submit {
# additional configuration here
}
}Если размер тела запроса превышает настроенный размер буфера, включение этой директивы всё равно может привести к переполнению и к некорректной обработке запросов.
Использование этой директивы в контексте location может не дать ожидаемого эффекта, если она переопределяется в вышестоящем контексте. Убедитесь, что конфигурации согласованы между контекстами.