alias, regex and try_files am i doing it wrong, or is this a bug?

Maxim Dounin mdounin at
Fri Jan 13 12:52:18 UTC 2012


On Thu, Jan 12, 2012 at 11:36:41PM -0500, takigama wrote:

> Ok, i was trying to do drupal as a subdirectory on my site, but i've hit
> a problem and I think its a bug. Im using 10.04 ubuntu, the nginx ppa
> with 1.0.11 nginx. 
> If i have the following config's and i try to retrieve the file
> http://mysite/drupal/somefile:
> location ~ /drupal(.*) {
>     index index.php;
>     alias /local_config/$1;
>     try_files $uri @drupalrewrite;
> }
> The file nginx is apparently trying retrieve
> "/local_config//somefile/drupal/somefile" rather then
> "/local_config//somefile", which leads me to believe $uri isnt being set
> correctly by nginx.

Yes, this looks like a bug for me.

(Internally, the problem is a bit complex, and I event tend to 
think that behaviour of try_files with alias in a regexp location 
is inherently undefined, but the example above should certainly 
work as expected.)

> If instead, i have this as a config:
> location /drupal/ {
>         index index.php;
>         alias /local_config/;
>         try_files $uri @drupalrewrite;
> }
> it does the right thing, and try files will attempt to get
> "/local_config/somefile", so im really confused as to why it happens.

This works as expected.

The difference is that in a regexp location the "alias" directive 
specifies full path to a file to use, and try_files isn't 
currently able to handle this.

Maxim Dounin

More information about the nginx mailing list