为什么Nginx进程没有用户运行


16

我试图将nginx设置为与我的一个rails应用程序一起运行,当查看的输出时ps -e | grep nginx,我意识到nginx worker进程在没有人的情况下运行。

为什么没有将它们作为www-data运行?


1
似乎是一个合理的问题,可以提供有意义的答案-发问者为什么要提出要点?
2014年

Answers:


25

为什么没有将它们作为www-data运行?

是。您很可能没有在nginx配置中指定用户

用户指令:http : //nginx.org/en/docs/ngx_core_module.html#user

syntax: user user [group];
default:    
user nobody nobody;
context:    main

如何以特定用户身份运行Nginx?

您可以在nginx配置中指定运行nginx的用户/组。

这是nginx配置可能看起来的示例(请注意用户指令):

pid                 /path/to/nginx.pid;
user                www-data www-data;
worker_processes    1;

events {
   worker_connections  1024; # usually 1024 is a good default
}

http {
   # more code goes here
}

只需更新您的配置,然后重新加载或重新启动nginx,您就应该做好了。

当然,您应该选择最适合您的系统的用户,默认情况下,在Debian / Ubuntu中有一个www数据,因此这是一个明智的选择。


在我看来,www数据是/ var / www的所有者/组,对nginx进程使用同一用户不是一个好主意(stackoverflow.com/questions/22336186/…)通过apt全新安装nginx在debian上使用用户nginx。也许您想将示例更改为使用nginx用户。
二元异常2014年

4

主进程以root身份运行,然后nginx将setuid()/ setgid()USER/ GROUP。如果GROUP未指定,则nginx使用与相同的名称USER

默认情况下,它的nobody用户和nobody或nogroup组或--user=USER--group=GROUP./configure脚本。

您可以编辑nginx.conf和 set user to www www;

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.