一、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 # 看端口