Przechowywanie nazwy użytkownika w logach nginx

10

Czy istnieje sposób, w jaki nazwa użytkownika lub identyfikator użytkownika mogą być przechowywane w logach nginx. Próbowałem wstawić $ remote_user do dyrektywy log_format, ale wydaje się, że to nie działa.

nishant
źródło

Odpowiedzi:

11

Tak, jest to możliwe. Ponieważ jednak nie korzystasz z podstawowego uwierzytelniania HTTP, Twoja aplikacja będzie musiała poinformować Nginx o bieżącej nazwie użytkownika. Dodaj nagłówek odpowiedzi wzdłuż:

X-Username: nishant

Następnie w swojej log_formatdyrektywie użyj zmiennej $sent_http_x_username. To zachowanie jest udokumentowane tutaj: http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER

Polecam również usunięcie tego dodatkowego nagłówka z odpowiedzi przed wysłaniem go do klienta. Możesz to zrobić za pomocą NginxHttpHeadersMoreModule .

more_clear_headers 'X-Username';
Ćwiek
źródło
Czy możesz mi powiedzieć, jak dodać nagłówek odpowiedzi?
nishant
@nishant To zależy całkowicie od twojego kodu. Będziesz musiał coś napisać lub zmodyfikować to, co musisz wypisać nazwę użytkownika w nagłówku odpowiedzi.
Brad
Aplikacja internetowa oparta jest na django.
nishant
@nishant Nie napisałem nic z Django, więc nie mogę dać ci konkretnej porady, ale wygląda na to, że obsługuje oprogramowanie pośrednie. Napiszę moduł oprogramowania pośredniego, który zajmie się dodaniem dodatkowego nagłówka.
Brad