nginx為多使用者多網域名稱提供虛擬主機一直都是個問題.在php的執行上是採用fastcgi的方式執行的.php在fastcgi模式下雖然效率有很多提公升,但是也暴露出乙個問題,就是安全性問題.php以fastcgi方式執行一般是採用tcp或者socket方式,這兩種方式本質上是一樣的. 都是以同乙個使用者許可權執行,這樣在多使用者多網域名稱多**的情況下就變得很糟糕,很容易形成跨站.被黑客利用的話,他就可以遍歷整台伺服器中php執行許可權能 訪問的地方,也就是多個**的目錄.原因就是因為fastcgi方式執行的php對每個目錄指定的open_basedir是一樣的.
下面簡單介紹一種nginx下防止多站點之間跨目錄訪問的方法:對每個站點採用不同的fastcgi埠進行處理.
1.在nginx.conf裡把每個虛擬主機站點請求埠給區別開
我的第乙個站點配置
01
server
02
16
}
我的另乙個站點配置
01
server
02
16
}
這裡需要注意的是,fastcgi_pass unix:/tmp/php-cgi.sock 和 fastcgi_pass 127.0.0.1:9001 這是兩種不同的處理方式,同時只能使用其中的一種,這裡我們需要用到的是後面一種,把前面的登出掉。
2.為每個站點建乙個conf,並進行配置
1
cp
/usr/
local
/php/etc/php-fpm.conf /usr/
local
/php/etc/www.conf
2
cp
/usr/
local
/php/etc/php-fpm.conf /usr/
local
/php/etc/soft.conf
在www.conf中找到php_defines,新增內容
/home/wwwroot/www:/tmp:/var/tmp
在www.conf中找到listen_address,修改內容為
127.0.0.1:9000
在soft.conf中找到php_defines,新增內容
/home/wwwroot/soft:/tmp:/var/tmp
在soft.conf中找到listen_address,修改內容為
127.0.0.1:9001
這裡注意一下埠號,別設定錯了,要和nginx.conf裡面對應。
3.修改 /usr/local/php/sbin/php-fpm啟動指令碼
預設的php-fpm(部分**)是下面這樣的:
1
php_fpm_bin=/usr/
local
/php/bin/php-cgi
2
php_fpm_conf=/usr/
local
/php/etc/php-fpm.conf
3
php_fpm_pid=/usr/
local
/php/logs/php-fpm.pid
4
php_opts=
"--fpm-config $php_fpm_conf"
5
case
$1
in
6
start)
7
$php_fpm_bin --fpm $php_opts
我們這裡要載入兩個配置檔案,修改如下:
01
php_fpm_bin=/usr/
local
/php/bin/php-cgi
02
php_fpm_conf1=/usr/
local
/php/etc/www.conf
03
php_fpm_conf2=/usr/
local
/php/etc/soft.conf
04
php_fpm_pid=/usr/
local
/php/logs/php-fpm.pid
05
php_opts1=
"--fpm-config $php_fpm_conf1"
06
php_opts2=
"--fpm-config $php_fpm_conf2"
07
case
$1
in
08
start)
09
$php_fpm_bin --fpm $php_opts1
10
$php_fpm_bin --fpm $php_opts2
4.配置完成了,啟動服務
view source
print?
1
/usr/
local
/php/sbin/php-fpm start
2
/usr/
local
/nginx/sbin/nginx -s reload
開了9000 9001倆個不同的埠分開處理兩個站點請求,兩個php-cgi主程序載入不同的conf檔案。 當然,啟動之前記得conf裡面的max_children,開啟php-cgi子程序數,相應要減少一些,以免造成記憶體不足。
在寫這篇文章的時候,我試了好幾次都沒有成功,主要原因是php-fpm啟動指令碼裡面寫錯了。前面兩步一般不會出問題,主要是第三步,如果啟動不成功,多檢查檢查就會發現問題了。
配置Apache防止webshell上傳
在linux伺服器的web應用中,經常需要上傳檔案到伺服器上。不管是php的也好,jsp的也好,如果web程式對於上傳檢查不嚴格,可導致黑客上傳webshell,對伺服器安全威脅自不用說了。對於web開發對檔案上傳的限制,這裡就不說了,這裡僅僅來討論伺服器如何設定才防止上傳的webshell執行。記...
配置Apache防止webshell上傳
在linux伺服器的web應用中,經常需要上傳檔案到伺服器上。不管是php的也好,jsp的也好,如果web程式對於上傳檢查不嚴格,可導致黑客上傳webshell,對伺服器安全威脅自不用說了。對於web開發對檔案上傳的限制,這裡就不說了,這裡僅僅來討論伺服器如何設定才防止上傳的webshell執行。記...
Nginx防止盜鏈
防 止盜鏈不僅能保護版權,又節約了不少流量。最近和bsdmap交流了下,聽說他們通過防盜煉節約了近1 3的流量。nginx的防盜煉設定還是比較簡 單的,可以分為普通防盜煉和ip cookie based防盜煉。其中ip based防盜煉需要安裝nginx的module,所以相對麻煩一些。nginx最...