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
。
感谢您的任何建议。
答案 0 :(得分:11)
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;
}
答案 1 :(得分:8)
alias
和root
指令最适用于绝对路径。您可以使用相对路径,但它们与用于编译nginx的prefix
配置选项相关,通常不是您想要的。
您可以通过执行nginx -V
并查找--prefix=
之后的值来查看此内容。
通过查看日志证明这一点,你会发现“没有这样的文件”错误。