温馨提示×

debian nginx为何报404错误

小樊
36
2026-10-15 07:17:51
栏目: 智能运维

在 Debian 上部署 Nginx 时出现 404 Not Found,通常不是 Nginx “坏掉了”,而是请求没有匹配到正确的资源或配置。下面按最常见原因 → 排查方法说明。


一、最常见原因(占 90%)

1️⃣ 网站根目录没有对应文件

例如你访问:

http://ip/

但:

/var/www/html/index.html 不存在

✅ 检查:

ls -l /var/www/html

✅ 解决方法:

echo "hello" > /var/www/html/index.html

2️⃣ Nginx 配置里的 root 路径写错

示例错误配置:

server {
    root /var/www;   # 实际文件在 /var/www/html
}

✅ 检查配置文件:

nginx -T

✅ 正确示例:

server {
    listen 80;
    server_name _;
    root /var/www/html;
    index index.html index.php;
}

修改后:

nginx -t
systemctl reload nginx

3️⃣ server_name 不匹配

如果你访问:

http://example.com

但配置是:

server_name www.example.com;

✅ Nginx 会走到 默认 server,可能返回 404

✅ 检查:

nginx -T | grep server_name

✅ 建议测试用:

server_name _;

4️⃣ 访问了不存在的 URL(路由问题)

例如:

/about

但目录里没有 /about 或 about.html

✅ 检查:

ls /var/www/html

二、PHP / 动态网站常见 404

5️⃣ PHP 没配置或 index.php 不存在

访问:

/index.php

但:

  • 没有 index.php
  • 或没装 php-fpm

✅ 检查:

ls /var/www/html/index.php

✅ 安装 PHP:

apt install php-fpm

✅ Nginx 需有:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php-fpm.sock;
}

6️⃣ rewrite / try_files 配置错误(Laravel / Vue / React)

例如 Laravel 必须:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

否则:

  • /login → 404

三、静态资源 404(JS/CSS/图片)

7️⃣ 路径大小写问题(Linux 严格区分)

/Assets/logo.png  ❌
/assets/logo.png  ✅

四、快速排查流程(强烈推荐)

# 1. 看错误日志
tail -n 50 /var/log/nginx/error.log

# 2. 看访问日志
tail -n 20 /var/log/nginx/access.log

# 3. 测试配置
nginx -t

# 4. 重载
systemctl reload nginx

五、如果你愿意,我可以精准帮你定位

你可以直接贴:

  1. Nginx 配置文件
  2. 访问的 URL
  3. 文件目录结构
  4. error.log 报错内容

我可以一步一步帮你改到不再 404 ✅

0 踩