我一直收到这个错误
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
为你自己的路径。