【问题标题】:Issue: nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)问题:nginx:[emerg] mkdir() "/var/cache/nginx/client_temp" 失败(13:权限被拒绝)
【发布时间】:2022-01-23 13:08:12
【问题描述】:

我正在尝试在 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

【问题讨论】:

  • 您能解释一下您在部署此应用程序时采取了哪些步骤吗?您使用的是什么容器映像?此外,任何清单文件都会有所帮助。
  • 我正在使用 nginx 映像“nginxinc/nginx-unprivileged”。这些文件是服务、部署/守护程序集和配置映射。
  • 能否提供服务、部署和配置映射清单?

标签: nginx kubernetes openshift kubernetes-ingress nginx-config


【解决方案1】:

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

这类问题几乎总是由于 OpenShift 默认以非 root 身份运行容器。如果您更改文件权限以允许对 GROUP=0 进行写访问,您将解决几乎所有问题。

【讨论】:

    【解决方案2】:

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

    更改 PID 位置

    pid /tmp/nginx.pid;
    

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

    client_body_temp_path /tmp/nginx/client_temp
    

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

    除了 RedHat 的另一个答案中指定的图像之外,您还可以使用 docker hub 中的 unprivileged nginx 图像作为认证图像,这些图像应该与面向安全的 RedHat 产品更好地配合使用。由于另一张图片已被弃用,因此我包含了 RedHat rhscl/nginx-120-rhel7

    推荐的其他标签

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 2021-01-31
      • 2015-05-03
      • 2017-11-03
      • 1970-01-01
      • 2021-04-02
      • 2017-07-23
      • 1970-01-01
      • 2019-12-17
      相关资源
      最近更新 更多