nginx虛擬主機(jī)防webshell完美版
我們先來(lái)看下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端口接受到訪問(wèn)請(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處理,而如果先訪問(wèn)www.a.com那么../../../../../就會(huì)變成A網(wǎng)站的根目錄地址,然后這時(shí)候如果你訪問(wèn)www.b.com,那么open_basedir仍然是A網(wǎng)站的根目錄,但是對(duì)于B來(lái)說(shuō),又是不允許訪問(wèn)的,所以就造成了,第二個(gè)站點(diǎn)打開(kāi)以后會(huì)出現(xiàn)no input files,那么有什么解決辦法呢?
我們可以把不同的虛擬主機(jī)發(fā)送到不同的php-cgi端口進(jìn)行處理,當(dāng)然響應(yīng)的php-fpm配置文件中的open_basedir也不同。。我們來(lái)看看怎么配置。。
首先,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
注釋掉原來(lái)的 #$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
開(kāi)了9000 9001分別處理兩個(gè)站點(diǎn)請(qǐng)求
兩個(gè)php-cgi主進(jìn)程加載不同的conf文件,這樣就完美解決了虛擬主機(jī)webshell能跨目錄的問(wèn)題
當(dāng)然,啟動(dòng)之前記得conf里面的max_children,開(kāi)啟php-cgi子進(jìn)程數(shù),相應(yīng)要減少一些,以免造成內(nèi)存不足
文章來(lái)源:DoDo's Blog
原文地址:http://www.sectop.com/post/35.html
相關(guān)文章
nginx 隱藏版本號(hào)與WEB服務(wù)器信息的解決方法
這篇文章主要介紹了nginx 隱藏版本號(hào)與WEB服務(wù)器信息的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11記一次nginx配置不當(dāng)引發(fā)的499與failover 機(jī)制失效問(wèn)題
近期在非高峰期也存在499超過(guò)告警閾值的偶發(fā)情況,多的時(shí)候一天幾次,少的時(shí)候則幾天一次,持續(xù)一般也就數(shù)分鐘,經(jīng)過(guò)和小伙伴的共同探究,最后發(fā)現(xiàn)之前對(duì)于499是客戶端主動(dòng)斷開(kāi)因而和服務(wù)端關(guān)系不大的想當(dāng)然認(rèn)知是錯(cuò)誤的,這里記錄一下2023-05-05阿里云Linux系統(tǒng)Nginx配置多個(gè)域名的方法詳解
本篇文章主要介紹了阿里云Linux系統(tǒng)Nginx配置多個(gè)域名的方法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02nginx配置文件nginx.conf中文注釋說(shuō)明
nginx配置文件nginx.conf中文注釋說(shuō)明,大家參考使用吧2013-12-12Nginx開(kāi)源可視化配置工具NginxConfig使用教程
這篇文章主要為大家介紹了Nginx開(kāi)源可視化配置工具NginxConfig使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Nginx訪問(wèn)靜態(tài)資源配置的實(shí)現(xiàn)步驟
Nginx 擅長(zhǎng)于底層服務(wù)器端資源的處理,例如靜態(tài)資源處理轉(zhuǎn)發(fā)、反向代理,負(fù)載均衡等,本文主要介紹了Nginx訪問(wèn)靜態(tài)資源配置的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Nginx配置之實(shí)現(xiàn)多臺(tái)服務(wù)器負(fù)載均衡
這篇文章主要介紹了Nginx配置之實(shí)現(xiàn)多臺(tái)服務(wù)器負(fù)載均衡,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07nginx 不同的訪問(wèn)路徑對(duì)應(yīng)項(xiàng)目不同的目錄的實(shí)現(xiàn)方法
要在 Nginx 中配置不同的訪問(wèn)路徑對(duì)應(yīng)不同的項(xiàng)目目錄,可以使用 Nginx 的?location?指令來(lái)實(shí)現(xiàn),本文主要介紹了nginx不同的訪問(wèn)路徑對(duì)應(yīng)項(xiàng)目不同的目錄的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09