我的 nginx 配置如下
server {
listen 80;
server_name localhost;
location / {
root /var/www;
index index.php index.html;
autoindex on;
}
location /folder1 {
root /var/www/folder1;
index index.php index.html index.htm;
try_files $uri $uri/ index.php?$query_string;
}
location /folder2 {
root /var/www/folder2;
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
上述设置的问题在于我无法执行 php 文件。现在根据我对 nginx 配置规则的理解,当我处于我的 webroot( /
) 中时,这是become/var/www
的值,因此当我请求become时,这就是 php 脚本的实际路径。但是当我实际转到该 url 时,我收到一条消息,但是当我转到该 url 时,我可以看到页面的 html 输出。所以这意味着 php 的位置块存在问题。$document_root
/var/www
localhost/hi.php
fastcgi_param
SCRIPT_FILENAME
/var/www/hi.php
localhost/hi.php
File not found.
localhost/hi.html
同样,当我请求localhost/folder1/hi.php
成为$document_root
时,因为这在位置块/var/www/folder1
中被指定为根,所以再次成为。但是当我实际转到网址时,我收到一条消息,但是当我转到网址时,我可以看到页面的 html 输出。所以 php 再次未被执行。folder
fastcgi_param
SCRIPT_FILENAME
/var/www/folder1/hi.php
localhost/folder1/hi.php
File not found.
localhost/folder1/hi.html
请帮忙?
答案1
您需要root
从两个location /folder*
块中删除行,并将移动到块root /var/www
内server
,而不是location /
块内。这是最常见的nginx 配置错误。