$content_length
Переменная $content_length содержит значение HTTP‑заголовка 'Content-Length', отправленного клиентом, представляющее размер тела запроса в байтах. — NGINX Core (HTTP)
Описание
Переменная $content_length в NGINX содержит длину тела запроса, указанную в HTTP‑заголовке 'Content-Length'. Она задаётся только для запросов, в которых этот заголовок присутствует, обычно при методах POST и PUT. Если клиент не отправил заголовок 'Content-Length', переменная будет пустой. Эта переменная в первую очередь полезна для обработки запросов с известным размером содержимого, позволяя применять условную логику в зависимости от размера поступающих данных. При обработке запросов NGINX устанавливает $content_length после разбора заголовков входящего запроса. Если заголовок 'Content-Length' указан, переменная будет содержать числовое значение; однако если заголовок отсутствует или имеет неверный формат, $content_length не будет отражать корректный размер. На практике допустимые значения этой переменной — строго неотрицательные целые числа, указывающие количество байт в теле запроса. Разработчики часто используют эту переменную для установки ограничений по размеру, логирования размеров запросов или условной обработки больших полезных нагрузок более эффективно.
Пример конфига
http {
server {
listen 80;
location /upload {
if ($content_length > 10000) {
return 413; # Request entity too large
}
}
}
}Подсистема
httpКэшируется
ДаКонтексты
http, server, location, ifУбедитесь, что заголовок 'Content-Length' действительно присутствует; иначе $content_length будет пустым.
$content_length полезен только для методов, таких как POST и PUT, где обычно присутствует тело; для запросов GET он не будет установлен.
Не все клиенты корректно используют заголовок 'Content-Length', что может привести к неожиданным результатам. При его отсутствии переменная не вернёт размер.