国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Web服務器 > 正文

nginx虛擬主機防webshell完美版

2024-09-01 13:45:47
字體:
來源:轉載
供稿:網友

我們先來看下nginx.conf

  server
  {
    listen       80;
    server_name  ;
    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  ;
    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端口接受到訪問請求后,會把請求轉發給9000端口的php-cgi進行處理

而如果修改php.ini中open_basedir= ../../../../../ ,針對兩個不同的網站, , 都會把請求發送給9000處理,而如果先訪問那么../../../../../就會變成A網站的根目錄地址,然后這時候如果你訪問,那么open_basedir仍然是A網站的根目錄,但是對于B來說,又是不允許訪問的,所以就造成了,第二個站點打開以后會出現no input files,那么有什么解決辦法呢?

我們可以把不同的虛擬主機發送到不同的php-cgi端口進行處理,當然響應的php-fpm配置文件中的open_basedir也不同。。我們來看看怎么配置。。

首先,nginx.conf配置如下

 server
  {
    listen       80;
    server_name  ;
    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  ;
    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;
    }

}

nginx配置修改了,相對的,php-fpm.conf也要修改

每個站點建一個conf

 

A站點

#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>/data/htdocs/www.a.com:/tmp:/var/tmp</value>

 

 

 

B站點

#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>/data/htdocs/www.b.com:/tmp:/var/tmp</value>

 

找到listen_address,修改為

<value>127.0.0.1:9001</value>   注意這里的端口號

 

最后要修改php-fpm啟動腳本

#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

啟動服務

#/usr/local/webserver/php/sbin/php-fpm restart

查看端口

#netstat -tln

 

開了9000 9001分別處理兩個站點請求

兩個php-cgi主進程加載不同的conf文件,這樣就完美解決了虛擬主機webshell能跨目錄的問題

當然,啟動之前記得conf里面的max_children,開啟php-cgi子進程數,相應要減少一些,以免造成內存不足

文章來源:DoDo's Blog
原文地址:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 濮阳县| 东辽县| 阿拉善右旗| 遂溪县| 公主岭市| 平定县| 兴海县| 贺州市| 乡宁县| 阳谷县| 信阳市| 类乌齐县| 乡宁县| 宜兰市| 永靖县| 图片| 奉新县| 金昌市| 琼结县| 资溪县| 阜南县| 柳林县| 蒲江县| 洪泽县| 无棣县| 郴州市| 塘沽区| 周宁县| 赤水市| 和田县| 浑源县| 宽甸| 永福县| 中江县| 辛集市| 鹤壁市| 桐乡市| 浏阳市| 水富县| 玛纳斯县| 虹口区|