Almacenar nombre de usuario en registros nginx

10

¿Hay alguna forma de almacenar el nombre de usuario o la identificación de usuario en los registros de nginx? Intenté insertar $ remote_user en la directiva log_format pero parece que no funciona.

nishant
fuente

Respuestas:

10

Si, esto es posible. Sin embargo, dado que no está utilizando la autenticación básica HTTP, necesitará su aplicación para decirle a Nginx cuál es el nombre de usuario actual. Agregue un encabezado de respuesta a lo largo de las líneas de:

X-Username: nishant

Luego, en su log_formatdirectiva, use la variable $sent_http_x_username. Este comportamiento está documentado aquí: http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER

También recomiendo eliminar este encabezado adicional de la respuesta antes de enviarlo al cliente. Puede hacerlo con NginxHttpHeadersMoreModule .

more_clear_headers 'X-Username';
Puntilla
fuente
¿Me puede decir cómo agregar un encabezado de respuesta?
nishant
@nishant Eso depende completamente de tu código. Tendrá que escribir algo o modificar lo que tiene que generar el nombre de usuario en el encabezado de respuesta.
Brad
La aplicación web está basada en django.
nishant
@nishant No he escrito nada con Django, así que no puedo darle consejos específicos, pero parece que es compatible con middleware. Escribiría un módulo de middleware que se encargue de agregar el encabezado adicional.
Brad