nginx突然开始向/var/lib/nginx抛出被拒绝的权限

tct7dpnv  于 2023-01-20  发布在  Nginx
关注(0)|答案(5)|浏览(159)

我有一个nginx服务器,它工作正常约1年,但两个星期前服务器已被转移到另一个供应商。一切都很好,但经过一段时间,approximatly 3天,服务器开始抛出上传文件的错误,如:

2017/07/26 09:58:18 [crit] 13254#13254: *2829396 open() "/var/lib/nginx/proxy/7/12/0000002127" failed (13: Permission denied) while reading upstream, client: 195.82.157.12, server: ***, request: "GET *** HTTP/1.0", upstream: "***", host: "***", referrer: "***"

但这是错误的,我甚至更改权限为777为舒尔,但仍然有同样的错误。
日志中没有其他错误,只有/var/lib/nginx/proxy/后面的数字名称不同的“permission denied”。重新启动nginx后一切正常,但现在这个错误以随机间隔返回,大约2天。我找到的唯一解决方法是重新启动。
有没有人能帮我或者至少给予个线索,我应该在哪里挖来修复这个问题?

plupiseo

plupiseo1#

使用以下命令给予/var/lib/nginx/权限:

chown -R www-data:www-data /var/lib/nginx/

这对我很有效。

ao218c7q

ao218c7q2#

尝试以下操作:将nginx proxy_temp_path更改为/tmp,编辑您的代理配置文件,添加:

proxy_temp_path /tmp;

并重新启动nginx。

q5iwbnjs

q5iwbnjs3#

至于为什么突然之间发生这种情况,我想是因为NGINX只在文件大于9K的时候才把文件放在那里,也许你以前处理的是较小或相同大小的文件。

cidc1ykv

cidc1ykv4#

我找到了一个可行的解决方案。在我的例子中,它是SELinux强制执行规则和权限,所以即使我在临时代理路径上也有正确的权限,如:

# ls -l / | grep nginx
drwxrwxrwx.   2 nginx nginx 4096 01-18 11:44 nginx_cache
drwxr-xr-x.   2 nginx nginx    6 01-18 11:44 nginx_cache_tmp

nginx用户无法在那里创建任何文件。
修复:禁用SELinux

# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

或者更好的解决方法是为nginx用户配置适当的权限。

1szpjjfi

1szpjjfi5#

这个问题似乎是因为许可问题。
你能不能检查一下nginx是用哪个用户运行的,并且看看文件夹/var/lib/nginx/proxy/上有什么权限?
可能是nginx试图在代理文件夹中创建一个新文件,但由于基本文件夹的权限不正确,它无法创建。
我建议为nginx用户提供一个chown-R和777-R到/var/lib/nginx/proxy/文件夹本身。
如果这不起作用,您也可以尝试在/var/lib/nginx/上做同样的事情,看看是否起作用。但是,我不确定这会导致多大的安全问题。
希望这个有用。

相关问题