nginx禁止php
Ⅰ 如何在Apache和Nginx禁止上傳目錄里php的執行許可權
網站程序的上傳目錄通常是不需要PHP執行解釋許可權,通過限制目錄的PHP執行許可權可以提網站的安全性,減少被攻擊的機率。
下面和大家一起分享下如何在Apache和Nginx禁止上傳目錄里PHP的執行許可權。
在虛擬主機配置文件中增加php_flag engine off指令即可,配置如下
"/website/uploads">,denyAllowfromallphp_flagengineoff
Nginx更簡單,直接通過location條件匹配定位後進行許可權禁止。
在server配置段中增加如下的配置
如果是單個目錄
location~*^/uploads/.*.(php|php5)${denyall; }
如果是多個目錄
location~*^/(attachments|uploads)/.*.(php|php5)${denyall;}
注意:這段配置文件一定要放在下面配置的前面才可以生效。
location~.php${ fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; includefastcgi_params; }
最後給一個完整的配置示例
location~/mm/(data|uploads|templets)/*.(php)${ denyall; } location~.php${ try_files$uri/404.html; fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; includefastcgi_params; }
配置完後記得重啟Nginx生效。
Ⅱ nginx PHP文件不能正常訪問.
一般nginx默認配置中會是這個樣子的。這里有一個SCRIPT_FILENAME變數,但是fastcgi_params這個文件中是不包含該變數的,改變數的定義實際上是在fastcgi.conf文件中。
實際上可以把配置修改成如下的配置。
location~.php${
root/usr/share/nginx/html;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi_intercept_errorson;
includefast_cgi.conf;
#可以增加rewrite,也可以不增加。
}
按如上的配置,如果訪問127.0.0.1:9000/a.php,則實際上根據root指令和fast_cgi.conf配置,nginx會通過fast_pass指令訪問/usr/share/nginx/html/a.php這個文件。
記得用root指令,指定站點的文檔根路徑。