虚拟服务器是使用 IP 地址、端口号和主机名的唯一组合来识别它的服务器。您可能有多个虚拟服务器,它们都使用相同的 IP 地址和端口号,但通过它们唯一的主机名来区分。
例如,您可能有一个名为 hr.acme.com 的虚拟服务器和另一个名为mis.acme.com的虚拟服务器,它们都驻留在同一个 Web 服务器实例上,并在同一个端口上侦听请求。通过使用虚拟服务器,您可以:
- 最小化内存和硬件利用率。例如,每个虚拟服务器都可以指定单独的带宽或连接限制,以确保没有一个虚拟服务器使用超过其共享的系统资源。
- 为不同的用户群体提供差异化的服务。例如,您可以设置一台虚拟服务器来运行 CGI 程序,而另一台运行 Web 应用程序。
如上图所示,有两种不同类型的虚拟服务器。使用唯一 IP 地址和端口组合的虚拟服务器称为硬件虚拟服务器。在硬件虚拟服务器上配置的每个网站都有一个 IP 地址。这意味着对于您添加的每个网站,您都需要一个新的 IP 地址。由于 IP 地址是有限的,因此这限制了您可以配置的虚拟服务器的数量。
另一种类型的虚拟服务器是软件虚拟服务器。软件虚拟服务器使用 IP 地址和端口组合,以及 HTTP 主机标头(请求的主机名)的内容来区分一个虚拟服务器和另一个。这使一台机器(具有一个 IP 地址)能够支持多个网站,每个网站在该机器上由其 HTTP 主机标头唯一标识。这消除了对许多 IP 地址的需要。
Sun ONE Web Server 6.1 支持硬件(基于 IP 地址)和软件(基于 HTTP 主机头)虚拟服务器。
安装 Sun ONE Web Server 时,会自动创建一个默认虚拟服务器。但是,您可以创建其他虚拟服务器并根据您的特定需求对其进行自定义。
您可能在一台机器上运行多个虚拟服务器,并接收来自数百个客户端的信息请求。服务器如何知道哪个虚拟服务器应该处理哪个请求?在服务器可以处理请求之前,它必须通过侦听套接字接受请求,然后根据 IP 地址或 HTTP 主机标头的值将请求定向到正确的虚拟服务器。您可以单独管理虚拟服务器,也可以将它们与其他“类似”服务器组合成一个虚拟服务器类。
在创建虚拟服务器之前,您需要做两件事才能使其工作:
- 一个监听套接字
- 虚拟服务器类
考虑到这一点,让我们着手执行以下任务:
- 创建监听套接字
- 创建一个虚拟服务器类
- 创建虚拟服务器
- 创建附加文档目录
- 更改虚拟服务器的文档根目录
假设您要创建一个虚拟服务器hr.acme.com。首先,您需要决定它将使用哪个侦听套接字。您可以使用安装服务器时自动创建的默认侦听套接字ls1,或者您可能想要添加一个新的。在这个例子中,我们将创建一个新的监听套接字。
创建监听套接字
创建监听套接字:
- 转到服务器管理器上的首选项选项卡
- 单击添加侦听套接字链接。
- 指定侦听套接字的 ID 和它将侦听的端口号。保留页面上其他参数的默认值。
如下图所示:
- 单击确定,然后单击应用以保存并应用您的更改。
接下来,您需要决定您希望虚拟服务器属于哪个类。使用类,您可以同时配置类似的虚拟服务器,因此您不必单独配置每一个。您可以使用安装服务器时自动创建的默认虚拟服务器类vsclass1,也可以添加一个新类。
在此示例中,我们将创建一个新的虚拟服务器类vsclass2。
创建一个虚拟服务器类
添加虚拟服务器类
- 访问服务器管理器中的虚拟服务器类选项卡
- 单击添加类链接。
- 将虚拟服务器类名和文档根指定为类的绝对路径。
- 单击确定,然后单击应用以保存并应用您的更改。
接下来,我们将创建一个新的虚拟服务器,它将使用我们创建的新侦听套接字ls2,并将由虚拟服务器类vsclass2 管理。
创建虚拟服务器
创建虚拟服务器:
- 访问类管理器中的虚拟服务器类选项卡
- 单击添加虚拟服务器链接。
- 指定虚拟服务器的名称、其连接和 URL 主机。在本例中,我们将acme指定为客户端用来引用服务器的 URL。
- 单击确定,然后单击应用以保存并应用您的更改。
您可以通过两种方式配置其他虚拟服务器设置:
- 使用类管理器
- 使用虚拟服务器管理器
在班级管理器上,页面按您要更改的设置类型进行组织。如果您希望将某些设置应用于班级中的所有虚拟服务器,请使用班级管理器。
在虚拟服务器管理器上,页面仅与一台虚拟服务器相关,因此您可以查看和更改特定服务器的所有设置。在“基本任务”一章中,我们看到在站点上发布内容的最简单方法是将其放入服务器的 docroot 中。但是,您不必将要在站点上发布的所有内容复制到 docroot 目录中。您还可以将内容放入已映射为附加文档目录的任何目录中。让我们看看这是如何做到的。
创建附加文档目录
假设您有一个名为/hr/publish的文件夹,其中包含要发布到您网站的页面。
- 访问虚拟服务器类管理器,然后单击内容管理选项卡。
- 单击其他文档目录。
- 我们选择/hr作为要映射的 URL 前缀。
- 键入/hr/publish作为将这些 URL 映射到的文件系统目录。
- 单击确定。
您现在可以在浏览器窗口中键入http://acme/hr来访问您映射的内容。
默认情况下,虚拟服务器类中的所有虚拟服务器都具有相同的文档根目录。这可能不是你需要的。
为了解释,假设您有两个虚拟服务器hr.acme.com和mis.acme.com属于同一个虚拟服务器类。当用户在浏览器上键入http://hr.acme.com时,您可能希望将他们带到包含 HR 信息的 docroot,例如/acme/hr。同样,当用户在浏览器上键入http://mis.acme.com时,您希望他们访问 MIS 站点,该站点的文档根目录为/acme/mis。您需要为每个虚拟服务器单独配置 docroot 以实现此目的。
更改虚拟服务器的文档根目录
要更改虚拟服务器的文档根目录:
- 访问要配置的虚拟服务器的虚拟服务器管理器界面,例如acme。
- 单击设置链接。
- 编辑出现在“文档根”字段设置旁边的路径以指向新的文档根。
- 单击确定。
您现在可以通过许多其他方式配置您的虚拟服务器,以根据特定需求为不同的最终用户集提供差异化服务。