摘要:在網上查找資料后有以下發現主進程會以權限運行,之后主進程會讀取文件中的模塊的配置,會使用這個指定的用戶啟動工作進程。工作進程是真正的網絡請求處理的進程。如果沒有特別指定,那么會使用相同的名稱設置。
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?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39722.html
摘要:每個打開文件描述符的最大數量限制。多長時間檢查一次緩存的有效信息指令中的參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的。如果沒有匹配的,則默認使用配置文件中第一個。 頂級配置 #定義 Nginx 運行的用戶和用戶組 user nginx; #進程文件 pid /var/run/nginx.pid; #錯誤日志位置和級別,debug、info、not...
摘要:部分設置的指令將影響其它所有部分的設置部分的指令主要用于指定虛擬主機域名和端口的指令用于設置一系列的后端服務器,設置反向代理及后端服務器的負載均衡部分用于匹配網頁位置比如,根目錄等等。 nginx在工作中已經有好幾個環境在使用了,每次都是重新去網上扒博客,各種編譯配置,今天自己也整理一份安裝文檔和nginx.conf配置選項的說明,留作以后參考。像負載均衡配置(包括健康檢查)、緩存(包...
閱讀 2888·2021-11-15 11:39
閱讀 1513·2021-08-19 10:56
閱讀 1093·2019-08-30 14:12
閱讀 3731·2019-08-29 17:29
閱讀 719·2019-08-29 16:21
閱讀 3417·2019-08-26 12:22
閱讀 1515·2019-08-23 16:30
閱讀 1015·2019-08-23 15:25