IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 服务器 > WEB服务器 > Nginx虚拟主机

Nginx虚拟主机

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

我们先来看下nginx.conf

server
{
listen 80;
server_name  www.itmop.com;
index index.html index.htm index.php;
root  /data/htdocs/www.itmop.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.downcc.com;
index index.html index.htm index.php;
root  /data/htdocs/www.downcc.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= ../../../../../ ,针对两个不同的网站,www.itmop.com , www.downcc.com都会把请求发送给9000处理,而如果先访问www.itmop.com那么../../../../../就会变成A网站的根目录地址,然后这时候如果你访问www.downcc.com,那么open_basedir仍然是A网站的根目录,但是对于B来说,又是不允许访问的,所以就造成了,第二个站点打开以后会出现no input files,那么有什么解决办法呢?

我们可以把不同的虚拟主机发送到不同的php-cgi端口进行处理,当然响应的php-fpm配置文件中的open_basedir也不同。。我们来看看怎么配置。。

首先,nginx.conf配置如下

server
{
listen 80;
server_name  www.itmop.com;
index index.html index.htm index.php;
root  /data/htdocs/www.itmop.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.downcc.com;
index index.html index.htm index.php;
root  /data/htdocs/www.downcc.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.itmop.com 的请求发送到9000端口 , www.downcc.com的请求发送到9001端口,依次类推

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

每个站点建一个conf

A站点

#cp /usr/local/webserver/php/etc/php-fpm.conf /usr/local/webserver/php/etc/www.itmop.com.conf

#vi /usr/local/webserver/php/etc/www.itmop.com.conf

找到php_defines,添加

<value name=&open_basedir&>/data/htdocs/www.itmop.com:/tmp:/var/tmp</value>

 

B站点

#cp /usr/local/webserver/php/etc/php-fpm.conf /usr/local/webserver/php/etc/www.downcc.com.conf

#vi /usr/local/webserver/php/etc/www.downcc.com.conf

找到php_defines,添加

<value name=&open_basedir&>/data/htdocs/www.downcc.com:/tmp:/var/tmp</value>

 

找到listen_address,修改为

<value name=&listen_address&>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.itmop.com.conf

php_fpm_BIN --fpm --fpm-config /usr/local/webserver/php/etc/www.downcc.com.conf

启动服务

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

查看端口

#netstat -tln

 

开了9000 9001分别处理两个站点请求

两个php-cgi主进程加载不同的conf文件,这样就完美解决了虚拟主机webshell能跨目录的问题

当然,启动之前记得conf里面的max_children,开启php-cgi子进程数,相应要减少一些,以免造成内存不足

关键词标签:Nginx,虚拟主机

相关阅读 ISAPI Rewrite实现IIS图片防盗链 IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin 在Windows服务器上快速架设视频编解码器全攻略 win2000server IIS和tomcat5多站点配置 Windows Server 2003的Web接口 关于Zend Optimizer

文章评论
发表评论

热门文章 ISAPI Rewrite实现IIS图片防盗链 ISAPI Rewrite实现IIS图片防盗链 IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin IIS6.0下配置MySQL+PHP5+Zend+phpMyAdmin 在Windows服务器上快速架设视频编解码器全攻略 在Windows服务器上快速架设视频编解码器全攻略 win2000server IIS和tomcat5多站点配置 win2000server IIS和tomcat5多站点配置 Windows Server 2003的Web接口 Windows Server 2003的Web接口 CentOS 6.3安装配置LAMP服务器(Linux+Apache+MySQL+PHP5) CentOS 6.3安装配置LAMP服务器(Linux+Apache+MySQL+PHP5)

相关下载

人气排行 XAMPP配置出现403错误“Access forbidden!”的解决办法 WIN2003 IIS6.0+PHP+ASP+MYSQL优化配置 访问网站403错误 Forbidden解决方法 如何从最大用户并发数推算出系统最大用户数 Server Application Unavailable的解决办法 报错“HTTP/1.1 400 Bad Request”的处理方法 Windows Server 2003的Web接口 http 500内部服务器错误的解决办法(windows xp + IIS5.0) IIS出现RPC服务器不可用的解决方法 502 bad gateway是什么意思?502 bad gateway错误怎么解决! 教你如何搭建自己的CS游戏服务器 Discuz Windows 环境搭建推荐教程