client_body_timeout
Директива `client_body_timeout` устанавливает ограничение по времени на чтение тела запроса клиента.
Описание
Директива client_body_timeout задаёт значение таймаута, которое определяет, как долго сервер будет ожидать отправки клиентом полного тела запроса. Это включает POST и PUT запросы, где тело запроса может быть объёмным. Если клиент не отправит полное тело в течение указанного времени, NGINX закроет соединение и вернёт ошибку 408 Request Timeout. Этот таймаут помогает эффективно управлять ресурсами сервера, предотвращая зависшие соединения.
Эту директиву можно использовать в различных контекстах: http, server и location, что делает её универсальной для настройки разных областей обработки запросов. Она принимает один аргумент — длительность таймаута, обычно указываемую в секундах или в формате, понятном ngx_time_t, например '30s', '1m' и т.д. Правильная настройка таймаута важна, чтобы не допустить монополизации ресурсов сервера медленными клиентами, особенно при высокой нагрузке. Важно отметить, что конфигурации, заданные в более специфичном контексте (например, location), переопределяют настройки, заданные в более общем контексте (например, http).
Пример конфига
http {
client_body_timeout 30s;
server {
location /upload {
client_body_timeout 5s;
}
}
}Установка слишком малого таймаута может привести к нежелательным ошибкам 408 Request Timeout для клиентов с медленным соединением или тех, кто отправляет большие объёмы данных.
Если не задано, значение по умолчанию — 60 секунд, что может быть не оптимально для всех приложений, особенно при обработке крупных загрузок.