Nginx 三大报错:403 / 404 / 502 排查大全

一、403 Forbidden(禁止访问)

现象:页面打不开,显示 403

99% 原因:权限 + 找不到首页 + 目录禁止

1. 文件 / 目录权限不对

bash

# 网站目录权限
chmod -R 755 /你的网站目录
chown -R nginx:nginx /你的网站目录

2. 没有 index.html/index.php

plaintext

index index.html index.php;

3. 目录不允许浏览

plaintext

autoindex on;  # 允许列出目录(一般不开)

4. SELinux 没关(CentOS 特别常见)

bash

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

5. 配置里写了 deny all

检查有没有:

plaintext

deny all;
allow 127.0.0.1;

二、404 Not Found(找不到页面)

现象:访问路径不存在

原因:路径错、root 错、正则 /rewrite 错

1. root 路径配置不对(最常见)

plaintext

root /usr/share/nginx/html;  # 这个目录有没有文件?

2. location 匹配错了

plaintext

location /abc/ { ... }

访问 /abc 没斜杠可能就 404。

3. try_files 写错

plaintext

try_files $uri $uri/ /index.html;

快速排查

bash

ls -l 你配置的root路径
看文件到底在不在

三、502 Bad Gateway(网关错误)

现象:页面白屏 / 502

原因后端服务没启动 / 端口不通 / 超时

1. 后端服务没跑(Java/PHP/Node)

plaintext

proxy_pass http://127.0.0.1:8080;
  • 8080 端口在不在?
  • 服务崩了 / 没启动

检查:

bash

运行

ps aux | grep java
ss -tulpn | grep 8080

2. 防火墙 / 安全组拦了

bash

运行

systemctl stop firewalld
setenforce 0

3. 后端队列满、卡死、响应太慢

Nginx 等不到回复 → 502

4. PHP-FPM 没启动 / 挂了(PHP 环境必看)

bash

systemctl start php-fpm
systemctl status php-fpm

万能排查口诀(背这个)

  • 403:权限、索引、SELinux
  • 404:路径不对、文件不存在
  • 502:后端挂了、端口不通、超时

最常用的排查 4 条命令

bash

nginx -t                   # 检查配置
systemctl reload nginx      # 重载
tail -f /var/log/nginx/error.log  # 看错误日志
ss -tulpn | grep 80/443/8080      # 看端口
滚动至顶部