/ 中存储网

Apache配置动态虚拟主机的方法

2013-10-12 16:11:01 来源:ITJS.CN

动态配置海量虚拟主机驻留,用于巨量数目的WEB站点。随apache提供的标准模块+mod_vhost_aliases实现动态配置的主机。作用是在检查完进来的URL后为这些目录生成实际路径。

实现基于名字的动态虚拟主机指令:

VirtualDocumentRoot

  指定模块如何从URL请求那里为动态虚拟主机构造DocumentRoot路径。

  VirtualScriptAlias

  和ScriptAlias一样,从URL请求那里构造一个包含CGI脚本的目录路径

%N

  服务器的第N部分,如果服务器的全名是 vhost1.sohu.com,那么%1解析成vhost1,%2 解析成sohu,以此类推。

%N+

  服务器名称的地N部分和其后所有其余部分。如果服务器全名为vhost1.sohu.com,那么%2+解析为sohu.com。

%-N

  字符串倒数第N部分。如果服务器全名为vhost1.sohu.com,那么%-1解析成com。%-2解析成sohu

%p

  动态虚拟主机的TCP端口号

还可以从服务器名字中抽取的每一部分可以使用分类符%N.M继续对子部分进一步划分,其中N是主部分,M是子部分。例如:

  %1=vhost1

  %2=sohu

  %3=com

可以划分子部分:

  %1.1=v

  %1.2=h

  %1.3=o

  %2.1=s

  %2.2=o

例如:

  在httpd.conf文件中:

  UseCanonicalName off

  VirtualDocumentRoot /home/httpd/%1/%p

要实现输入http://www.263.net:443

  需要在/home/httpd目录中建立www(%1)/443

  然后在/home/httpd/%1/443/目录中建立网页文件, 在DNS中设置解析

  访问即可。

例2:

将例子一中的VirtualDocumentRoot定义的内容删除。

  然后再添加:

  VirtualHostDocumentRoot /home/httpd/%1/%2

要求:

  实现动态虚拟主机:

  www.abc.com

  www.xyz.com

#mkdir /home/httpd/www

  #mkdir /home/httpd/www/abc

  #mkdir /home/httpd/www/xyz

  将网页文件放入/home/httpd/www/abc和/home/httpd/www/xyz即可

  在DNS中设置解析

基于IP的动态虚拟主机

需要的指令:

VirtualDocumentRootIP

和VirtualDocumentRoot相似,但它是从请求到达的IP地址那里构造动态虚拟主机DocumentRoot的路径地

VirutalScriptAliasIP

  和VirtualScirptAlias相似,但它是从请求到达的IP地址那里,构造CGI脚本目录的路径。

/*由于mod_vhost_aliases在请求到达服务器时构造动态主机路径,所以DocumentRoot和ScriptAlias实际上是根据客户尝试请求的虚拟主机进行变化的变量,所以在httpd.conf当中,不必针对每个虚拟主机明确指定这两个指令。实际上不需要在httpd.conf中指定任何虚拟主机,网管唯一要做的是,确保在服务器上针对每个虚拟主机都存在一个目录,如果该目录不存在,客户端将收到一个not found的信息。*/

例子:

  环境:本机IP:192。168。9。254

一、增加IP地址方法:

  #ifconfig 192.168.9.1

  #ifconfig 192.168.9.2

// 重新启动后失效,若希望永远生效,请增加eth0:0和eth0:1.以192.168.9.1为例,%1=192,%2=168,%=9,%4=1

二、修改httpd.conf文件

UseCanonicalName DNS

  VirtualDocumentRootIP /home/httpd/www/%4

  VirtualScriptAliasIP /home/httpd/www/cgi-bin/%4

  重新启动apache。

三、在相关位置建立以下目录

#mkdir /home/httpd/www

  #mkdir /home/httpd/www/1

  #mkdir /home/httpd/www/cgi-bin/1

  //创建到192。168。9。1的虚拟主机网页根目录

  #mkdir /home/httpd/www/2

  #mkdir /home/httpd/www/cgi-bin/2

  //创建到192.168.9.2的虚拟主机网页根目录。

四、在DNS中设置,将192.168.9.1解析成 www.163.com

  将192.168.9.2解析成 www.263.net

可以访问了。

/*由于IP地址的每个部分可以取1---254之间的数值,所以这个方法可以建立254个基于IP的虚拟主机。也可以做支持254*254 台的虚拟主机,但意义不大。*/

  UseCanonicalName on

  apahce使用 ServerName和Port生成自指URL,来构造服务器的规范名称。

UseCanonicalName off

  apache使用由客户提供的主机头指令的主机名称和端口号为服务器构造自指URL, off经常用于基于名称的动态虚拟主机

UseCanonicalName DNS 用于基于IP的动态虚拟主机。apache使用DNS执行客户连接IP地址搜索时确定的主机名,构造服务器自指URL,可以用在服务器环境,但在基于名字的虚拟主机下不起作用地。