关于Nginx open() “/xxx/xxxx(dir path)” failed (13: Permission denied)的错误

来源:互联网 发布:微信模板发送java 编辑:程序博客网 时间:2024/05/18 02:17

本文来自:http://laymanz.com/blog/?p=239

在我的Nginx上新增了一个虚拟主机,访问时出现403。
Nginx的error.log 报以下错误: *2658 open() “/xxx/xxxx(dir path)” failed (13: Permission denied)

错误原因:
1. 运行nginx worker进程的帐号没有目标访问目录的读与执行权限。
2. 运行nginx worker进程的帐号没有目标访问文件的读权限。

写个例子。
虚拟主机设置如下:

server {
listen 80;
server_name sample.com;

location / {
root /home/sample/html/;
index index.html;
}
}

默认状态下,nginx worker进程是以nobody的帐号运行的。这可以用ps aux| grep nginx命令查看。

nobady帐号必须具备/home/sample/html/整个目录的读与执行权限。
如果要访问sample.com/index.html,那么nobady帐号必须具备/home/sample/html/index.html的读权限。否则就会报错。