Nginx报404 Not Found原因,文件路径检查
时间:2026-10-7 07:36 作者:emer 分类: 无
前言
访问网站出现 404 Not Found,意思是 Nginx 找不到文件。大部分情况是路径配置不对。本文讲一下 404 的常见原因和排查方法。
404 的常见原因
原因1:root 路径不对
Nginx 配置里的 root 指向的目录不对,文件不在那个目录里。
检查:
server {
root /var/www/html; # 确认这个路径
}
去服务器上看一下:
ls /var/www/html/
看 index.html 在不在。
原因2:index 首页没配置
访问根目录,Nginx 不知道默认打开哪个文件。
解决: 配置 index:
server {
root /var/www/html;
index index.php index.html index.htm;
}
原因3:伪静态没配好
ThinkPHP、WordPress 这种程序,需要伪静态规则。没配的话,访问文章页就 404。
解决: 加上伪静态规则:
location / {
try_files $uri $uri/ /index.php?$args;
}
原因4:文件权限不对
文件存在,但 Nginx 读不了。
检查:
ls -la /var/www/html/
确保文件权限是 644,目录是 755,属主是 www。
排查步骤
第一步:确认文件真的存在
ls -la /var/www/html/index.html
第二步:确认 Nginx 配置的 root 路径
grep root /etc/nginx/conf.d/你的站点.conf
第三步:看 Nginx 错误日志
tail -f /var/log/nginx/error.log
访问一下 404 的页面,看日志里写的什么。
常见坑
坑1:root 和 alias 搞混了
很多人分不清 root 和 alias。
区别:
root:把请求路径拼到 root 后面alias:把请求路径替换成 alias 后面的路径
举个例子:
请求 /a/test.html
# root 方式
root /var/www;
# 实际找 /var/www/a/test.html
# alias 方式
location /a/ {
alias /var/www/;
}
# 实际找 /var/www/test.html
坑2:首页能访问,内页 404
首页打开正常,点文章就 404。
原因: 伪静态没配。
解决: 给程序配上伪静态规则。
坑3:PHP 文件 404
访问 PHP 文件,直接下载或者 404。
原因: PHP 解析没配置。
解决: 确保有 PHP 的 location 配置:
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
坑4:改了文件名但浏览器还缓存
本地改了文件名,访问还是 404。
原因: 浏览器缓存了旧的 404 响应。
解决: 清浏览器缓存,或者用无痕模式测试。
总结
404 排查三步走:
- 文件在不在?
- root 路径对不对?
- 伪静态配没配?
记住: 排查 404 先看错误日志,比瞎猜快多了。
遇到问题加QQ23979811 协助处理