Log response header from upstream

Kamil Gorlo kgorlo at gmail.com
Mon Nov 7 10:57:15 UTC 2011


OK, thanks - it works.

One more question: I have to use this variables in quotes because
sometimes it resolves to just empty string and there is problem with
parsing such logs.

Why sometimes empty variables ends in single hyphen ("-", this is what
I allways want) in access log and sometimes its just empty string
("")?

--
Kamil Gorlo



On Mon, Nov 7, 2011 at 11:19 AM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> Hello!
>
> On Mon, Nov 07, 2011 at 06:42:09AM +0100, Kamil Gorlo wrote:
>
>> Yeah, I have tried this, but this way non x-accel-redirect requests must be
>> handled in old way which means I have to use 2 fields in access log. Is
>> there any way to use only one field?
>
> E.g. you may use different log format for internal location.
>
> Maxim Dounin
>
>> 06-11-2011 22:15 użytkownik "Maxim Dounin" <mdounin at mdounin.ru> napisał:
>>
>> > Hello!
>> >
>> > On Sun, Nov 06, 2011 at 09:48:08PM +0100, Kamil Gorlo wrote:
>> >
>> > > Hi,
>> > >
>> > > I have some problem with access log combined with X-Accel-Redirect
>> > > requests. In my case I have Nginx set up as load-balancer to group of
>> > > application servers. These servers return some special header in every
>> > > request - I need to log value of this special header (lets call it
>> > > 'X-user') in access log - also I do not want to expose this header to
>> > > the world (proxy_hide_header helps here).
>> > >
>> > > Everything seems to work, but when there is X-Accel-Redirect request I
>> > > have empty field in access log because of subrequest
>> > > ($upstream_http_x_special is cleared because of subrequest, if I
>> > > understand this mechanism correctly). How to make this work for every
>> > > request?
>> > >
>> > > Here is my config:
>> > >
>> > > http {
>> > >   log_format extended '$request $upstream_http_x_user';
>> > >   access_log /var/log/nginx/access.log extended;
>> > >
>> > >   ...
>> > >
>> > >   server {
>> > >     listen 80;
>> > >
>> > >     location / {
>> > >       proxy_pass http://backend;
>> > >       proxy_hide_header X-User;
>> > >     }
>> > >
>> > >     location /files {
>> > >       internal;
>> > >       proxy_pass http://filestore;
>> >
>> > Workaround is to use
>> >
>> >        set $x_user $upstream_http_x_user;
>> >
>> > here (and to log $x_user instead).
>> >
>> > >     }
>> > >   }
>> > > }
>> >
>> >
>> > Maxim Dounin
>> >
>> > _______________________________________________
>> > nginx mailing list
>> > nginx at nginx.org
>> > http://mailman.nginx.org/mailman/listinfo/nginx
>> >
>
>> _______________________________________________
>> nginx mailing list
>> nginx at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx



More information about the nginx mailing list