首页 百科知识 动态虚拟主机配置

动态虚拟主机配置

时间:2022-10-18 百科知识 版权反馈
【摘要】:动态虚拟主机既可以是基于名称的,也可以是基于IP地址的。以标准方式实现基于IP地址的动态虚拟主机的方法将减慢进程的执行速度,因为用户的服务器将使用它的IP地址来执行DNS查找,以便找到服务器的名称。例如,要为一个非动态的基于名称的虚拟主机指定Document根目录,用户可以使用VirtualDocumentRoot指令,即动态非动态的虚拟主机使用一个目录,也可以按照用户的意愿指定其他的目录。

5.5.3 动态虚拟主机配置

如果用户想在服务器上实现很多虚拟主机,且具有基本相同的配置,就可以使用一项叫做“dymamic virtual hosting”的技术自动地产生这些虚拟主机。实现虚拟主机的命令代码越少,服务器就能够越快地访问它们。增加更多虚拟主机的工作很简单,只需创建适当的目录,并在DNS服务器中为其添加适当的选项即可。

为运行动态虚拟主机,服务器应该使用mod-vhost-alias模块中的命令将服务器的名称和文档根目录重写入适当的虚拟服务器中。动态虚拟主机既可以是基于名称的,也可以是基于IP地址的。在每一种情况下,用户必须设置UseCanonicalName指令,以使服务器使用虚拟主机名,而不是服务器自己的名称。对基于名称的主机,用户只需关闭UseCanonicalName,这样就允许服务器从用户请求的host:header中获取主机名称;对基于IP地址的主机,将UseCanonicalName设置为DNS,将允许服务器在DNS服务器中查找这个主机:

UseCanonicalName off

UseCanonicalName DNS

然后用户必须使用服务器能够定位到各种虚拟主机的不同文档根目录和CGIbin目录,可以使用VirtualDocumentRoot指令为虚拟主机的目录指定模版。例如:如果用户把不同主机的目录放入/var/www/namevhost目录中,就可以相应地设置VirtualDocumentRoot指令:

VirtualDocumentRoot/var/www/namevhost%0/htm l

当虚拟主机被访问时,%0将被虚拟主机的名称所代替,这样用户就可以使用该主机名来创建动态虚拟主机的目录。例如,对于一个叫做www.test.com的虚拟主机来说,用户将创建一个/var/www/namevhost/www.test.com的目录,然后Document根目录和CGI程序创建子目录,位于/var/www/namevhost/www.test.com/htm l目录下。对于CGI目录,使用VirtualScriptAlias指令就可以指定用户所用的CGI子目录:

VirtualScriptAlias/var/www/namevhost%0/cgi-bin

一个简单的基于名称的动态虚拟主机目录如下所示:

UseCanonicalName off

VirtualDocumentRoot/var/www/namevhost/%0/html

VirtualScriptAlias/var/www/namevhost%0/cgi-bin

如果要使这个例子实现基于IP地址的动态虚拟主机,用户只需在设置UseCanonicalName时,用DNS代替off即可:

UseCanonicalName DNS

VirtualDocumentRoot/var/www/namevhost/%0/html

VirtualScriptAlias/var/www/namevhost%0/cgi-bin

动态虚拟主机的一个缺点就是用户仅能够为所有主机设置一个日志;但是用户可以创建自己的shell程序,并很容易地从这个日志中分离出不同主机的数据项

LogFormat“%V%h%l%u%t\”%r\“%s%b”vcommon

CustomLog logs/access_log vcommon

以标准方式实现基于IP地址的动态虚拟主机的方法将减慢进程的执行速度,因为用户的服务器将使用它的IP地址来执行DNS查找,以便找到服务器的名称。用户可以很容易地通过使用虚拟主机的目录来避免这个步骤,例如:对基于IP地址的虚拟主机192.168.74.128,用户可以创建一个目录/var/www/namevhost/192.168.74.128,其中有一个html子目录作为该主机的Document根目录;这样,IP地址可以直接映射到Document根目录名,不再需要DNS查找,同样用户要确保IP地址包含在用户的记录中。

UseCanonicalName DNS

LogFormat“%V%h%l%u%t\”%r\“%s%b”vcommon

CustomLog logs/access_log vcommon

VirtualDocumentRoot/var/www/namevhost/%0/html

VirtualScriptAlias/var/www/namevhost%0/cgi-bin

如果用户需要其他的虚拟主机项,可以把这些指令和虚拟主机项混合起来执行。例如,要为一个非动态的基于名称的虚拟主机指定Document根目录,用户可以使用VirtualDocumentRoot指令,即动态非动态的虚拟主机使用一个目录,也可以按照用户的意愿指定其他的目录。在下面的例子中,基于名称的虚拟主机www.test.com使用动态虚拟主机指令VirtualDocumentRoot来建立它的文档根目录。下面的例子使用/var/www/www.test.com/html作为文档根目录,而CGI目录被设置为非动态目录/var/www/tes/cgi-bin:

img345

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