Nginx出现403 forbidden (13: Permission denied)报错
Nginx出现403 forbidden (13: Permission denied)报错
使用Nginx部署前后分离项目时,访问时Nginx出现403 forbidden,发现Nginx日志文件报如下错误:
2021/09/10 11:31:25 [error] 42415#0: *1 "/home/web/web-d/index.html" is forbidden (13: Permission denied), client: 192.168.1.1, server: 192.168.1.101, request: "GET / HTTP/1.1", host: "192.168.1.101:5500" 2021/09/10 11:31:25 [error] 42415#0: *1 open() "/home/web/web-d/favicon.ico" failed (13: Permission denied), client: 192.168.1.1, server: 192.168.1.101, request: "GET /favicon.ico HTTP/1.1", host: "192.168.1.101:5500", referrer: "http://192.168.1.101:5500/"
发现启动用户和nginx工作用户不一致所致
Nginx用户权限
在nginx.conf文件的第一行一般是设置用户的地方(编译安装nginx时的参数--user=<user>也是指定用户的地方),如 user www www;
如不指定默认是nobody。
#user nobody; 定义运行nginx服务的用户和组。
因为是默认的nobody,没有访问目录权限,然后指定有权限的用户。
于是将nginx.conf的user改为和启动用户一致
将nginx.conf文件中的 user 对应的nginx用户改为 root ,改完后重启Nginx,页面即可正常访问!
说明:Nginx启动方式如下
cd /usr/local/nginx/sbin 进入Nginx下的sbin目录
./nginx -c /usr/local/nginx/conf/nginx.conf 执行启动命令
pkill nginx 干掉Nginx
ps -ef | grep nginx 查看Nginx
关于linux下的nobody用户:
nobody 是系统用户,是一个不能登陆的帐号,一个特殊用途的用户 ID ,一些服务进程如apache,aquid等都采用一些特殊的帐号来运行,比如nobody,news,games等等。一般来说 uid < 500 的都是系统 ID 。
Linux 系统为了安全,很多操作和服务的运行都不是运行在 root 用户下面的,而是一个专用的 ID ,这个 ID 一般就是 nobody ,这样就可以把每个服务运行的情况隔离出来。保证不会因为服务器程序的问题而让服务器程序成了黑客的直接操作源(黑客拿下了服务器程序,也仅仅是 nobody 用户而不是 root 用户)。同时也不会影响其他用户的数据。