尽管以 UID root 身份运行,nginx 中的用户指令仍生成错误

尽管以 UID root 身份运行,nginx 中的用户指令仍生成错误

我在安装了 brew 的 MacOS X 机器上运行 nginx,当我启动 nginx 时,即使使用 sudo,我的日志文件中也会反复出现以下警告:

4/21/11 2:03:42 AM  org.nginx[3788] nginx: [warn] the "user" directive
makes sense only if the master process runs with super-user privileges,
ignored in /usr/local/etc/nginx/conf/nginx.conf:2

nginx.conf

user  jschuur staff;

我已经使用 sudo 启动了 nginx,因为我想让它监听 80 端口。这还不足以赋予它适当的超级用户权限吗?

安装的 nginx 二进制文件:

jschuur@Glenna:sbin → master ls -la
total 4544
drwxr-xr-x   3 jschuur  staff      102 Apr 12 20:53 .
drwxrwxr-x  15 jschuur  staff      510 Apr 12 15:25 ..
-rwxr-xr-x   1 jschuur  staff  2325648 Apr 12 20:39 nginx

值得一提的是,我重新编译了二进制文件来设置乘客,并将其从原始位置移到 /usr/local/sbin 中。

更新:事实证明,在我停止 nginx 后,MacOS X 会重新启动它,因为 ~/Library/LaunchAgents 中的 launchd plist 已将其设置为“KeepAlive”。但是,由于我将此 plist 安装到本地用户的 LaunchAgents 文件夹中,而不是 /Library/LaunchAgents(或者更好的是 /Library/LaunchDaemons,它甚至在您登录之前就运行),因此它不是以 root 身份执行的。由于出现有关没有权限使用端口 80 的错误,它实际上立即退出,但仍然写入与我使用 sudo 启动的 nginx 进程相同的日志文件。我原以为自动重启导致的错误实际上来自我通过 sudo 手动重启。

所以,总而言之,问题解决了。真正的问题是自制软件说明​​明确要求您将 plist 文件安装到不允许本地站点使用端口 80 的区域。

答案1

您应该检查sudo id命令显示 uid = 0 的位置

相关内容