I could not figure out why try_files in a nested location defined with a
regexp does not work in nginx/1.4.6 under Ubuntu 14.04.  Consider the
following config:

server {
        listen 8080 default_server;
        root /usr/share/nginx/html;
        autoindex on;

        location /x/ {
                alias /test/;
                location ~ ^/x/test {
                        try_files $uri =404;
                }
        }
}

With /test containing publically readable file test.html and directory
test_dir  this does not works as expected. While localhost:/x/ properly
lists directory context of /test and localhost:/x/test_dir/ is reported as
404 not found , nginx also reported as 404 not found localhost:/x/test.html
even if the file exists.

Now, if replace the regexp with a simple prefix so the location reads:

        location /x/ {
                alias /test/;
                location /x/test {
                        try_files $uri =404;
                }
        }

then everything work. That is, both localhost:/x/ and localhost:/x/test.html
are accessible and only localhost:/x/test_dir/ is 404 not found.

So what is wrong with the usage of try_files in the initial regexp-based
location config?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,254033,254033#msg-254033

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to