$request_length

Переменная $request_length возвращает общий размер тела запроса клиента в байтах. — NGINX Core (HTTP)

$request_length NGINX Core (HTTP)

Описание

Переменная $request_length в NGINX содержит количество байт тела запроса клиента, включая заголовки, а также любые данные, отправленные клиентом в составе запроса (обычно в POST‑запросах). Эта переменная особенно полезна для мониторинга размера входящих запросов и для применения ограничения скорости на основе размера запроса. NGINX устанавливает значение $request_length при разборе входящего запроса. Оно, как правило, заполняется в процессе обработки запросов в контекстах server и location. Зафиксированный размер — это общая длина запроса, подсчитываемая в байтах. Типичные значения этой переменной сильно различаются в зависимости от характера приложения; распространённые размеры могут варьироваться от 0 байт для простых GET‑запросов без тела до нескольких килобайт для сложных POST‑запросов, содержащих формы или загрузки файлов. Эта переменная может быть полезна в ситуациях, когда нужно реализовать меры безопасности для отклонения чрезмерно больших тел запросов или отслеживания пропускной способности, потребляемой клиентскими запросами. Администраторы могут устанавливать ограничения на основе этой переменной для оптимизации производительности сервера и эффективного управления ресурсами.

Пример конфига

http {
    server {
        listen 80;
        location /upload {
            client_max_body_size 1M;
            if ($request_length > 1048576) {
                return 413;
            }
        }
    }
}

Подсистема

http

Кэшируется

Нет

Контексты

http, server, location, if

Переменная $request_length применима только к POST-запросам; для GET-запросов она обычно возвращает 0.

Неправильная интерпретация этой переменной может привести к ошибочному применению ограничений на основе метода запроса GET в случаях, когда тело отсутствует.