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;
}
}
这种配置工作。 但是,如果location /test/
被替换例如location /testpath/
它不工作(没有指定的输入文件)。 我认为对“位置”部分被放置别名指令的解释基础,从而/testpath/info.php
会导致html/test/info.php
。
感谢您的任何建议。
nginx的别名
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;
}
两个alias
和root
指令最好用绝对路径使用。 您可以使用相对路径,但它们是相对于prefix
用来编译nginx的配置选项,且通常不是你想要的。
你可以通过执行看到这个nginx -V
和发现下列值--prefix=
。
通过查看日志证实这一点,你会发现一个“没有这样的文件”的错误。