]> git.kaiwu.me - nginx.git/commit
Fixed wrong URI after try_files in nested location (ticket #97).
authorMaxim Dounin <mdounin@mdounin.ru>
Sun, 16 Aug 2015 07:51:34 +0000 (10:51 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Sun, 16 Aug 2015 07:51:34 +0000 (10:51 +0300)
commitdf30660f4daee72e3e44018a2830c83c5c531def
treed347d150ae61407a007b6a2dde46ed2361544f80
parentf178835bfa2f59c59186c9ffa967d412df7f2339
Fixed wrong URI after try_files in nested location (ticket #97).

The following configuration with alias, nested location and try_files
resulted in wrong file being used.  Request "/foo/test.gif" tried to
use "/tmp//foo/test.gif" instead of "/tmp/test.gif":

    location /foo/ {
        alias /tmp/;
        location ~ gif {
            try_files $uri =405;
        }
    }

Additionally, rev. c985d90a8d1f introduced a regression if
the "/tmp//foo/test.gif" file was found (ticket #768).  Resulting URI
was set to "gif?/foo/test.gif", as the code used clcf->name of current
location ("location ~ gif") instead of parent one ("location /foo/").

Fix is to use r->uri instead of clcf->name in all cases in the
ngx_http_core_try_files_phase() function.  It is expected to be
already matched and identical to the clcf->name of the right
location.
src/http/ngx_http_core_module.c