Stockage du nom d'utilisateur dans les journaux nginx

10

Existe-t-il un moyen de stocker le nom d'utilisateur ou l'ID utilisateur dans les journaux nginx. J'ai essayé d'insérer $ remote_user dans la directive log_format mais cela ne semble pas fonctionner.

nishant
la source

Réponses:

10

Oui, c'est possible. Cependant, comme vous n'utilisez pas l'authentification de base HTTP, vous aurez besoin de votre application pour indiquer à Nginx quel est le nom d'utilisateur actuel. Ajoutez un en-tête de réponse dans le sens de:

X-Username: nishant

Ensuite, dans votre log_formatdirective, utilisez la variable $sent_http_x_username. Ce comportement est documenté ici: http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER

Je recommande également de supprimer cet en-tête supplémentaire de la réponse avant de l'envoyer au client. Vous pouvez le faire avec le NginxHttpHeadersMoreModule .

more_clear_headers 'X-Username';
Brad
la source
Pouvez-vous me dire comment ajouter un en-tête de réponse?
nishant
@nishant Cela dépend entièrement de votre code. Vous devrez écrire quelque chose ou modifier ce que vous avez pour sortir le nom d'utilisateur dans l'en-tête de réponse.
Brad
L'application Web est basée sur Django.
nishant
@nishant Je n'ai rien écrit avec Django, je ne peux donc pas vous donner de conseils spécifiques, mais il semble qu'il prend en charge le middleware. J'écrirais un module middleware qui prend en charge l'ajout de l'en-tête supplémentaire.
Brad