解决项目中出现的404 Not Found nginx/1.15.0

本文介绍如何配置Nginx和PHP环境来部署ThinkPHP 3.2.3框架项目,并完成数据库配置及伪静态设置。

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

1.配置好nginx php环境

运行 sudo nginx

sudo php-fpm

2.将项目放在服务器运行目录中

/usr/local/var/www

3项目为 newdailian

配置好数据库导入数据dailian.sql


4.由于项目是tp3.23框架的 需要配置伪静态

打开配置文件 nginx.conf

配置文件目录为 /usr/local/etc/nginx/nginx.conf

加入这句


location / {
root html/newdailian; #表示服务器文件根目录 项目放在此目录下面
if (!-e $request_filename) {
rewrite ^/index.php/(.*)$ /newdailian/index.php?s=$1 last
break;
}
index index.html index.htm index.php;
}


5重启nginx

sudo nginx -s reload

6.运行 这些 可以看到相关页面

http://localhost:8282/newdailian/index.php?s=index/index/login




<think>好的,我现在需要解决用户提出的关于Nginx 1.18.0版本中出现404 Not Found错误的问题。首先,我得回忆一下之前用户提供的引用内容,以及常见的Nginx配置问题。用户之前提到的引用中有几个关键点:错误的路径发送到php-fpm导致404,静态页面可以访问但动态页面404,还有可能是路径配置错误或文件权限问题。 首先,我应该考虑常见的404错误原因。比如,配置文件中的root目录是否正确,文件是否存在,权限是否足够。另外,用户提到的是Nginx 1.18.0,可能需要检查版本特有的问题,但通常版本更新会导致明显的问题,所以还是以常规排查为主。 接下来,用户的问题可能涉及静态资源和动态处理的同配置。比如,静态文件如HTML可能正常,但PHP文件出现404,这可能与FastCGI配置有关。根据引用[2],静态页面可以访问而动态行,可能是因为Nginx没有正确将请求传递给PHP处理器,比如php-fpm没有运行,或者配置中的fastcgi_pass设置错误。 然后,检查Nginx的配置文件是否正确。比如,location块是否正确匹配PHP文件,是否设置了正确的index指令。例如,是否在server块中配置了index index.php index.html,以确保优先寻找index.php文件。 另外,文件权限问题也可能导致404错误。如果Nginx的工作进程(通常是www-data或nginx用户)没有权限访问文件或目录,就会返回404。需要检查文件的所有者和权限设置,确保目录有执行权限,文件有读取权限。 还有,路径配置错误,比如root和alias的使用区别。如果配置中使用的是alias,路径是否正确拼接。root会追加URI到路径后面,而alias则是替换匹配的部分,这可能导致路径错误。 此外,检查php-fpm是否在监听正确的socket或端口,是否处于运行状态。如果php-fpm没有正确配置,Nginx无法将请求传递过去,就会返回404。 最后,用户可能需要自定义404页面,这在Nginx中可以通过error_page指令实现,但用户当前的问题更可能是配置错误导致的实际404,而是需要显示自定义页面。 总结一下,解决步骤可能包括:检查配置文件语法,验证root路径是否正确,确认文件存在且权限正确,确保php-fpm配置正确且运行正常,检查location块的匹配规则,以及查看错误日志获取详细信息。需要逐步排查这些可能性,从配置到权限再到服务状态。</think>以下是解决Nginx 1.18.0版本中$404\ \text{Not Found}$错误的逐步排查方案: --- ### 一、基础路径与权限验证 1. **检查root目录配置** 在nginx配置文件中(如$default.conf$)确认`root`指向的实际路径: ```nginx server { listen 80; server_name localhost; root /usr/share/nginx/html; # 确保路径与实际文件存储位置一致 index index.html index.php; } ``` 使用命令验证路径是否存在: ```bash ls -l /usr/share/nginx/html/index.html ``` 2. **文件权限设置** 确保Nginx进程用户(通常是$nginx$或$www-data$)有读取权限: ```bash chmod -R 755 /usr/share/nginx/html # 目录需有执行权限 chown -R nginx:nginx /usr/share/nginx/html ``` --- ### 二、PHP动态请求处理 若404仅出现在PHP等动态请求中,需检查FastCGI配置[^2]: 1. **确认php-fpm运行状态** ```bash systemctl status php-fpm # 确保服务处于active状态 ``` 2. **检查FastCGI传递配置** 在nginx的PHP处理块中需包含: ```nginx location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # 与php-fpm监听端口一致 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ``` 使用命令验证端口监听: ```bash netstat -tulpn | grep 9000 ``` --- ### 三、配置语法与日志分析 1. **重载配置前验证语法** ```bash nginx -t # 出现"syntax is ok"才继续 systemctl reload nginx ``` 2. **查看错误日志定位问题** ```bash tail -f /var/log/nginx/error.log # 实时观察请求失败的具体原因 ``` --- ### 四、特殊场景处理 1. **alias与root区别** 若使用`alias`指令,需注意路径替换逻辑: ```nginx location /test/ { alias /data/custom/; # 访问/test/file.html 实际指向/data/custom/file.html } ``` 2. **自定义404页面** 在server块中添加: ```nginx error_page 404 /custom_404.html; location = /custom_404.html { root /usr/share/nginx/html; internal; # 禁止外部直接访问 } ``` --- ### 五、测试验证 ```bash curl -I http://localhost/info.php # 观察HTTP状态码 ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

芝麻开门2015

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

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

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

打赏作者

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

抵扣说明:

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

余额充值