Назад | Перейти на главную страницу

Регистрация размера запроса / ответа в access_log Nginx

Мне нужно зарегистрировать размер запроса / ответа (тело + заголовки) в access_log. Есть идеи, как это сделать в nginx? В apache это можно сделать с помощью% I ..% O ...

Взято из ngx_http_log_module:

$bytes_sent: количество байтов, отправленных клиенту

$connection: серийный номер подключения

$connection_requests: текущее количество запросов, сделанных через соединение (1.1.18)

$msec: время в секундах с точностью до миллисекунд на момент записи журнала

$pipe: «P», если запрос был конвейерным, «.» в противном случае

$request_length: длина запроса (включая строку запроса, заголовок и тело запроса)

$request_time: время обработки запроса в секундах с точностью до миллисекунд; время, прошедшее между чтением первых байтов от клиента и записью журнала после того, как последние байты были отправлены клиенту

$status: статус ответа

$time_iso8601: местное время в стандартном формате ISO 8601

$time_local: местное время в формате общего журнала

Я бы использовал эти 2 параметра в nginx.conf:

log_format perf '$ remote_addr $ status - $ request_length $ bytes_sent'

Согласно документации ( http://wiki.nginx.org/HttpLogModule) $request_length - это только тело запроса, но я подтвердил, что он включает в себя все заголовки (у меня есть несколько запросов GET с большим количеством файлов cookie, которые в общей сложности имеют более 1400 байт). $bytes_sent это общее количество байтов, отправленных клиенту (в отличие от $body_sent который совместим с apache% B).