這篇文章主要給大家介紹了關於php + nginx項目中許可權的相關資料,文章介紹的非常詳細,對大傢具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
nginx/php-fpm
進程許可權
1、nginx的使用者為nginx.conf中配置的使用者
2、php-fpm的使用者為php-fpm.conf中配置的使用者
如:啟動nginx的是root,nginx中配置的user是nginx,那主進程就是root,子進程就是nginx
處理方式
以下訪問均以nginx子進程進行
靜態檔案
php指令檔
步驟:
nginx訪問/index.php時,nginx為了能夠把正確的指令碼處理結果返回給用戶端,需要進行配置告訴nginx.php是非靜態檔案,需要php指令碼解析器進行處理後才能返回內容。
一般來講會在nginx配置中加上類似fastcgi_pass unix:/var/run/php5-fpm.sock;這樣的配置項,指明nginx在遇到訪問指令檔時需要去找誰,之後會訪問該檔案做到將請求轉寄至php-fpm。
由php-fpm訪問真正的php指令檔,將結果傳回值nginx,再有nginx將結果返回至用戶端。
許可權情況:
使用者配置位置
nginx使用者佈建在nginx.conf中第一行的user
php-fpm使用者佈建在php-fpm.conf中的
註:以上兩個設定檔不同的作業系統下檔案名稱略有不同,請根據自身安裝情況自行判斷。
nginx轉寄內容到php-fpm不只有/var/run/php5-fpm.sock的方式,在php-fpm.conf中還可以通過配置改為xxx.xxx.xxx:9000等方式
; The address on which to accept FastCGI requests.; Valid syntaxes are:; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on; a specific port;; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on; a specific port;; 'port' - to listen on a TCP socket to all IPv4 addresses on a; specific port;; '[::]:port' - to listen on a TCP socket to all addresses; (IPv6 and IPv4-mapped) on a specific port;; '/path/to/unix/socket' - to listen on a unix socket.; Note: This value is mandatory.listen = /var/run/php5-fpm.sock
其他
比較特別的點,一般nginx都是用root使用者啟動的(為了擷取80連接埠許可權),如果本地開發nginx是用普通使用者重啟,那麼主進程和子進程都會是目前使用者,nginx.conf中的配置不再起效,暫不清楚原因。
相關推薦:
PHP 網站如何修改預設訪問檔案的nginx配置-執行個體分析
nginx內php動態裁剪圖片步驟詳解
php nginx實現即時輸出步驟詳解