1. Закрепите виртуальный сервер и формат
Укажите узел, контейнер при наличии, версию Nginx и виртуальный сервер запроса. Пример относится к combined; фактический log_format нужно прочитать из сохранённой конфигурации. Пользовательский JSON, вывод ingress-контроллера и формат балансировщика не считаются combined автоматически. Сохраните назначение access_log и правило, по которому запрос попадает в выбранный журнал.
2. Отберите уже зарегистрированные запросы
В копии файла выберите интервал, URI и доступные признаки клиента. Не начинайте с одного IP, если между клиентом и сервером есть прокси. Сохраните строки целиком, а при наличии реального request ID добавьте его в условия. Методика не создаёт новый HTTP-запрос и не меняет журналирование. Установите, не лежит ли часть периода в ротированном файле.
3. Разберите строку combined
Иллюстрация показывает GET учебного reports/demo.csv, статус 200 и 12500 байт тела ответа. Это не общий размер объекта и не число байтов заголовков. Поле demo соответствует remote_user в показанной форме, а DemoClient — заявленному user-agent. Дефис не является доказательством отсутствия аутентификации во всём приложении. Часовой сдвиг +0300 относится к строке и должен учитываться при связи с другими журналами.
4. Разделите ответ и бизнес-результат
Access log фиксирует обработанный запрос, но успешный HTTP-код не доказывает, что человек прочитал файл или завершил нужную операцию. Частичная выдача, повторные обращения и поведение приложения требуют отдельного контекста. Адрес remote_addr зависит от развёртывания и настройки реального адреса. Не идентифицируйте сотрудника только по этому полю и не приравнивайте 12500 к объёму подтверждённой утечки.
5. Найдите причину и владельца
Для отказа сопоставьте тот же запрос с error_log и журналом приложения, а при проксировании — с backend. Сверьте URI после внутренних переходов, метод, время и доступный сквозной идентификатор. Если расследуется скачивание, определите объект и его версию, техническую identity и разрешённый способ доступа. Выводы о содержимом и получателе оформляйте отдельно от факта ответа Nginx.
6. Если строки нет
Проверьте нужный virtual host, фактическое назначение, условное отключение регистрации, ротацию и задержку буферизованной записи. Внутренний redirect может изменить контекст, в котором заканчивается обработка и выполняется логирование. Затем сверяйте копию с исходным хранилищем. Отсутствие строки в одном файле не доказывает, что запрос не дошёл ни до одного узла.