nginx alias+location directive

alias, location, nginx

Solution

nginx alias

    server {
    listen      80;
    server_name  pwta;
    index index.html index.php;
    root html;

    location /testpath/ {
        alias html/test/;
    }
    location ~  ^/testpath/(.+\.php)$ { ### This location block was the solution
        alias html/test/;     
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$1;
        include fastcgi_params;
    }
     location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

Problem

``` server { listen 80; server_name pwta; root html; location /test/{ alias html/test/; autoindex on; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` This configuration works. However, if `location /test/` is replaced e.g. `location /testpath/` it doesn't work (No input file specified). I assumed base on the explanation of alias directive that the "location" part is dropped and thus `/testpath/info.php` would result in `html/test/info.php`. Thanks for any suggestion.

Original source