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
好了,具體進程運行以下圖所示。web
這裏能夠看到 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!
參考: