Citrix ADC

HTTP/2 配置

注意: Citrix ADC MPX、VPX 和 SDX 型号支持 HTTP/2 功能。在 Citrix ADC VPX 设备中,从 11.0 版开始支持 HTTP/2 功能。

Web 应用程序性能的问题与增加页面大小和网页上对象数量的趋势直接相关。HTTP/1.1 的开发目的是支持较小的网页、较慢的互联网连接和更有限的服务器硬件比现在常见的。它不适用于 JavaScript 和级联样式表 (CSS) 等新技术,也不适用于 Flash 视频和图形丰富的图像等新媒体类型。这是因为它每个连接到服务器只能请求一个资源。该限制显著增加了往返次数,从而导致页面渲染更长时间,并降低了网络性能。

HTTP/2 协议通过允许通过网络传输较少的数据进行通信,并提供通过单个连接发送多个请求和响应的功能来解决这些限制。HTTP/2 的核心是通过更有效地使用底层网络连接来解决 HTTP/1.1 的关键限制。它改变了请求和响应通过网络传输的方式。

HTTP/2 是一个二进制协议。与 HTTP/1.1 等文本协议相比,解析效率更高,更紧凑,最重要的是,它不容易出错。HTTP/2 协议使用二进制框架层,该层定义帧类型以及如何封装和在客户端和服务器之间传输 HTTP 消息。HTTP/2 功能支持使用 CONNECT 方法通过单个 HTTP/2 流建立通道连接到远程主机。

HTTP/2 协议包含大量提高性能的更改,这些更改显著提高了性能,尤其是对于通过移动网络连接的客户端而言。

下表列出了 HTTP/2 与 HTTP/1.1 相比的主改进:

HTTP/2 功能 说明
头压缩 HTTP 标头具有许多重复信息,因此在数据传输过程中会消耗不必要的带宽。HTTP/2 通过压缩标头并最大限度地减少传输每个请求和响应 HTTP 标头的要求,从而降低带宽要求。
连接多路复用 延迟可能会对页面加载时间和最终用户体验产生巨大影响。连接多路复用通过一个连接发送多个请求和响应来克服此问题。
服务器推送 服务器推送使服务器能够主动将内容推送到客户端浏览器,避免往返延迟。此功能缓存它认为客户端需要的响应,减少往返次数,并缩短页面渲染时间。重要提示:Citrix ADC 设备不支持服务器推送功能。
无标题阻塞 在 HTTP/1.1 下,浏览器可以每次连接一次下载一个资源。当浏览器必须下载大型资源时,它会阻止所有其他资源下载,直到第一次下载完成。HTTP/2 通过多路复用方法克服了这个问题。它允许客户端浏览器通过同一连接并行下载其他 Web 组件,并在可用时显示它们。
请求优先级 当浏览器呈现网页时,并非所有资源都具有相同的优先级。为了加快加载时间,所有现代浏览器都会按资源类型、页面上的位置,甚至根据之前访问的学习优先级对请求进行优先级排序。使用 HTTP/1.1,浏览器使用优先级数据的能力有限,因为此协议不支持多路复用,并且无法通过服务器传达请求优先级。结果是不必要的网络延迟。HTTP/2 通过允许浏览器调度所有请求来克服这个问题。浏览器可以通过流依赖关系和权重传达其流优先级首选项,从而使服务器能够优化响应传递。重要说明:Citrix ADC 设备不支持请求优先级功能。

HTTP/2 的工作原理

Citrix ADC 设备在客户端以及服务器端支持 HTTP/2。在客户端,Citrix ADC 设备充当托管 HTTP/2 的 HTTP/HTTPS 虚拟服务器的服务器。在后端,Citrix ADC 充当绑定到虚拟服务器的服务器的客户端。

因此,Citrix ADC 设备在客户端以及服务器端保持单独的连接。Citrix ADC 设备针对客户端和服务器端具有单独的 HTTP/2 配置。

HTTP/2 用于 HTTPS (SSL) 负载平衡配置

