1. Паспорт источника
Определите версию и сборку Nginx, процесс или контейнер, virtual host и момент ошибки. Сохраните действовавшее назначение error_log и порог уровня. Этот профиль охватывает поиск по фактическому сообщению, а не универсальную JSON-схему. Новые возможности текущей документации не объявляются доступными в установленной версии без проверки.
2. Проверьте маршрут записи
Установите, пишет ли процесс в файл, stderr, syslog или другое назначение. При контейнерном запуске оболочка платформы может добавить собственное время и поля. Сохраните исходный текст отдельно от этих добавлений. Нужен порог, действовавший при ошибке: текущая конфигурация после исправления не объясняет полноту старого журнала. Включение debug не является частью этой процедуры чтения.
3. Отбор и иллюстрация
Авторская заметка показывает только источник и запрос /api/report; она не выдана за реальную строку Nginx. Найдите фактическое сообщение рядом с соответствующим access log и сохраните доступные детали: процесс, соединение, server, request и upstream. Не требуйте эти поля от всех типов ошибок: сообщение запуска и сообщение конкретного запроса могут иметь разный контекст.
4. Уточните этап отказа
Разделите установление подключения к backend, ожидание данных, обработку самого запроса и выдачу клиенту. Сопоставляйте сообщение с реальной конфигурацией прокси и журналом backend. Например, proxy_read_timeout описывает интервал между последовательными чтениями, поэтому не превращайте его значение в гарантированную максимальную длительность всей операции. Один 504 либо 502 не устанавливает единственную причину без этого контекста.
5. Проверьте причину на соседнем слое
Свяжите запрос по времени и существующему request ID, если он передаётся. На backend проверьте соответствующую операцию, нагрузку и доступный результат. Разделите наблюдаемую сетевую ошибку, недоступность процесса и отказ приложения. Если данные двух слоёв расходятся, сохраните расхождение и временные шкалы вместо выбора удобного объяснения. Изменение тайм-аутов не выполняется автоматически по одной строке.
6. Если подходящего сообщения нет
Сверьте назначение, выбранный узел, ротацию, фильтр времени и порог severity. Более подробное событие могло не регистрироваться при действовавшем уровне. Проверьте, не вернул ли отказ upstream без локальной ошибки Nginx. Отсутствие error log не делает HTTP-запрос успешным и не исключает отказ приложения; зафиксируйте, какой слой действительно наблюдался.