Nginx 权限被拒绝上游错误,即使在 777 之后

Nginx 权限被拒绝上游错误,即使在 777 之后

我一直收到这个错误

2013/03/13 13:25:07 [crit] 49299#0: *38 rename() “/var/tmp/nginx/fastcgi_temp/6/00/0000000006” 至 “/var/cache/nginx/microcache/8/fd/c36e398490d9b70e3c98ba094d065fd8” 读取上游时失败 (13: 权限被拒绝)

我尝试了 Nginx 和 SO 论坛中的其他信息,例如更改文件夹/文件的所有者、删除微缓存文件夹以便 Nginx 自行创建新文件夹,但似乎没有任何作用。

我的 Nginx 配置将www所有这些文件夹作为用户(在 FreeBSD 中为所有者)/var/tmp/nginx/fastcgi_temp/,并将/var/cache/nginx/microcache/www作为用户(所有者)和wheel组。

为了测试它,我甚至给了-R 777上面提到的文件夹并重新启动了 nginx,但error.log仍然显示相同的错误。甚至想不出这里可能出了什么问题,任何指导都将不胜感激。

答案1

我通过授予其父目录权限来解决这个问题。/var/cache/nginx所有目录都具有只读权限,而具有所有权限,只有当我将和权限/var/cache/nginx/microcache/更改为 766 后它才起作用。这仍然很奇怪,但对我来说有效。/var//var/cache//var/cache/nginx/

答案2

过去几天,我将内容从旧硬件服务器转移到 AWS EC2 实例时,这个错误出现了几次。为了解决这个问题,我不得不删除该/var/tmp/nginx/fastcgi_temp文件夹并重新启动 nginx 服务。这会重新创建 fastcgi_temp 文件夹,至少对我来说,问题就消失了。

答案3

我刚刚也遇到了同样的问题,我运行的是 Amazon Linux 和从源代码构建的 Nginx。我通过设置目录权限修复了这个问题,如下所示(您会注意到我编辑了目录列表,以便更清楚地了解您需要哪些目录的哪些权限)。请注意,777 不起作用,您需要 755 和这些所有者。

drwxr-xr-x 21 root root   4096 Dec 19 06:58 /var

drwxr-xr-x  8 root root 4096 Dec 18 18:43 /var/cache

drwxr-xr-x  7 nginx root 4096 Dec 18 18:45 /var/cache/nginx

drwx------  2 nginx root 4096 Dec 31 02:47 /var/cache/nginx/client_temp
drwx------ 12 nginx root 4096 Dec 27 04:09 fastcgi_temp
drwx------  2 nginx root 4096 Dec 18 18:45 proxy_temp
drwx------  2 nginx root 4096 Dec 18 18:45 scgi_temp
drwx------  2 nginx root 4096 Dec 18 18:45 uwsgi_temp

答案4

我面临同样的问题,首先从配置文件中检查你的 nginx 用户和组,我的 nginx 用户是 nobody,组是 admin。然后使用此命令使组和用户保持不变:

sudo chown -R nobody ./proxy_temp
sudo chgrp -R admin ./proxy_temp

将路径替换./proxy_temp为你自己的路径。

相关内容