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.