try_files and a nested location regexp

Francis Daly francis at
Thu Oct 16 12:18:01 UTC 2014

On Thu, Oct 16, 2014 at 07:55:48AM -0400, igorb wrote:

Hi there,

> Thanks, try_files "" =404 works indeed as long as the regexp location block
> contains the necessary alias.

That sounds correct.

"alias" sets $document_root. try_files concatenates $document_root with
its "file" argument. (It does do more than that; those details might
matter depending on what precisely you want to do.)

So if you want to use try_files, you must make sure that $document_root
and the "file" argument combine to name the file that you want to check
the existence of.

>   location /x/ {
>     alias /test/;
>     location ~ ^/x/test {
>       try_files "" =404;
>     }
>   }

> does not work,

$document_root concatenated with "" is /test/, which is not a file,
so =404 is used.

> This is indeed a very simplified config. However, even in this form it is
> useful as it reports directories matching ^/x/test as not found even with
> autoindex on inherited from the server context.

If you want try_files to look for a directory instead of a file, you
have to configure it to do that.

Francis Daly        francis at

More information about the nginx mailing list