Nginx用戶權限
在nginx.conf文件的第一行一般是設置用戶的地方(編譯安裝nginx時的參數--user=<user>也是指定用戶的地方),如 user www www;
如不指定默認是nobody. 這里用戶的設置又有什么意義呢?主要是指定執行nginx的worker process的用戶,linux里所有程序都是文件,都具有權限問題,這個指定的用戶對特定的文件有沒有權限訪問或執行,就是這個用戶的意義。
一、本人遇到問題
1.1 問題描述
不想讓請求直接訪問到具體頁面,只是列出目錄內的文件列表。於是把proxy_pass參數去掉,配置autoindex on,然后指定root目錄。可訪問后返回403,沒有權限。
1.2 問題解決
猜測是用戶原因,因為是默認的nobody,沒有訪問目錄權限,然后指定有權限的用戶,ok了。
二、網上類似問題
例一:403錯誤,沒有權限
參考:
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了。
原文鏈接