温馨提示×

debian nginx为什么报404

小樊
44
2026-10-21 02:19:02
栏目: 智能运维

在 Debian 上用 Nginx 出现 404,通常不是 Nginx 本身坏了,而是请求没有匹配到正确的 location / 文件不存在。下面按「最常见 → 较少见」给你排查清单。


一、最常见原因(90% 情况)

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

例如配置:

root /var/www/html;
index index.html;

但你访问:

http://ip/

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

✅ 检查:

ls -l /var/www/html

2️⃣ Nginx 配置里 root / index 写错

典型错误:

location / {
    # 没有 root
}

✅ 正确示例:

server {
    listen 80;
    server_name _;

    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

改完重启:

sudo nginx -t
sudo systemctl reload nginx

3️⃣ 访问的 URL 和 location 不匹配

比如:

location /api {
    proxy_pass http://127.0.0.1:3000;
}

你访问 /api/ 或 /api/x 但后端没这个路由 → 404

✅ 检查:

  • Nginx 是否转发
  • 后端是否真的有该接口

二、Debian 特有常见问题

4️⃣ 配置文件没被加载

Debian 默认只加载:

/etc/nginx/sites-enabled/

你写在了:

/etc/nginx/conf.d/xxx.conf

或

/etc/nginx/sites-available/xxx

但没软链

✅ 解决:

sudo ln -s /etc/nginx/sites-available/xxx /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

5️⃣ 默认 server 拦截了请求

Debian 自带:

/etc/nginx/sites-enabled/default

如果你自定义 server,但没删 default,可能匹配错。

✅ 建议:

sudo rm /etc/nginx/sites-enabled/default

三、权限问题(也会表现为 404)

Nginx 用户通常是 www-data

ps aux | grep nginx

确保:

chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html

四、快速自查命令(强烈推荐)

# 看错误日志(最关键)
sudo tail -n 50 /var/log/nginx/error.log

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

# 检查配置
sudo nginx -t

五、如果你愿意,我可以直接帮你定位

你可以贴出:

  1. nginx 配置(server 段)
  2. 你访问的 URL
  3. error.log 相关报错

我可以直接告诉你是哪一行配置导致的 404。

0 踩