2013-09-24 17:34:01
来 源
itjs.cn
Apache
本文介绍Apache服务器如何配置虚拟主机(二),希望对于初学Apache服务器相关的朋友有帮助,更多Apache安装、配置、报错处理等资源请本站内搜索。

另外一个方便的技巧是使用SeverAlias指令,它对基于名称的虚拟主机同样适用。在LAN内访问内部服务器时,我们往往希望使用比较简单的服务器名字,例如“name2”,而不是它的全称“name2.mydomain.com”。Apache无法知道“name2”和“name2.mydomain.com”实际上是同一个Web网站,使用ServerAlias指令可以确保我们在使用简称时不会得到意想不到的页面。

重新启动服务器应用新的配置文件之后,Apache就能够根据URL判断用户访问的是哪一个Web网站,在此基础上提供正确的页面。即使所有网站在同一物理服务器上也绝不会出错。

三、基于名称的虚拟主机(1月15日)

当然,许多时候我们不能奢侈到给一台机器指定多个IP地址的地步。IP地址已经越来越紧张,而且在很多时候,例如象我是通过DSL接入,我们只能占有一个IP地址。在这种情况下,基于名称的虚拟主机正好适用。

使用基于名称的虚拟主机时,我们无需为机器设定多个IP地址,但仍旧涉及到DNS服务器的管理员,要由他们为我们的机器设置一个以上的DNS记录。这些额外的记录称为C-record,或者Cname(指向某台机器的主记录称为Aname,或A-record)。我们可以让任意数量的Cname指向一台特定的机器。

配置DNS服务器使它将所有指定的名称解析为服务器的IP地址之后,我们还要将下面的内容加入Apache服务器的配置文件:

NameVirtualHost 192.168.1.1

ServerName name1.mydomain.com

DocumentRoot /usr/local/apache/name1docs

ServerAlias name1

ServerName name2.mydomain.com

DocumentRoot /usr/local/apache/name2docs

ServerAlias name2

ServerName name3.mydomain.com

DocumentRoot /usr/local/apache/name3docs

ServerAlias name3

正如配置基于IP的虚拟主机,我们可以在这里使用任何适用的配置指令,本例的配置应该说是相当简单的。

下面是一些注意事项。

首先,我们必须用NameVirtualHost指令指定哪个IP地址负责响应对虚拟主机的请求。我们可以联合运用基于IP和基于名称的虚拟主机——也就是说,可以在同一服务器上同时地配置这两种虚拟主机,因此我们必须指定哪一个IP地址用于基于名称的虚拟主机。如果我们要在服务器的内部接口和外部接口(即Intranet服务器和Internet服务器)上设置虚拟主机,必须同时指定这两个地址:

NameVirtualHost 192.168.1.1

NameVirtualHost 208.32.54.7

此外,除了不同的地址之外,我们还可以在不同的端口上运行虚拟主机,当然这会使系统变得非常复杂:

NameVirtualHost 192.168.1.1:80

NameVirtualHost 192.168.1.1:90

注意确保所有的名称都已经在DNS中登记,否则用户将不能访问到自己想要访问的页面。

虚拟主机能够正确发挥作用的窍门之一在于浏览器告诉了服务器它正在向谁请求内容。有些仍在使用的较老的浏览器不能正确地做到这一点,它们会从机器上的“默认”服务器读取内容。不过我们几乎无需为此担心,因为至少在最近5年来(或更早)发布的浏览器都具有这个能力。在Apache里,针对那些不能好好配合的浏览器,我们还有相应的解决办法,不过这就留给你自己去研究。如果你对此感兴趣,请从http://www.apache.org/docs/manual/v…ndex.html开始。

四、运行多个daemon(1月15日)

事实上我们还有第三种在一个服务器上运行多个Web网站的方法,这就是在同一机器上运行多个完全独立的服务daemon,每个daemon提供一个Web网站的服务。这种方法的缺点在于每个daemon必须在不同的端口上运行,这是因为我们无法让多个服务同时监听同一端口。

我们可以用-f命令行选项让Apache服务器使用指定的配置文件:

/usr/local/apache/bin/apache -f /usr/local/apache/conf/name2_httpd.conf

这使得我们可以运行任意数量(只要机器能够支持)的服务daemon,每一个服务都以不同的配置运行。当然,此时应当确保每一个配置文件都有一个端口指令指向不同端口,否则自第一个以后的其他服务daemon都将不能启动并提示下列错误信息:

Could not bind to port 80: Port already in use.

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。