Мы используем nginx в качестве обратного прокси для управления и регистрации доступа к веб-сервису Clojure (Java).nginx: Можно ли захватить заголовки ответов в журнале доступа при использовании nginx в качестве обратного прокси?
Мы можем сгенерировать access_log
и захватить входящие заголовки, используя nginx просто отлично. Наше приложение Clojure регистрирует активность через log4j. Проблема заключается в том, что мы не можем сопоставить запись в access_log
с записью, созданной приложением.
Приложение отвечает на доступ, отправляя заголовки ответов, а также тело. Мы можем свободно изменять эти заголовки ответов. Моя первоначальная мысль заключалась в том, чтобы сгенерировать UUID, который соответствует каждому запросу веб-службы и отправить его обратно пользователю в заголовке ответа X-Uuid
. Моя мысль была, что я мог бы захватить этот ответ путем создания пользовательского log_format
:
log_format lt-custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" $request_time $http_x_uuid';
Это выглядит как Nginx может захватить заголовки во входящих запросах, но не исходящие ответы (я проверил это, заменив $http_x_uuid
с $http_content_type
).
Итак! Есть ли способ связать мои access_log
и мои записи log4j, захватывая исходящие заголовки ответов, используя nginx? Есть ли способ лучше? Я бы предпочел не полагаться на пользователей, генерирующих свои собственные UUID.
Большое спасибо!