以非 root 用户身份运行 Nginx

新手上路,请多包涵

我使用 Ansible 安装了 Nginx。为了在 Centos7 上安装,我使用了 yum 包,所以它默认以 root 用户身份运行。我希望它在 Centos 框中以不同用户(前 nginx 用户)的身份启动和运行。当我尝试使用其他用户运行它时,我收到以下错误:

nginx.service 的作业失败,因为控制进程以错误代码退出。有关详细信息,请参阅“systemctl status nginx.service”和“journalctl -xe”。

我知道不建议以 root 身份运行。那么我该如何解决这个问题并以非 root 用户身份运行 nginx。谢谢

原文由 Sarith 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
1 个回答

在您的 /etc/nginx/nginx.conf 中添加/更改以下内容:

 user nginx;

您应该递归地创建用户并授予对 webroot 目录的权限。

这样只有主进程运行为 root因为: 只有 root 进程可以监听 1024 以下的端口。网络服务器通常运行在端口 80 和/或 443。这意味着它需要以 root 身份启动。

关于主进程和工作进程的 文档 中的注释:

主进程的主要目的是读取和评估配置文件,以及维护工作进程。

工作进程对请求进行实际处理。

以非 root 用户身份运行主进程:

更改通过以下 Nginx 指令指定路径的文件的所有权:

  • 错误日志
  • 访问日志
  • PID
  • client_body_temp_path
  • fastcgi_temp_path
  • proxy_temp_path
  • scgi_temp_path
  • uwsgi_temp_path

将监听指令更改为1024以上的端口,以所需用户登录并通过 nginx -c /path/to/nginx.conf 运行nginx

原文由 Farhad Farahi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题