对于 HTTPS 负载平衡配置,Citrix ADC 设备使用 TLS ALPN 扩展 (RFC 7301) 来确定客户端/服务器是否支持 HTTP/2。如果是这样,设备会选择 HTTP/2 作为应用层协议,以便在客户端/服务器端传输数据(如 RFC 7540-第 3.3 节中所述)。 通过 TLS ALPN 扩展选择应用程序层协议时,设备使用以下首选顺序:

  • HTTP/2(如果在 HTTP 配置文件中启用)
  • SPDY(如果在 HTTP 配置文件中启用)
  • HTTP/1.1

HTTP/2 用于 HTTP 负载平衡配置

对于 HTTP 负载平衡配置,Citrix ADC 设备使用以下方法之一开始使用 HTTP/2 与客户端/服务器进行通信。

注意:

在以下方法描述中,客户端和服务器是 HTTP/2 连接的常规术语。例如,对于使用 HTTP/2 进行 Citrix ADC 设备的负载平衡设置,Citrix ADC 设备充当客户端的服务器,并充当服务器端的客户端。

  • HTTP/2 升级。客户端向服务器发送 HTTP/1.1 请求。该请求包含一个升级标头,该标头要求服务器将连接升级到 HTTP/2。如果服务器支持 HTTP/2,则服务器接受升级请求并在响应中通知它。客户端收到升级确认响应后,客户端和服务器开始使用 HTTP/2 进行通信。

  • 直接 HTTP/2。客户端直接开始与 HTTP/2 中的服务器通信,而不是使用 HTTP/2 升级方法。如果服务器不支持 HTTP/2 或者未配置为直接接受 HTTP/2 请求,它会从客户端删除 HTTP/2 数据包。如果客户端设备的管理员已经知道服务器支持 HTTP/2,则此方法非常有用。

  • 使用替代性服务 (ALT-SVC) 直接 HTTP/2。服务器通过在其 HTTP/1.1 响应中包含替代服务 (ALT-SVC) 字段,向客户端发布它支持 HTTP/2。如果客户端配置为了解 ALT-SVC 字段,则客户端和服务器在客户端收到响应后开始使用 HTTP/2 直接通信。

Citrix ADC 设备在 HTTP 配置文件中为 HTTP/2 方法提供可配置选项。这些 HTTP/2 选项可以应用于客户端以及 HTTPS 或 HTTP 负载平衡设置的服务器端。有关 HTTP/2 方法和选项的更多信息,请参阅 HTTP/2 选项 PDF。

开始之前的准备工作

在 Citrix ADC 设备上开始配置 HTTP/2 之前,请注意以下几点:

  • Citrix ADC 设备在客户端以及服务器端支持 HTTP/2。
  • Citrix ADC 设备不支持 HTTP/2 服务器推送功能。
  • Citrix ADC 设备不支持 HTTP/2 请求优先级功能。
  • Citrix ADC 设备不支持 HTTPS 负载平衡设置的 HTTP/2 SSL 重新协商。
  • Citrix ADC 设备不支持 HTTP/2 NTLM 身份验证。
  • 如果启用了用户源 IP (USIP) 模式,并且 Citrix ADC 设备上禁用了代理模式,HTTP/2 将不起作用。

配置 HTTP/2

为负载平衡设置(HTTPS 或 HTTP)配置 HTTP/2 包括以下任务:

  • 启用 HTTP/2 并在 HTTP 配置文件中设置可选的 HTTP/2 参数。在 HTTP 配置文件中启用 HTTP/2。当您仅在 HTTP 配置文件中启用 HTTP/2 时,Citrix ADC 设备仅使用升级方法(对于 HTTP)或 TLS ALPN 方法(对于 HTTPS)在 HTTP/2 中进行通信。

    要使 Citrix ADC 设备使用直接 HTTP/2 方法,必须在 HTTP 配置文件中启用直接 HTTP/2 选项。要使 Citrix ADC 设备使用替代服务方法的直接 HTTP/2,必须在 HTTP 配置文件中启用备用服务 (altsvc) 选项。

  • 将HTTP 配置文件绑定到虚拟服务器或服务。将 HTTP 配置文件绑定到虚拟服务器,以便为负载平衡设置的客户端配置 HTTP/2。将 HTTP 配置文件绑定到服务,以便为负载平衡设置的服务器端配置 HTTP2。

