nginx使用者許可權
在nginx.conf檔案的第一行一般是設定使用者的地方(編譯安裝nginx時的引數--user=也是指定使用者的地方),如 user www www;
如不指定預設是nobody. 這裡使用者的設定又有什麼意義呢?主要是指定執行nginx的worker process的使用者,linux裡所有程式都是檔案,都具有許可權問題,這個指定的使用者對特定的檔案有沒有許可權訪問或執行,就是這個使用者的意義。
一、本人遇到問題
1.1 問題描述
不想讓請求直接訪問到具體頁面,只是列出目錄內的檔案列表。於是把proxy_pass引數去掉,配置autoindex on,然後指定root目錄。可訪問後返回403,沒有許可權。
1.2 問題解決
猜測是使用者原因,因為是預設的nobody,沒有訪問目錄許可權,然後指定有許可權的使用者,ok了。
二、網上類似問題
例一:403錯誤,沒有許可權
參考:有時候當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:訪問速度慢
在說問題前,先掃下盲,關於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了。
Nginx使用者許可權
有時候當nginx讀取本地目錄時會收到403錯誤,許可權問題。先來了解一下nginx的使用者管理,nginx在以linux service指令碼啟動時,通過start stop domain啟動,會以root許可權執行daemon程序。然後daemon程序讀取 etc nginx nginx.con...
nginx使用者許可權
b nginx使用者許可權 b 在nginx.conf檔案的第一行一般是設定使用者的地方 編譯安裝nginx時的引數 user 也是指定使用者的地方 如 user www www 如不指定預設是nobody.這裡使用者的設定又有什麼意義呢?主要是指定執行nginx的worker process的使用...
Nginx使用者許可權
有時候當nginx讀取本地目錄時會收到403錯誤,許可權問題。先來了解一下nginx的使用者管理,nginx在以linux service指令碼啟動時,通過start stop domain啟動,會以root許可權執行daemon程序。然後daemon程序讀取 etc nginx nginx.con...