1 回答
TA贡献2019条经验 获得超9个赞
您的配置文件配置错误nginx。
首先,您在节内指定root和index指令location \。
location / {
root /data/web;
index index.html index.htm;
}
该部分仅在所有其他部分不匹配时才起作用,因为它具有短路掩码长度(/是一个符号)
每个URL以.php、 likephpinfo.php或结尾的都index.php将匹配到location ~ \.php$部分:
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 300;
}
但是 - 没有rootandindex指令(顺便说一句,index这是可选的,但在您的情况下,first 是强制性的)。
有两种解决方案:
首先,在部分中指定root和index指令location ~ \.php$:
location ~ \.php$ {
try_files $uri = 404;
root /data/web;
index index.php index.html index.htm;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 300;
}
第二个是将rootand放在index全局上下文中(在 内部server):
server {
listen 80;
charset UTF-8;
server_name example.com www.example.com;
root /data/web;
index index.php index.html index.htm;
...
}
UPD:还fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;必须在之后添加指令fastcgi_pass
- 1 回答
- 0 关注
- 78 浏览
添加回答
举报