系统报错403,Nginx无法访问本地目录问题
- 问题情况: 今早有用户报错说网站页面无法访问403Forbbien。昨晚刚做了变更,nginx那台机器的nginx之前是用appuser这个用户启动,在昨晚变更的时候改为用root用户启动。
- 分析问题: root的权限是最大的,用appuse创建的文件和进程合理来说root是都会有权限访问的,为什么还会报nginx文件没有权限访问的错。
- nginx有两种进程,master进程和worker进程,master进程是主进程。系统中只有一个。主进程的主要目的是读取和评估配置文件,以及维护工作进程。工作进程系统中可以有多个。工作进程执行请求的实际处理。 NGINX依赖于依赖操作系统的机制来有效地在工作进程之间分配请求。工作进程数由nginx.conf配置文件中的worker_processes指令定义,可以设置为固定数字,也可以配置为自动调整为可用CPU核心数。
- 直接查看现在系统中的Nginx进程: ps -ef|grep nginx。
- 看到一个master,和一个worker。然后master的权限为root,worker的权限为nobody。由此可以知道为什么没有权限访问了。
- 一是kill掉由root启动的进程,并重新以appuser用户启动进程。本次解决问题就是用这种方式。解决完之后再重新查看进程,work进程都是appuser不再是nobody了

- 二是在nginx中可以修改 worker 进程的用户身份, 因为默认的则是 nobody。的/etc/nginx/nginx.conf配置文件的头部,有个注释行#user:nobody,Nginx的文档也说默认是nobody,取消注释,将nobody改成root。