11

Is there a way in which user-name or user-id can be stored in nginx logs. I tried inserting $remote_user in the log_format directive but it doesn't seem to work.

squillman
  • 37,618
  • 10
  • 90
  • 145
nishant
  • 113
  • 1
  • 4

1 Answers1

13

Yes, this is possible. However, since you aren't using HTTP basic auth, you will need your application to tell Nginx what the current username is. Add a response header along the lines of:

X-Username: nishant

Then in your log_format directive, use the variable $sent_http_x_username. This behavior is documented here: http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER

I also recommend removing this extra header from the response before sending it to the client. You can do this with the NginxHttpHeadersMoreModule.

more_clear_headers 'X-Username';
Brad
  • 1,389
  • 20
  • 43
  • Can you please tell me how to add a response header? – nishant Jun 10 '14 at 18:45
  • @nishant That depends entirely on your code. You will have to write something or modify what you have to output the username in the response header. – Brad Jun 10 '14 at 18:46
  • The web application is based on django. – nishant Jun 10 '14 at 18:48
  • @nishant I haven't written anything with Django so I can't give you specific advice, but it looks like it supports middleware. I would write a middleware module that takes care of adding the extra header. – Brad Jun 10 '14 at 18:51