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配置文件中启用)
  • 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 / 2选项必须在HTTP配置文件中启用。要使Citrix ADC设备使用替代服务方法直接使用HTTP/2,请使用替代服务(altsvc)选项必须在HTTP配置文件中启用。

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

请注意

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

  • 启用HTTP/2服务器端支持的全局参数.启用HTTP/2服务端HTTP2Serverside)全局HTTP参数,用于在所有配置了HTTP/2的负载均衡设置的服务器端启用HTTP/2支持。

    HTTP/2不能在任何负载平衡设置的服务器端工作,如果HTTP/2服务端是不是残废了就算了HTTP / 2在绑定到相关负载均衡服务的HTTP配置文件上启用。

Citrix ADC命令行程序

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

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

add ns httpProfile -http2 (ENABLED | DISABLED) [- http2direct (ENABLED | DISABLED)] [-altsvc (ENABLED | DISABLED)]show ns httpProfile

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

设置ns httpProfile -http2 (ENABLED | DISABLED) [-http2Direct (ENABLED | DISABLED)] [-altsvc (ENABLED | DISABLED)]show ns httpProfile

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

在命令提示符下,输入:

设置lb vserver - httpProfileName .使用实例显示lb vserver

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

在命令提示符下,输入:

设置service -httpProfileName .使用实例显示服务

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

在命令提示符下,输入:

set ns httpParam -HTTP2Serverside(ENABLED | DISABLED)显示ns httpParam

通过Citrix ADC图形界面开启HTTP/2并设置HTTP/2参数

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

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

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

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

  1. 导航到交通管理>负载平衡>服务,并打开服务。
  2. 高级设置,点击+ HTTP配置文件将创建的HTTP配置文件绑定到服务。

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

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

样例配置

在下面的示例配置中,HTTP配置文件HTTP- profile - http2 - client - side启用了HTTP/2和直接HTTP/2。配置文件绑定到虚拟服务器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/2和替代服务(ALT-SVC)在HTTP配置文件HTTP- profile - http2 - server上启用。配置文件绑定到服务LB-SERVICE-1。

set ns httpparam -HTTP2Serverside ENABLED Done set ns httpProfile http - profile -http2 - server -http2 ENABLED -altsvc ENABLED Done set service LB-SERVICE-1 -httpProfileName http - profile -http2 - server - Done 

配置HTTP/2初始连接窗口大小

根据RFC 7540, HTTP2流和连接的流控制窗口必须设置为64k(65535)字节,对这个值的任何更改都必须通知对端。ADC设备通过以下方式传达流量控制窗口大小的变化:

  • 使用设置帧。
  • 使用WINDOW_UPDATE帧用于连接。

在HTTP配置文件中,必须配置http2InitialWindowSize参数在流级别设置初始窗口大小。由于内部系统错误,ADC设备也会初始化连接的流量控制窗口。当流的配置流控制窗口发生变化时,ADC设备使用SETTINGS帧与对等端通信。控件,但是ADC设备无法将流量控制窗口中的更改用于连接WINDOW_UPDATE框架。这将导致连接冻结。

为了克服这个问题,我们http2InitialConnWindowSize参数(以字节为单位)现在被添加来控制连接的流量控制窗口。通过使用单独的可配置参数,您现在可以使设备在流和连接级别上针对更改后的窗口大小发送更新。

2 .通过CLI配置HTTP/2初始连接窗口大小

在命令提示符下,输入:

流级流控制的初始窗口大小,单位为字节。默认值:65535最小值:8192最大值:20971520