温馨提示×

nginx日志出现404怎么解决

小樊
37
2026-10-11 12:10:02
栏目: 编程语言

Nginx 日志中出现 404(Not Found) 通常表示请求的资源在服务器上不存在或不可访问。排查和解决可以按下面步骤一步一步来。


一、先确认 404 是从哪里来的

查看 Nginx 错误日志和访问日志:

tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

重点看:

  • 请求的 URL 路径
  • 请求的 方法(GET/POST)
  • 是 Nginx 直接返回 404,还是后端(PHP/Java/Node)返回 404

二、常见原因及对应解决方法

1️⃣ 文件或目录确实不存在

现象

GET /images/logo.png HTTP/1.1 404

解决

  • 确认文件是否存在:
ls -l /var/www/html/images/logo.png
  • 如果不存在,上传文件或修正路径

2️⃣ root / alias 配置错误(最常见)

❌ 错误示例

location /static/ {
    root /var/www/html/static;
}

访问 /static/a.png → 实际找 /var/www/html/static/static/a.png

✅ 正确写法

location /static/ {
    alias /var/www/html/static/;
}

或

location / {
    root /var/www/html;
}

3️⃣ index 文件未配置

现象 访问目录返回 404

解决

index index.html index.php;

示例:

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

4️⃣ location 匹配不到

现象

GET /api/user HTTP/1.1 404

解决 确认是否有对应 location:

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

5️⃣ 反向代理后端返回 404

现象 Nginx 本身没文件,但转发给后端还是 404

解决

  • 检查后端是否启动
  • 检查 proxy_pass 路径是否正确
location /api/ {
    proxy_pass http://127.0.0.1:8080/;
}

注意结尾 / 的区别


6️⃣ 权限问题(少见但容易忽略)

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

7️⃣ 伪静态 / rewrite 问题

常见于:

  • WordPress
  • Vue / React 前端路由

示例(WordPress):

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

三、快速自查清单 ✅

  • [ ] 文件真实存在
  • [ ] root / alias 路径正确
  • [ ] index 已配置
  • [ ] location 匹配正确
  • [ ] 后端服务正常
  • [ ] 权限没问题
  • [ ] rewrite 规则正确

四、如果你愿意,我可以直接帮你改

你可以把下面信息发给我:

  1. Nginx 配置(server 段)
  2. 访问的 URL
  3. access / error 日志片段

我可以直接帮你指出是哪一行配置导致的 404。

0 踩