$sent_http_content_length

Переменная $sent_http_content_length возвращает значение заголовка Content-Length, отправленного в HTTP-ответе. — NGINX Core (HTTP)

$sent_http_content_length NGINX Core (HTTP)

Описание

Когда NGINX обрабатывает запрос, он собирает различные заголовки ответа, которые будут отправлены клиенту. Переменная $sent_http_content_length специально фиксирует заголовок Content-Length, который указывает размер тела ответа в байтах. Эта переменная устанавливается во время фазы обработки запроса и обычно содержит числовое значение, представляющее длину ответа, сформированного сервером, либо может быть пустой, если длина ответа неизвестна или вместо конкретного значения Content-Length используется chunked transfer encoding. Заголовок Content-Length важен для коммуникаций по HTTP/1.1, поскольку он позволяет клиенту точно знать, сколько байт ожидать в теле ответа. В сценариях, где генерируется динамический контент, NGINX может не определить длину содержимого до тех пор, пока тело полностью не будет обработано. Поэтому использование этой переменной может помочь в ситуациях, требующих специальной обработки длины ответа, например для условного логирования или изменения ответа на основе размера содержимого.

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

server {
    listen 80;
    location / {
        add_header X-Content-Length $sent_http_content_length;
        proxy_pass http://backend;
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Если ответ использует кодирование чанками, $sent_http_content_length будет пустым.

Убедитесь, что к переменной обращаются после того, как заголовки ответа были установлены, чтобы избежать неожиданных результатов.