增强虚拟托管 (Enhanced Virtual Hosting, EVH) 有助于在虚拟服务上启用虚拟托管,而不考虑服务器名称指示 (SNI)。本节介绍了如何在 NSX Advanced Load Balancer 中使用增强虚拟托管 (EVH)。

虚拟服务可以具有两种类型,即:

  • 未启用虚拟托管的虚拟服务

  • 启用了虚拟托管的虚拟服务

未启用虚拟托管的虚拟服务

默认情况下,将在虚拟服务配置中停用虚拟托管 VS 选项。如果在创建虚拟服务时停用了该选项,则该特定虚拟服务是未启用虚拟托管的虚拟服务。

启用了虚拟托管的虚拟服务

  • SNI 虚拟托管

为虚拟服务启用虚拟托管 VS 选项表示,虚拟服务是服务器名称指示 (SNI) 部署中的另一个服务的父虚拟服务或子虚拟服务。服务器名称指示 (SNI) 提供了一种方法,为启用了 SSL 的虚拟 IP 虚拟托管多个域名。

有关启用了虚拟托管的虚拟服务的更多信息,请参见服务器名称指示虚拟托管的通配符 SNI 匹配

  • 增强虚拟服务

EVH 服务的虚拟服务放置遵循与 SNI 父子虚拟服务相同的条件。父虚拟服务可以是主机 SNI 或 EVH 子虚拟服务,但不能同时是两者。相同虚拟托管类型的子虚拟服务可以与父虚拟服务相关联;如果父虚拟服务具有 SNI 类型,关联的子虚拟服务也必须具有 SNI 类型。同样,如果父虚拟服务具有增强虚拟服务类型,与该父虚拟服务关联的子虚拟服务必须具有相同的类型 (EVH)。EVH 子虚拟服务不能与 SNI 父虚拟服务相关联,反之亦然。

SNI 和 EVH 的比较如下表所示:

服务器名称指示 (SNI)

增强虚拟托管 (EVH)

可以在一个子虚拟服务中配置多个域,并由该虚拟服务拥有这些域。

可以在多个子虚拟服务中配置相同的域,但具有不同的路径匹配条件。

SNI 只能处理 HTTPS 流量。

EVH 子虚拟服务可以处理 HTTP 和 HTTPS 流量。

整个连接(包括它的所有请求)将由 TLS 握手期间选择的子虚拟服务之一进行处理。

连接始终由父虚拟服务进行处理,该连接中的各个请求由选定子虚拟服务根据该子虚拟服务中配置的匹配主机标头、URI 路径和路径匹配条件进行处理。

  • 在父虚拟服务中配置了服务端口,并需要在父虚拟服务中启用 SSL。

  • 在子虚拟服务中,FQDN 字段用于指定必须选择虚拟服务的域。HOST+PATH+match_criteria 定义由父虚拟服务中的哪个子虚拟服务处理给定的请求。

NSX Advanced Load Balancer 支持在单个父虚拟服务的子虚拟服务之间针对不同的请求(在一个连接中)进行 EVH 切换。与 SNI 仅根据子虚拟服务到 FQDN 的一对一映射切换 TLS 连接不同,EVH 根据请求的资源路径将一个 FQDN 映射到多个子虚拟服务。