利用虚拟多重主机功能,原始服务器(如反向代理服务器)可以响应多个 DNS 别名,就好像其中的每个地址都安装了不同的服务器。例如,假定您有以下 DNS 主机名:
www
specs
phones
其中每个主机名都可以映射到同一 IP 地址(反向代理的 IP 地址)。然后,反向代理可以根据访问它时使用的 DNS 名称执行不同操作。
虚拟多重主机还允许您将单个反向代理服务器作为多个不同 *域* 的宿主服务器。例如:
www.domain-1.com
www.domain-2.com
www.domain-3.com
可以将多个本地主机名以及多个域全部组合在单个代理服务器中:
www
specs
phones
www.domain-1.com
www.domain-2.com
www.domain-3.com
为运行虚拟多重主机功能,需要先指定 DNS 主机名和域名(或别名),然后指定应将发送给该主机名的请求定向到的目标 URL 前缀。例如,假定您有以下两个映射:
engr.domain.com -> http://int-engr.domain.com
mktg.domain.com -> http://int-mktg.domain.com
映射不必从根到根。可以在目标 URL 中指定附加的 URL 路径前缀:
engr.domain.com -> http://internal.domain.com/engr
mktg.domain.com -> http://internal.domain.com/mktg
该方法同样适用于虚拟域映射。例如,可以使用:
www.domain-1.com -> http://int-engr.domain.com
www.domain-2.com -> http://int-mktg.domain.com
系统将查看 HTTP "Host:" 标头,并根据该标头选择匹配的虚拟多重主机映射。如果没有匹配的多重主机映射,服务器将按映射在配置文件中的出现顺序继续查看其他映射。如果仍未找到任何匹配项,服务器将不执行映射。找不到任何匹配项时,代理通常会发出 "Proxy denies fulfilling the request" 响应。
访问 Server Manager 并单击 "URLs" 选项卡。
单击 "Configure Virtual Multihosting" 链接。
此时将显示 "Configure Virtual Multihosting" 页面。
在 "Source Hostname (alias)" 字段中,指定此映射将应用到的本地主机名(或 DNS 别名)。
在 "Source Domain Name" 字段中,键入此映射将应用到的本地域名。
通常,此名称为您自己网络的域名,除非您要对多个不同的 DNS 域使用多重主机。
在 "Destination URL Prefix" 字段中,键入目标 URL 前缀。如果主机名和域名符合上述规范,则会将请求定向到此 URL。
如果使用模板,请从 "Use This Template" 下拉式列表中选择模板名称;如果不想应用模板,请将该值保留为 "NONE"。
单击 "OK"。
单击 "Restart required"。
将会显示 "Apply Changes" 页面。
单击 "Restart Proxy Server" 按钮以应用更改。
对要建立的每个虚拟多重主机映射重复上述步骤。
所有虚拟多重主机映射都将显示在 "Configure Virtual Multihosting" 页面的底部。"Source Hostname (alias)" 和 "Source Domain Name" 字段连同代理的端口号被合并成单个正则表达式,用于匹配 "Host:" 标头,
例如,如果主机名为 www、域为 example.com 且端口号为 8080,则会显示以下正则表达式:
www(|.example.com)(|:8080)
此正则表达式可以保证与用户可能键入或客户机可能发送的以下所有可能组合匹配。即使端口号不是 80,某些客户机软件也可能将其省略,因为服务器正在侦听该端口。
www
www:8080
www.example.com
www.example.com:8080
配置反向代理映射之前,需要禁用客户机自动配置功能。客户机自动配置功能用于正向代理操作,而不是反向代理。
虚拟多重主机功能会建立自动反向映射。请不要为使用 "Virtual Multihosting" 页面提供的映射创建反向映射。
虚拟映射是使用 obj.conf 文件中的 virt-map 函数指定的。
虚拟映射按 obj.conf 配置文件中指定的顺序进行匹配。如果虚拟映射前面有正则映射、反向映射、正则表达式映射或客户机自动配置映射,则会首先应用这些映射。同样,如果在虚拟映射中未找到任何匹配项,则会继续转换 obj.conf 中虚拟映射部分之后的下一个映射。
按照规范顺序,反向映射位于其他映射之前。
如果更改了代理服务器的端口号,则需要根据新端口号重新创建虚拟多重主机映射。