Nginx用戶權限css
在nginx.conf文件的第一行通常是設置用戶的地方(編譯安裝nginx時的參數--user=<user>也是指定用戶的地方),如 user www www;html
如不指定默認是nobody. 這裏用戶的設置又有什麼意義呢?主要是指定執行nginx的worker process的用戶,linux裏全部程序都是文件,都具備權限問題,這個指定的用戶對特定的文件有沒有權限訪問或執行,就是這個用戶的意義。linux
1、本人遇到問題nginx
1.1 問題描述apache
不想讓請求直接訪問到具體頁面,只是列出目錄內的文件列表。因而把proxy_pass參數去掉,配置autoindex on,而後指定root目錄。可訪問後返回403,沒有權限。緩存
1.2 問題解決安全
猜想是用戶緣由,由於是默認的nobody,沒有訪問目錄權限,而後指定有權限的用戶,ok了。服務器
2、網上相似問題負載均衡
例一:403錯誤,沒有權限dom
參考:
http://www.2cto.com/os/201306/218538.html
http://www.2cto.com/os/201203/122371.html
有時候當Nginx讀取本地目錄時會收到403錯誤,權限問題。
先來了解一下 Nginx的用戶管理 :
(1) Nginx在以Linux service腳本啓動時,經過start-stop-domain啓動,會以root權限運行daemon進程。
(2) 而後daemon進程讀取/etc/nginx/nginx.conf文件中的user配置選項,默認這裏的user=nginx,也就是用nginx用戶啓動worker process。403錯誤就是由於nginx用戶沒有權限訪問我當前開發用的用戶目錄,/home/dean/work/resources。
解決方法是將user=nginx替換成root,而後從新啓動nginx,能夠了。
其餘方法也試過,好比給/home/dean/work/resources目錄設置777權限,好比將nginx用戶加入root組,都不行。因此當開發的時候,就用user=root配置吧。至於產品環境下,resouces目錄徹底能夠放到nginx用戶目錄下,因此問題不大。
舉例2:訪問速度慢
http://www.360doc.com/content/12/0914/16/1073512_236099670.shtml
在說問題前,先掃下盲,關於linux下的nobody用戶:
nobody 是系統用戶,是一個不能登錄的賬號,一個特殊用途的用戶 ID ,一些服務進程如apache,aquid等都採用一些特殊的賬號來運行,好比nobody,news,games等等。通常來講 uid < 500 的都是系統 ID 。
Linux 系統爲了安全,不少操做和服務的運行都不是運行在 root 用戶下面的,而是一個專用的 ID ,這個 ID 通常就是 nobody ,這樣就能夠把每一個服務運行的狀況隔離出來。保證不會由於服務器程序的問題而讓服務器程序成了黑客的直接操做源(黑客拿下了服務器程序,也僅僅是 nobody 用戶而不是 root 用戶)。同時也不會影響其餘用戶的數據。
服務器程序提權有專用的辦法來防止惡意使用的。
除了 nobody ,常見的還有 ftp 、ssh 什麼的。有的不是用來跑服務,而是用來佔坑,主要是用用戶組的權限管理進行權限設置,這個時候會有一個佔坑用的同名 ID 加入到用戶組。這種狀況好像主要是爲了兼容。
問題描述:
上午業務人員反映,系統響應很慢,界面要刷新好久纔出得來。查後臺也沒有報什麼錯,咱們系統是用nginx作負載均衡。慣性地不走負載均衡而直接訪 問單節點應用,發現響應很快,很正常。初步定位問題出在nginx上,而後查nginx日誌,發現有不少錯誤,錯誤中有「13: Permission denied」這個信息,明顯是權限問題,很奇怪,以前運行都很正常啊。後來一問才知道,維護人員作了操做。
系統上nginx安裝時使用的是root用戶,也是用root用戶啓動的,因此要修改配置的時候須要使用root用戶,管理上不方便,因此維護人員 心血來潮修改了nginx的權限(後來知道他是使用這個命令修改的權限chown -R user:group $nginxdir)。就是將nginx的用戶和組都換掉了,可是這樣爲何會形成「響應慢」呢?
問題緣由及解決:
前面提到在linux上有些應用程序的一些進程會默認使用nobody這個用戶來啓動,以保安全。nginx有兩種進程,除主進程以外的工做進程都 是用nobody這個用戶啓動的(nginx工做進程的數量使用worker_processes這個參數來設定)。而工做進程要訪問nginx下這兩個 目錄client_body_temp和proxy_temp(這兩個目錄按個人理解是緩存一些靜態文件,好比圖片或者css文件什麼的,以提升 nginx訪問速度),權限變動後,形成工做進程訪問不了這兩個目錄下的內容,形成某些圖片和鏈接打不開,就像響應很慢同樣。將權限變動一下就OK了。