这里写自定义目录标题
nginx + php 出现file not found问题解决方案
当在浏览器中访问php结尾的脚本时,一直出现File not fount报错,状态码404
server {
listen 443 ssl http2 default_server;
server_name www.test.com;
ssl_certificate ssl/www.test.com.crt; # 指定证书的位置,绝对路径
ssl_certificate_key ssl/www.test.com.key; # 绝对路径,同上
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
proxy_intercept_errors on;
location / {
root /ser/www/test;
index index.html index.shtml;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
分析响应头发现,x-powered-by有返回php版本,说明nginx已经匹配到php脚本,并让php-fpm去处理。因此定位问题在php无法找到文件位置。
经排查给出正确配置:
server {
listen 443 ssl http2 default_server;
server_name www.test.com;
ssl_certificate ssl/www.test.com.crt; # 指定证书的位置,绝对路径
ssl_certificate_key ssl/www.test.com.key; # 绝对路径,同上
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
proxy_intercept_errors on;
root /ser/www/test;
location / {
#删除 root /ser/www/test;
index index.html index.shtml;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}