⑴ 如何限制Nginx+php的目錄許可權
最近Nginx的使用者是越來越多,多數網站也從原本使用很多的Apache平台或其他平台遷移到了Nginx。對於剛剛接觸Nginx的朋友來說,如何限制Nginx+PHP的目錄許可權成了實際問題,
大家都知道,在Apache中可以很容易的對虛擬目錄進行許可權控制,如:
程序代碼如下:
<VirtualHost IPn>
ServerAdmin [email protected]
DocumentRoot /usr/www/xpb/
ServerName IP:80
ServerAliasIP
ErrorLog logs/default-error_log
php_admin_value open_basedir "/tmp/:/usr/www/xpb/"
</VirtualHost>
關鍵是後面的這句php_admin_value,這樣就限制了php的操作目錄僅限於/tmp/和/usr/www/xpb/這兩個目錄了。對於Apache虛擬主機來說,這個設置十分有用,結合在php.ini中禁用一些php函數,幾乎可以杜絕PHP木馬對其他站點及系統的危害。我雖沒專業做過linux下的虛擬主機,但相信各大虛擬主機商也是這么做的。
看來對於Apache最好的辦法還是使用「在php.ini中禁用一些危險的php函數和在Apache虛擬主機中配置php_admin_value」的方式來做虛擬主機的安全。
關於Nginx的配置文件,參考了很多資料,好像是不支持php_admin_value open_basedir,也就是Nginx暫時還沒有Apache的 php_myadmin_value這類的設置。如果用Nginx做虛擬主機,各用戶之間的目錄安全控制如何來做呢?網上很多人說,限制上傳文件類型,做好程序安全不就行了么?對,對於自己的站點來說這樣完全可以。但如果虛擬主機是給別人用的,又給予了FTP許可權,總不能不讓人上傳php文件吧。
轉載,僅供參考。
⑵ linux nginx 無法執行php文件
為以前沒有接觸過nginx ,所以查了一天,查處原因有二:
一、網站根目錄
默認是在 /usr/local/nginx/html文件
配置在
location / {
root /home/www/wwwroot;
index index.html index.htm;
}
二、修改文件中對應的php配置部分
location ~ \.php$ {
root /home/www/wwwroot;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
特別需要注意的是:fastcgi_param這個參數默認的是$fastcgi_script_name;最好改為$document_root$fastcgi_script_name;我在實際配置中出現了php找不到需要解析文件而返回404或者500錯誤的問題。所以最好是帶上網站根目錄的路徑變數$document_root