nginx: возможно ли захватить заголовки ответов в журнале доступа при использовании nginx в качестве обратного прокси-сервера? - PullRequest
7 голосов
/ 25 ноября 2010

Мы используем 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.

Большое спасибо!

1 Ответ

13 голосов
/ 25 ноября 2010

$ http_x_uuid - заголовок, отправленный клиентом. Заголовок ответа, отправляемый восходящим потоком, - $ upstream_http_x_uuid

http://wiki.nginx.org/HttpUpstreamModule#.24upstream_http_.24HEADER

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...