我试图设置 nginx 来与我的一个 rails 应用程序一起运行,当查看输出时ps -e | grep nginx
,我意识到 nginx 工作进程以用户 nobody 的身份运行。
它们没有作为 www-data 运行的原因是什么?
答案1
它们没有作为 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-data,所以这是一个明智的选择。
答案2
master 进程以 root 身份运行,则 nginx 会将setuid()
/setgid()
改为USER
/ GROUP
。如果GROUP
没有指定,则 nginx 使用与 相同的名称USER
。
默认情况下,它是nobody
用户和nobody
或无组组或来自脚本的--user=USER
和。--group=GROUP
./configure
您可以编辑 nginx.conf 并set user to www www;