another "nested locations" question

Maxim Dounin mdounin at
Wed Sep 26 15:44:12 UTC 2012


On Tue, Sep 25, 2012 at 10:05:44PM -0400, AJ Weber wrote:

> I am interested in using a nesting of some sort so that I don't have
> to duplicate all the proxy- and other directives for one "special
> case".
> Basically, I'd like a very small subset of my webapp to also write
> to a separate access-log.  When a user hits that particular page, I
> would like to log it, AND also perform all the directives for the
> rest of the site that are already configured.
> Something like
> location /site {
>     location /site/search {
>         access_log /var/log/nginx/search_access.log;
>     }
>     proxy_pass ...
>     proxy_redirect off;
>     proxy_set_header ...
> }
> So accessing /site/search should write an entry in the "special log
> file", and then do all the "normal stuff" that location /site has
> itemized.
> Is this possible?

Not exactly.  Each location is expected to have it's own "do 
something" list, i.e. if you need proxy_pass in this location - 
you have to write it explicitly.
On the other hand, there is no need to duplicate normal 
configuration, e.g. proxy_redirect and proxy_set_header will be 
inherited from previous level(s).  I.e. you have to write 
explicitly only few directives which aren't inherited, notably
try_files, rewrite module directives, and content handlers like
In the above config snippet you have to duplicate proxy_pass into 
location /site/search.

Maxim Dounin

More information about the nginx mailing list