Nginx | getpwnam(“nginx”) 失败(2:没有此文件或目录)

Nginx | getpwnam(“nginx”) 失败(2:没有此文件或目录)

我正在尝试使用以下Nginx.conf文件启动 Docker 容器,但总是出现getpwnam("nginx") failed (2: No such file or directory)错误。

我尝试在主上下文中使用用户 nobody; 但是这也不起作用。

我甚至在我的 Synology 上创建了一个 nginx 用户来查看是否有区别。

直到我开始添加 SSL 证书时才出现此错误。不太确定我做错了什么!

http {
    server {
        listen         8080;
        server_name    www.servername.com;
        return         301 https://$host$request_uri;
    }

    server {
        listen         8443 ssl default deferred;
        server_name    www.servername.com;

            ssl_certificate_key          /privkey.pem;
            ssl_certificate              /fullchain.pem;
            ssl_trusted_certificate      /fullchain.pem;

            # Improve HTTPS performance with session resumption
            ssl_session_cache shared:SSL:10m;
            ssl_session_timeout 5m;

            # Enable server-side protection against BEAST attacks
            ssl_prefer_server_ciphers on;
            ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

            # Disable SSLv3
            ssl_protocols TLSv1.1 TLSv1.2;

            # Diffie-Hellman parameter for DHE ciphersuites
            # $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
              # ssl_dhparam /etc/ssl/certs/dhparam.pem;

            # Enable HSTS (https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security)
              add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";

            # Enable OCSP stapling (http://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox)
            ssl_stapling on;
            ssl_stapling_verify on;
            resolver 8.8.8.8 8.8.4.4 valid=300s;
            resolver_timeout 5s;

        location / {
            proxy_pass              http://192.168.1.4:38077;
            proxy_set_header        X-Real-IP           $remote_addr;
            proxy_set_header        Host                $host;
            proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto   $scheme;
            proxy_redirect off;
        }
    }
}

答案1

我认为您在指定 SSL 证书路径时出错了。请使用证书文件的完整路径作为指令ssl_certificate_keyssl_certificatessl_trusted_certificate。例如

 ssl_trusted_certificate /etc/nginx/ssl/fullchain.pem;

答案2

搞清楚了。查看了官方的 Nginx docker 镜像及其 docker-compose 脚本后,用户“nginx”被写入了镜像本身。

基本上,容器肯定搞砸了。缺少嵌入在镜像中的 nginx 用户是一个严重的问题,所以我只是删除了容器(以及镜像,以确保万无一失),重新下载镜像,然后使用完全相同的参数再次启动它,它运行良好。

我认为问题在于,在弄清楚 nginx 等时,我对挂载在图像上的卷进行了大量更改,并且我一定是以某种方式弄乱了内部 .conf。

相关内容