$request_length
Переменная $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 в случаях, когда тело отсутствует.