问题:nginx:[新兴] mkdir() "/var/cache/nginx/client_temp"失败(13:权限被拒绝)



我正试图在Openshift上运行Nginx,但遇到此目录权限问题。由于此错误,容器未创建。以下权限设置为手动创建的文件。

drwxr-xr-x.  3 root root   79 Dec 22 02:50 /etc/nginx
drwxr-xr-x.  2 root root   26 Dec 22 02:50 /etc/nginx/conf.d
-rw-r--r--.  1 root root 5231 Dec 22 02:48 /etc/nginx/mime.types
drwxrwxr-x.  3 root root   25 Dec 22 01:23 /var/cache/nginx
drwxrwxr-x.  2 root root    6 Dec 22 01:10 /var/log/nginx
drwxrwxr-x. 47 root root 1340 Dec 21 06:51 /var/run

您要运行哪个特定的容器映像?如果你用这个——https://catalog.redhat.com/software/containers/ubi8/nginx-120/6156abfac739c0a4123a86fd--开箱即用的OpenShift会玩得更好。

这种问题几乎总是由OpenShift默认情况下以非root身份运行容器引起的。如果将文件权限更改为允许对GROUP=0进行写访问,则几乎可以解决所有这些问题。

就像@dbaker提到的那样,RedHat作为一家安全公司,他们在openshift中做出的关于安全性的决定可能会更严肃或更激进,比如默认情况下使用随机UID运行容器。您可以通过为不同的Nginx用途重新分配路径来解决这个问题。

更改PID位置

pid /tmp/nginx.pid;

更改客户端临时位置(您的问题(:

client_body_temp_path /tmp/nginx/client_temp

以及以类似方式的任何其他路径。

除了RedHat在另一个答案中指定的图像之外,您还可以使用dockerhub中的无特权nginx图像作为认证图像,这些图像应该能更好地与面向安全的RedHat产品配合使用。由于另一张图片将被弃用,我将包括RedHat rhscl/nginix-120-rhel7 推荐的另一个标签

最新更新