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

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

我试图设置 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;

相关内容