Linux Nginx的权限——访问本地目录报错403
在安装好FastDFS并成功上传图片文件后,根据FastDFS返回的文件地址无法通过HTTP(即浏览器)访问到,报错404或者403。
不管是Error 404还是Error 403,基本都是Nginx的配置出了问题。
Nginx的配置文件是:/etc/nginx/nginx.conf
如果是Error 404,很可能是其中server中location的对本地文件url的映射配置有问题,这里不详述。
如果是Error 403,拒绝访问。那么是权限问题。
我的情况是,我把图片的文件保存地址放在了“/root/...”下,而nginx接收到请求后无权限访问。
所以要么就更改/root文件夹的权限,要么重新设置Nginx的权限。
在StackOverFlow找到了解决办法:Nginx can't access root directory in sites-available.
简单说一下:
根据Nginx的官方文档,Nginx程序有两种进程:
一种是master process,即主进程,系统中只有一个。主进程的主要目的是读取和评估配置文件,以及维护工作进程。
一种是worker process,即工作进程,系统中可以有多个。工作进程执行请求的实际处理。 NGINX依赖于依赖操作系统的机制来有效地在工作进程之间分配请求。工作进程数由nginx.conf配置文件中的worker_processes指令定义,可以设置为固定数字,也可以配置为自动调整为可用CPU核心数。
直接查看现在系统中的Nginx进程:
user@user:~$ ps aux|grep nginx|grep -v grep
我的是看到一个master,和一个worker。然后master的权限为root,worker的权限为nobody。
在我的/etc/nginx/nginx.conf的头部,有个注释行#user:nobody,Nginx的文档也说默认是nobody,取消注释,将nobody改成root。ok,可以通过HTTP访问上传保存在/root中的图片了。
最后,我觉得不应该把FastDFS的保存地址放在/root下。