注意:

Citrix 建议为客户端和服务器端绑定单独的 HTTP 配置文件。

  • 启用 HTTP/2 服务器端支持的全局参数。启用 HTTP/2 服务端 (HTTP2Serverside ) 全局 HTTP 参数,以便在所有已配置 HTTP/2 的负载平衡设置的服务器端启用 HTTP/2 支持。

    如果 HTTP/2 服务端处于禁用状态,HTTP/2 在任何负载平衡设置的服务器端将不起作用,即使在绑定到相关负载平衡服务的 HTTP 配置文件上启用了 HTTP/2 亦如此。

Citrix ADC 命令行过程

使用 Citrix ADC 命令行启用 HTTP/2 并设置 HTTP/2 参数

  • 若要在添加 HTTP 配置文件时启用 HTTP/2 并设置 HTTP/2 参数,请在命令提示符下键入:

add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )] [-altsvc ( ENABLED | DISABLED )] show ns httpProfile <name>

  • 若要在修改 HTTP 配置文件时启用 HTTP/2 并设置 HTTP/2 参数,请在命令提示符下键入:

set ns httpProfile <name> -http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED)] [-altsvc (ENABLED | DISABLED )] show ns httpProfile <name>

使用 Citrix ADC 命令行将 HTTP 配置文件绑定到虚拟服务器

在命令提示窗口中,键入:

set lb vserver <name> - httpProfileName <string> show lb vserver <name>

使用 Citrix ADC 命令行将 HTTP 配置文件绑定到负载平衡服务

在命令提示窗口中,键入:

set service <name> -httpProfileName <string> show service <name>

使用 Citrix ADC 命令行在服务器端全局启用 HTTP/2 支持

在命令提示窗口中,键入:

set ns httpParam -HTTP2Serverside( ENABLED | DISABLED ) show ns httpParam

使用 Citrix ADC GUI 启用 HTTP/2 并设置 HTTP/2 参数

  1. 导航到系统 > 配置文件,然后单击HTTP 配置文件选项卡。
  2. 在添加 HTTP 配置文件或修改现有 HTTP 配置文件时启用 HTTP/2

使用 Citrix ADC GUI 将 HTTP 配置文件绑定到虚拟服务器

  1. 导航到流量管理 > 负载 平衡 > 虚拟服务器,然后打开虚拟服务器。
  2. 高级设置中,单击 + HTTP 配置文件将创建的 HTTP 配置文件绑定到虚拟服务器。

使用 Citrix ADC GUI 将 HTTP 配置文件绑定到负载平衡服务

  1. 导航到流量管理 > 负载平衡 > 服务,然后打开服务。
  2. 高级设置中,单击 + HTTP 配置文件以将创建的 HTTP 配置文件绑定到服务。

使用 GUI 在服务器端全局启用 HTTP/2 支持

导航到系统 > 设置,单击更改 HTTP 参数并启用 HTTP/2 服务器端

示例配置

在以下示例配置中,HTTP/2 和直接 HTTP/2 在 HTTP 配置文件 HTTP-配置文件-HTTP2 客户端上启用。配置文件绑定到虚拟服务器 LB-VS-1。

set ns httpProfile HTTP-PROFILE-HTTP2-CLIENT-SIDE -http2 enabled -http2Direct enabled
Done

set lb vserver LB-VS-1 -httpProfileName HTTP-PROFILE-HTTP2-CLIENT-SIDE

Done

在以下示例配置中,HTTP 配置文件 HTTP/2 和替代服务 (ALT-SVC) 在服务器端上启用 HTTP 配置文件 HTTP 配置文件-HTTP2 和服务器端。配置文件绑定到服务 LB-服务 1。

set ns httpparam -HTTP2Serverside ENABLED
Done

set ns httpProfile HTTP-PROFILE-HTTP2-SERVER-SIDE -http2 ENABLED -altsvc ENABLED
Done

set service LB-SERVICE-1 -httpProfileName HTTP-PROFILE-HTTP2-SERVER-SIDE
Done

HTTP/2 配置