Мы используем nginx в качестве обратного прокси-сервера для управления и регистрации доступа к приложению веб-службы Clojure (Java).
Мы можем сгенерировать 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.
Большое спасибо!