nginx 返回 403 Forbidden 一般不是“某一条日志”的问题,而是访问被拒绝。可以从日志本身 + 常见原因逐层排查。下面按最常见 → 较少见来给你一个实战排查清单。
tail -f /var/log/nginx/access.log
# 或
grep " 403 " /var/log/nginx/access.log
典型 403 日志:
127.0.0.1 - - [xx/xx/xx] "GET / HTTP/1.1" 403 153
说明:
tail -f /var/log/nginx/error.log
常见错误信息 ✅
| 错误信息 | 含义 |
|---|---|
directory index of "/xxx/" is forbidden |
目录浏览被禁止 |
access forbidden by rule |
被 deny 规则拦截 |
permission denied |
权限不够 |
failed (13: Permission denied) |
文件/目录权限问题 |
nginx 启动用户没有权限访问目录或文件。
ps aux | grep nginx
通常用户是:
www-data(Ubuntu/Debian)nginx(CentOS)chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
⚠ 注意:
755644directory index of "/var/www/html/" is forbidden
index index.html index.php;
location / {
autoindex on;
}
grep -R "deny" /etc/nginx/
常见:
allow 127.0.0.1;
deny all;
✅ 解决:
deny allallowserver {
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
}
但你访问的是:
/var/www/html/site/index.html
但 root 实际上应该是:
root /var/www/html/site;
✅ 解决:
root 指向的是 真实存在的目录getenforce
如果是 Enforcing:
setenforce 0
如果 403 消失 → 就是 SELinux
setsebool -P httpd_read_user_content 1
或修改文件上下文:
chcon -Rt httpd_sys_content_t /var/www/html
ps aux | grep php-fpm
chown -R www-data:www-data /var/www/html
✅ root 目录是否存在
✅ nginx 用户是否有权限
✅ 是否有 index 文件
✅ 是否有 deny 规则
✅ SELinux 是否开启
你可以直接贴出:
我可以 直接告诉你哪一行配置有问题,怎么改 ✅