资讯专栏INFORMATION COLUMN

nginx user 模块详解

Turbo / 1124人阅读

摘要:在网上查找资料后有以下发现主进程会以权限运行,之后主进程会读取文件中的模块的配置,会使用这个指定的用户启动工作进程。工作进程是真正的网络请求处理的进程。如果没有特别指定,那么会使用相同的名称设置。

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?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39722.html

相关文章

  • Nginx 配置文件详解

    摘要:每个打开文件描述符的最大数量限制。多长时间检查一次缓存的有效信息指令中的参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的。如果没有匹配的,则默认使用配置文件中第一个。 顶级配置 #定义 Nginx 运行的用户和用户组 user nginx; #进程文件 pid /var/run/nginx.pid; #错误日志位置和级别,debug、info、not...

    fjcgreat 评论0 收藏0
  • nginx服务器安装及配置文件详解

    摘要:部分设置的指令将影响其它所有部分的设置部分的指令主要用于指定虚拟主机域名和端口的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡部分用于匹配网页位置比如,根目录等等。 nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自己也整理一份安装文档和nginx.conf配置选项的说明,留作以后参考。像负载均衡配置(包括健康检查)、缓存(包...

    mylxsw 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<