⑴ 如何在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的使用者是越來越多,多數網站也從原本使用很多的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文件吧。
轉載,僅供參考。
⑶ mac配置php-fpm,nginx運行多版本php
1、brew 安裝 php5.6 php5.7 nginx
2、配置php-conf
3、配置虛擬主機
安裝好brew
用brew 命令安裝,如果速度太慢或訪問不了,自行goole brew 換源
brew search php 查看可用的php版本
brew install [email protected] 安裝php5.6
brew install [email protected] 安裝php5.6
brew install nginx 安裝nginx
1、修改php5.6 php-fpm的埠為9056
cd usr/local/etc/php/5.6 # 到php5.6的目錄下
vi php-fpm.conf # 修改文件
listen = 127.0.0.1:9056 # 修改此埠
daemonize = yes # 修改為允許後台啟動php-fpm
2、修改php5.6 php-fpm的埠為9070
cd /usr/local/etc/php/7.1/php-fpm.d # 到php7.1的目錄下
vi www.conf # 修改埠
listen = 127.0.0.1:9056 # 修改此埠
vi php-fpm.conf # 修改文件
daemonize = yes # 修改為允許後台啟動php-fpm
3、啟動php-fpm
cd /usr/local/sbin # 到此目錄,建立兩個軟鏈接指向不同版本的php
切換到root用戶
./php-fpm56
./php-fpm71
啟動後可看到php-fpm的進程,則成功
ps-ef | grep php-fpm
cd /usr/local/etc/nginx/ # 到nginx的目錄下
復制默認的配置文件到server下(此目錄用來存虛擬主機文件)
這里我在server創建了這兩個
vi local.phpinfo56.com.conf # 修改本地域名和nginx代理到php-fpm埠,按照這種方法修改另一個
nginx # 啟動nginx
nginx -s reload # 修改配置文件,重新載入nginx
vi /etc /hosts # 修改host 加上映射關系
cd /usr /local/var/www # 在此目錄下建立一個index.php
echo "<?php phpinfo();" > index.php
在瀏覽器訪問可看到