Nginx如何解决File not found 404 Not Found配置

本文详细解析了Nginx的多种配置场景,包括如何正确设置fastcgi参数,解决目录权限问题,以及通过修改php-fpm配置实现服务稳定运行的方法。同时,提供了针对特定域名的监听配置,以及错误页面和安全策略的设定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种情况

location ~ \.php$ {
# root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;这里改为 $document_root

第二种情况

server {
listen 80;
server_name v1.ywwfx.com;
root /home/www/www.96net.com.cn;

}

root /home/www/www.96net.com.cn;目录权限不够导致的

jnzzyl.com 是文件名称
linux更改权限命令
chown -R 777 jnzzyl.com
更改权限www拥有者命令
chown -R www:www jnzzyl.com

第三种情况

vim /etc/php-fpm.d/www.conf

user=nginx

group=nginx

这些都设置后  重启nginx  php-fpm 就可以运行了

如果依然不想,附上一下代码

server {
    listen       80;
    server_name  www.jnzzyl.com;

    if ($host ~ "\d+\.\d+\.\d+\.\d") {
        return 404;#禁IP访问
    }
    root /data/www/jnzzyl.com;
    index  index.html index.htm index.php;

    error_page  404              /404.html;
    location = /404.html {
        return 404 'Sorry, File not Found!';
    }
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root   /data/www/jnzzyl.com; # windows用户替换这个目录
    }

    location / {
        try_files $uri @rewrite;
    }

    location @rewrite {
        set $static 0;
        if  ($uri ~ \.(css|js|jpg|jpeg|png|gif|ico|woff|eot|svg|css\.map|min\.map)$) {
            set $static 1;
        }

        if ($static = 0) {
            rewrite ^/(.*)$ /index.php?s=/$1;
        }

    }

    location ~ /Uploads/.*\.php$ {
        deny all;
    }

    location ~ \.php/ {
       if ($request_uri ~ ^(.+\.php)(/.+?)($|\?)) { }
       fastcgi_pass 127.0.0.1:9000;
       include fastcgi_params;
       fastcgi_param SCRIPT_NAME     $1;
       fastcgi_param PATH_INFO       $2;
       fastcgi_param SCRIPT_FILENAME $document_root$1;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny  all;
    }
}
### Nginx PHP 文件未正确解析的解决方案 当遇到 `File not found` 或者 PHP 文件被下载而非执行的情况时,通常是由以下几个方面引起的: #### 1. **FastCGI 参数配置** 如果 FastCGI 的参数设置不正确,则可能导致无法找到对应的 PHP 脚本文件。例如,在引用中的配置中提到,`fastcgi_param SCRIPT_FILENAME` 的路径需要与实际的根目录一致[^2]。 以下是修正后的配置示例: ```nginx location ~ \.php$ { root /usr/local/var/www/focusschool/public; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # 确保此路径与 nginx 访问的实际文档根目录匹配 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /usr/local/etc/nginx/fastcgi_params; } ``` 在此配置中,`SCRIPT_FILENAME` 使用 `$document_root$fastcgi_script_name` 动态拼接路径,从而避免硬编码带来的潜在问题。 --- #### 2. **Nginx 和 PHP-FPM 的配合** 确保 Nginx 正确地将请求传递给 PHP-FPM 进程组。这可以通过以下方式验证: - 检查 `fastcgi_pass` 是否指向正确的 PHP-FPM 地址(通常是 `127.0.0.1:9000` 或 Unix 套接字 `/var/run/php-fpm.sock`)。 - 如果使用的是套接字,请确认权限是否允许 Nginx 用户访问该文件。 此外,还需要检查 PHP-FPM 配置文件(如 `/etc/php/7.x/fpm/pool.d/www.conf`),并确保其监听地址和用户权限设置无误。 --- #### 3. **MIME 类型支持** 有时浏览器会自动下载 PHP 文件,这是因为 MIME 类型未正确定义。可以在 Nginx 中添加如下配置来强制解释 PHP 文件而不触发下载行为: ```nginx types { application/x-httpd-php php; } default_type text/html; ``` 上述配置定义了 `.php` 扩展名对应的应用程序类型为 `application/x-httpd-php`,从而使服务器能够识别它作为可运行脚本[^1]。 --- #### 4. **Gzip 压缩模块的影响** 虽然 Gzip 不直接影响 PHP 解析过程,但如果启用了压缩功能而某些条件未能满足,可能会引发异常表现。建议查阅官方文档了解具体选项含义[^3]。对于大多数场景,默认启用即可正常工作。 最终完整的 Nginx 配置应类似于下面这样: ```nginx server { listen 80; server_name localhost; root /usr/local/var/www/focusschool/public; index index.php index.html; gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; location ~ \.php$ { root /usr/local/var/www/focusschool/public; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 完成修改后记得重新加载 Nginx 配置以应用更改: ```bash sudo systemctl reload nginx ``` --- ### 总结 通过调整 FastCGI 参数、校验 PHP-FPM 设置以及适当扩展 MIME 支持范围等方式,可以有效解决配置不当而导致的 “File Not Found” 及 PHP 下载问题。务必逐一排查以上环节直至恢复正常运作状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凯鑫BOSS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值