getpwnam(“ www”)在/etc/nginx/nginx.conf中失败


24

我将nginx.conf示例复制到了我的ubuntu 12.04框中(我不知道将其他conf文件放在哪里。我是nginx菜鸟)。当我尝试启动nginx时,出现以下错误:

abe-lens-laptop@abe:/etc$ sudo service nginx start
Starting nginx: nginx: [emerg] getpwnam("www") failed in /etc/nginx/nginx.conf:1
nginx: configuration file /etc/nginx/nginx.conf test failed

这个错误是什么意思?我该如何解决?我找到了这篇文章,但我的用户已经设置为www www(如果在链接文件中看到),如何更改NGINX用户?


指向nginx.config的链接已损坏
Josh Noe

Answers:



8

您的另一个选择(如果您不想创建新用户)是将nginx.conf中的用户字段替换为:

user nobody;

3

创建www用户。在Ubuntu上,应使用以下命令和标志来完成此操作:

sudo adduser --system --no-create-home --shell /bin/false --group --disabled-login www

0

尽管迈克尔·汉普顿的答案是正确的,但这只是答案的一部分。一个更完整的版本是:

  1. 检查用户是否存在
  2. 还要检查您用于启动Docker容器的用户

如果您这样做:

docker -u 0 ....

那么即使该用户存在于主机系统上,也会出现相同的消息。将-u后面的值更改为用户nginx的id即可解决此问题。


0

nginx版本:由gcc 5.4.0 20160609(Ubuntu 5.4.0-6ubuntu1〜16.04.9)构建且由OpenSSL 1.1.0g构建的nginx / 1.13.9 2017年11月2日

只是使用

user  nobody nogroup;

0

这是对我有用的命令“ Scientific Linux”

adduser  --no-create-home  --system  --user-group --shell /bin/false   www

或用户名( www-data如果使用的话)

adduser  --no-create-home  --system  --user-group --shell /bin/false   www-data  

-1

我遇到了同样的问题...我选择了“ nginx”用户,但该用户不存在。我解决了它重新配置并重新编译NGINX的问题,选择了一个现有的。

./configure --prefix = / opt / nginx --user = myUser --group = myUsergroup

现在一切都很好...


编译选项是为某些指令设置默认值的一种方法。当然,没有必要再次编译nginx来更改它们:这些默认值被配置文件重载。
Xavier Lucas 2014年

当然,但是我们正在谈论的是第一次配置/编译……
Jorge LuisGuacarán2014年

您在哪里确切地读过?第一种配置与btw编译无关。
Xavier Lucas 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.