nginx虛擬主機(jī)防webshell完美版,使用nginx的朋友可以參考下。
nginx虛擬主機(jī)防webshell完美版,使用nginx的朋友可以參考下。我們先來看下nginx.conf
server
{
listen 80;
server_name www.a.com;
index index.html index.htm index.php;
root /data/htdocs/www.a.com/;
#limit_conn crawler 20;
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
}
server
{
listen 80;
server_name www.b.com;
index index.html index.htm index.php;
root /data/htdocs/www.b.com/;
#limit_conn crawler 20;
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
}
nginx在80端口接受到訪問請(qǐng)求后,會(huì)把請(qǐng)求轉(zhuǎn)發(fā)給9000端口的php-cgi進(jìn)行處理
而如果修改php.ini中open_basedir= ../../../../../ ,針對(duì)兩個(gè)不同的網(wǎng)站,www.a.com , www.b.com都會(huì)把請(qǐng)求發(fā)送給9000處理,而如果先訪問www.a.com那么../../../../../就會(huì)變成A網(wǎng)站的根目錄地址,然后這時(shí)候如果你訪問www.b.com,那么open_basedir仍然是A網(wǎng)站的根目錄,但是對(duì)于B來說,又是不允許訪問的,所以就造成了,第二個(gè)站點(diǎn)打開以后會(huì)出現(xiàn)no input files,那么有什么解決辦法呢?
我們可以把不同的虛擬主機(jī)發(fā)送到不同的php-cgi端口進(jìn)行處理,當(dāng)然響應(yīng)的php-fpm配置文件中的open_basedir也不同。。我們來看看怎么配置。。
首先,nginx.conf配置如下
server
{
listen 80;
server_name www.a.com;
index index.html index.htm index.php;
root /data/htdocs/www.a.com/;
#limit_conn crawler 20;
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
}
server
{
listen 80;
server_name www.b.com;
index index.html index.htm index.php;
root /data/htdocs/www.b.com/;
#limit_conn crawler 20;
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
include fcgi.conf;
}
}
注意:www.a.com 的請(qǐng)求發(fā)送到9000端口 , www.b.com的請(qǐng)求發(fā)送到9001端口,依次類推
nginx配置修改了,相對(duì)的,php-fpm.conf也要修改
每個(gè)站點(diǎn)建一個(gè)conf
A站點(diǎn)
#cp /usr/local/webserver/php/etc/php-fpm.conf /usr/local/webserver/php/etc/www.a.com.conf
#vi /usr/local/webserver/php/etc/www.a.com.conf
找到php_defines,添加
<value name="open_basedir">/data/htdocs/www.a.com:/tmp:/var/tmp</value>
B站點(diǎn)
#cp /usr/local/webserver/php/etc/php-fpm.conf /usr/local/webserver/php/etc/www.b.com.conf
#vi /usr/local/webserver/php/etc/www.b.com.conf
找到php_defines,添加
<value name="open_basedir">/data/htdocs/www.b.com:/tmp:/var/tmp</value>
找到listen_address,修改為
<value name="listen_address">127.0.0.1:9001</value> 注意這里的端口號(hào)
最后要修改php-fpm啟動(dòng)腳本
#vi /usr/local/webserver/php/sbin/php-fpm
注釋掉原來的 #$php_fpm_BIN --fpm $php_opts,添加
$php_fpm_BIN --fpm --fpm-config /usr/local/webserver/php/etc/www.a.com.conf
$php_fpm_BIN --fpm --fpm-config /usr/local/webserver/php/etc/www.b.com.conf
啟動(dòng)服務(wù)
#/usr/local/webserver/php/sbin/php-fpm restart
查看端口
#netstat -tln
開了9000 9001分別處理兩個(gè)站點(diǎn)請(qǐng)求
兩個(gè)php-cgi主進(jìn)程加載不同的conf文件,這樣就完美解決了虛擬主機(jī)webshell能跨目錄的問題
當(dāng)然,啟動(dòng)之前記得conf里面的max_children,開啟php-cgi子進(jìn)程數(shù),相應(yīng)要減少一些,以免造成內(nèi)存不足
企業(yè)網(wǎng)站建設(shè)解決方案 營(yíng)銷型網(wǎng)站建設(shè)解決方案 行業(yè)門戶網(wǎng)站建設(shè)解決方案 外貿(mào)網(wǎng)站解建設(shè)決方案 品牌形象網(wǎng)站建設(shè)解決方案 購物商城網(wǎng)站建設(shè)解決方案 政府網(wǎng)站建設(shè)解決方案 手機(jī)網(wǎng)站建設(shè)解決方案 教育培訓(xùn)網(wǎng)站建設(shè)解決方案 珠寶高端奢飾品網(wǎng)站建設(shè)解決方案 房地產(chǎn)、地產(chǎn)項(xiàng)目網(wǎng)站建設(shè)解決方案 集團(tuán)、上市企業(yè)網(wǎng)站建設(shè)解決方案 數(shù)碼、電子產(chǎn)品網(wǎng)站建設(shè)解決方案 美容、化妝品行業(yè)網(wǎng)站建設(shè)解決方案
10年專業(yè)互聯(lián)網(wǎng)服務(wù)經(jīng)驗(yàn) 重慶最專業(yè)網(wǎng)站團(tuán)隊(duì) 資深行業(yè)分析策劃 B2C營(yíng)銷型網(wǎng)站建設(shè)領(lǐng)先者 最前沿視覺設(shè)計(jì)、研發(fā)能力 時(shí)刻最新技術(shù)領(lǐng)先研發(fā)能力 具有完備的項(xiàng)目管理 完善的售后服務(wù)體系 深厚的網(wǎng)絡(luò)運(yùn)營(yíng)經(jīng)驗(yàn)
中技互聯(lián)一直秉承專業(yè)、誠(chéng)信、服務(wù)、進(jìn)取的價(jià)值觀,堅(jiān)持優(yōu)秀的商業(yè)道德,以用戶最終價(jià)值為導(dǎo)向,向用戶提供優(yōu)質(zhì)產(chǎn)品和優(yōu)質(zhì)服務(wù),從而贏得了用戶的信賴。始終以不懈的努力、更高的目標(biāo)來要求自己。
主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè) | 重慶網(wǎng)站建設(shè) | 重慶網(wǎng)站設(shè)計(jì) | 重慶網(wǎng)站制作 | 重慶網(wǎng)頁設(shè)計(jì) | 重慶網(wǎng)站開發(fā)