nginx user 模块详解

nginx user 模块详解

nginx 运行后可以指定用户,比如说一个静态网页服务器的文件目录的不同的用户有不同的访问权限,使用 nginx 指定用户就可以有权限对此目录读写。

我其实很好奇怎么直接指定用户的,而且运行nginx的时候也没有需要输入密码之类旳。

在网上查找资料后有以下发现

Nginx 主进程(master process)会以 root 权限运行,之后主进程会读取 /etc/nginx/nginx.conf 文件中的 user 模块的配置,nginx 会使用这个指定的用户启动工作进程( worker process)。

那为什么主进程需要使用 root?因为只有 root 可以监听小于1024的端口号,通常 webserver 使用 80/443 端口,这也就是为什么需要 root 来运行了。如果要更改非root用户来运行,需要更改下面的文件用户和用户组,当然你也就不能使用 <1024 的端口了。

  • error_log
  • access_log
  • pid
  • client_body_temp_path
  • fastcgi_temp_path
  • proxy_temp_path
  • scgi_temp_path
  • uwsgi_temp_path

好了,具体进程运行如下图所示。

这里可以看到 nginx 只有一个主进程和多个工作进程,主进程主要读取和评估配置文件正确性,以及管理工作进程。工作进程是真正的网络请求处理的进程。

如果主进程使用root运行,那么nginx 将会调用 setuid()/setgid() 去设置 user/group。如果 group 没有特别指定,那么 nginx 会使用 user 相同的名称设置 group。默认nobody nogroup 或者安装nginx的时候在 ./configure 指定的 --user=USER--group=GROUP

配置语法:

Syntax: user user [group];defualt: user nobody nobody;Context: main

如果使用了 php 的话,那么同时还需要编辑 php-fpm.conf

user - Unix user of processes. Default "www-data"group - Unix group of processes. Default "www-data"

原文首发在我的 github 博客,欢迎关注和star!

参考

  • [Running Nginx as non root user

](https://stackoverflow.com/que...

  • How do I change the NGINX user?

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部