Хранение имени пользователя в логах nginx

10

Есть ли способ, которым имя пользователя или идентификатор пользователя могут быть сохранены в логах nginx. Я попытался вставить $ remote_user в директиву log_format, но, похоже, это не работает.

Nishant
источник

Ответы:

11

Да, это возможно Тем не менее, поскольку вы не используете базовую аутентификацию HTTP, вам понадобится ваше приложение, чтобы сообщить Nginx, каково текущее имя пользователя. Добавьте заголовок ответа в соответствии с:

X-Username: nishant

Затем в вашей log_formatдирективе используйте переменную $sent_http_x_username. Это поведение описано здесь: http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER

Я также рекомендую удалить этот дополнительный заголовок из ответа перед его отправкой клиенту. Вы можете сделать это с NginxHttpHeadersMoreModule .

more_clear_headers 'X-Username';
штифтик
источник
Подскажите, пожалуйста, как добавить заголовок ответа?
nishant
@nishant Это полностью зависит от вашего кода. Вам нужно будет что-то написать или изменить то, что вы хотите, чтобы вывести имя пользователя в заголовке ответа.
Брэд
Веб-приложение основано на Django.
nishant
@nishant Я ничего не писал с Django, поэтому не могу дать вам конкретного совета, но похоже, что он поддерживает промежуточное ПО. Я бы написал модуль промежуточного программного обеспечения, который позаботится о добавлении дополнительного заголовка.
Брэд