nginx user 模块详解

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

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

在网上查找资料后有如下发现:nginx

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

那为何主进程须要使用 root?由于只有 root 能够监听小于1024的端口号,一般 webserver 使用 80/443 端口,这也就是为何须要 root 来运行了。若是要更改非root用户来运行,须要更改下面的文件用户和用户组,固然你也就不能使用 <1024 的端口了。github

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

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

image

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

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

配置语法php-fpm

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

若是使用了 php 的话,那么同时还须要编辑 php-fpm.confui

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...

相关文章
相关标签/搜索