$body_bytes_sent

Переменная $body_bytes_sent в NGINX содержит количество байт, отправленных клиенту в теле ответа, за исключением заголовков ответа. — NGINX Core (HTTP)

$body_bytes_sent NGINX Core (HTTP)

Описание

Переменная $body_bytes_sent является значимой метрикой, используемой при логировании и мониторинге производительности NGINX. Она фиксирует общий объём данных, отправленных клиенту, а именно байты, переданные в теле ответа. Эта переменная устанавливается в процессе обработки каждого запроса, после того как тело ответа сформировано и отправлено. Важно отметить, что переменная не учитывает отправленные заголовки, а только содержимое тела. Эта переменная особенно полезна при оценке производительности и вычислении потребления полосы пропускания. По мере обработки HTTP-запросов NGINX поддерживает аккумулятор переданных байт, который в конечном итоге даёт значение $body_bytes_sent. Типичные значения могут варьироваться от 0 (в случаях, когда запрос завершился ошибкой или тело не было отправлено) до любого произвольного размера в зависимости от характера ответа — небольшие для простых HTML-страниц или большие для загрузки файлов или потоковой передачи медиаконтента. На практике значение $body_bytes_sent помогает администраторам выявлять закономерности трафика, вовлечённость пользователей в контент и потенциальные области оптимизации в их приложениях. Логирование этой переменной позволяет анализировать использование полосы пропускания и диагностировать проблемы, связанные с медленными ответами, сопоставляя переданные байты с другими переменными, такими как время ответа и частота запросов.

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

log_format custom_format '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent';

access_log /var/log/nginx/access.log custom_format;

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

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

Помните, что $body_bytes_sent не включает заголовки; если вам нужен общий объём отправленных байт (включая заголовки), вам потребуется учитывать это отдельно.