2010-11-25 20 views
7

Estamos utilizando nginx como un proxy inverso para controlar y registrar el acceso a una aplicación de servicio web Clojure (Java).nginx: ¿Es posible capturar encabezados de respuesta en el registro de acceso cuando se usa nginx como un proxy inverso?

Somos capaces de generar un access_log y capturar los encabezados entrantes utilizando nginx muy bien. Nuestra aplicación Clojure registra la actividad a través de log4j. El problema es que no podemos hacer coincidir una entrada en el access_log con una entrada generada por la aplicación.

La aplicación responde al acceso enviando encabezados de respuesta al igual que un cuerpo. Podemos cambiar libremente estos encabezados de respuesta. Mi idea inicial era generar un UUID que correspondiera a todas y cada una de las solicitudes de servicios web y enviarlas de vuelta al usuario dentro del encabezado de respuesta X-Uuid. Mi pensamiento era que podía capturar esta respuesta mediante la creación de una costumbre 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'; 

es el aspecto de nginx puede capturar las cabeceras de las peticiones entrantes, pero no respuestas salientes (verifiqué esto substituyendo $http_x_uuid con $http_content_type).

So! ¿Hay alguna manera de vincular mis entradas access_log y mis entradas log4j al capturar los encabezados de respuesta salientes usando nginx? ¿Hay una mejor manera? Prefiero no tener que confiar en que los usuarios generen sus propios UUID.

¡Muchas gracias!

Respuesta

Cuestiones relacionadas