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.

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';

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.