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.
Asked
Active
Viewed 6,502 times
1 Answers
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,419
- 22
- 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