❶ 如何限制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文件吧。
轉載,僅供參考。
❷ 如何在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生效。
❸ 如何使用php腳本停止nginx服務
是什麼伺服器,Linux伺服器想要停止nginx得要root許可權,可以用
nginx -s stop
php的話可以用system('nginx -s stop'),但前提是你php得用root執行並且沒有禁用system函數。
❹ 如何 利用 php 重啟 nginx-Linux新手園地
已解決 下面是解決方法
1、設置 sudo 配置文件 可寫許可權
chmod u+w /etc/sudoers
2、增加 www 用戶的 nginx 腳本管理許可權
www ALL=(root) NOPASSWD: /etc/init.d/nginx
3、關閉 【強制控制台登錄】執行
【非常重要】,注釋該行 我的問題就出在這里,開啟了這個選項之後。在PHP中怎麼調用,都沒有執行結果
#Defaults requiretty
4、還原 sudo 配置許可權 440
【非常重要】,如果不還原許可權。在PHP中怎麼調用,都沒有執行結果。
chmod u-w /etc/sudoers
5、調用php
$result2 = exec("/usr/bin/sudo /etc/init.d/nginx stop",$result);
var_mp($result);
var_mp($result2);