NGINX try_files + alias directives
nginx
Solution
This is a long standing bug in nginx. But you can work around by using the `root` directive again. Kind of a hack, but at least it works.
server {
index index.php;
root /home/alex/www/test2;
server_name local.test.ru;
location /blog {
root /home/alex/www/test1;
try_files $uri $uri/ /blog$is_args$args;
}
}
Problem
I'm trying to serve request to /blog subdirectory of a site with the php code, located in a folder outside document root directory. Here's my host config: ``` server { server_name local.test.ru; root /home/alex/www/test2; location /blog { alias /home/alex/www/test1; try_files $uri $uri/ /index.php$is_args$args; location ~ \.php$ { fastcgi_split_path_info ^(/blog)(/.*)$; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; } } } ``` And I get for requests like wget -O - http://local.test.ru/blog/nonExisting just a code of index.php file from /home/alex/www/test2/ folder. However, this config: ``` server { server_name local.test.ru; root /home/alex/www/test2; location /blog { alias /home/alex/www/test1; try_files $uri $uri/ /blog$is_args$args; index index.php; location ~ \.php$ { fastcgi_split_path_info ^(/blog)(/.*)$; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; } } } ``` gives me index.html file from /home/alex/www/test2/. Please give me a clue - why? And how can I force NGINX to process /home/alex/www/test1/index.php instead?