问题描述
本地执行 curl forgus.vicp.io 返回 403 Forbidden,但域名解析正常指向内网 IP 192.168.2.50。
排查过程
1. 初步诊断
1 2 3
| curl -v forgus.vicp.io
|
2. 远程检查 nginx 配置
1
| ssh root@192.168.2.50 "cat /etc/nginx/conf.d/*.conf"
|
配置内容:
1 2 3 4 5 6 7 8
| server { listen 80; server_name forgus.vicp.io; location / { root /root/blog/public; index index.html index.htm; } }
|
3. 检查目录权限
1 2
| ssh root@192.168.2.50 "ls -la /root/"
|
4. 定位根因
| 项目 |
值 |
| nginx 运行用户 |
www-data |
| 网站根目录 |
/root/blog/public |
/root 目录权限 |
700 (仅 root 可访问) |
结论:nginx 以 www-data 用户运行时无权访问 /root 目录,导致返回 403。
解决方案
修改 nginx 配置,将运行用户改为 root:
1 2
| sed -i 's/user www-data/user root/' /etc/nginx/nginx.conf nginx -s reload
|
验证结果
注意事项
- 长期方案建议:将网站目录移动到
/var/www/ 或其他 nginx 可访问的路径
- 安全考虑:谨慎使用 root 用户运行 nginx