Armazenando nome de usuário em logs nginx

10

Existe uma maneira pela qual o nome do usuário ou o ID do usuário possam ser armazenados nos logs do nginx. Tentei inserir $ remote_user na diretiva log_format, mas parece não funcionar.

nishant
fonte

Respostas:

10

Sim, isso é possível. No entanto, como você não está usando a autenticação básica HTTP, precisará do seu aplicativo informar ao Nginx qual é o nome de usuário atual. Adicione um cabeçalho de resposta ao longo das linhas de:

X-Username: nishant

Então, em sua log_formatdirectiva, usar a variável $sent_http_x_username. Esse comportamento está documentado aqui: http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER

Também recomendo remover esse cabeçalho extra da resposta antes de enviá-lo ao cliente. Você pode fazer isso com o NginxHttpHeadersMoreModule .

more_clear_headers 'X-Username';
Brad
fonte
Você pode me dizer como adicionar um cabeçalho de resposta?
Nishant
@nishant Isso depende inteiramente do seu código. Você precisará escrever algo ou modificar o que precisa para gerar o nome de usuário no cabeçalho da resposta.
Brad
O aplicativo da web é baseado no django.
Nishant
@nishant Eu não escrevi nada com o Django, então não posso dar conselhos específicos, mas parece que ele suporta middleware. Eu escreveria um módulo de middleware que cuida da adição do cabeçalho extra.
Brad