client_body_timeout

Директива `client_body_timeout` устанавливает ограничение по времени на чтение тела запроса клиента. — NGINX HTTP Core

client_body_timeout
httpserverlocation
Синтаксисclient_body_timeout time;
По умолчанию60s
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `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 секунд, что может быть не оптимально для всех приложений, особенно при обработке крупных загрузок.