ADC

HTTP 配置

重要:

从 NetScaler 版本 13.0 版本 71.x 开始,NetScaler 设备可以处理较大的标头大小 HTTP 请求以容纳 L7 应用程序请求。头部大小最多可配置 120 KB。

NetScaler 设备的 HTTP 配置可以在名为 HTTP 配置文件的实体中指定,该实体是 HTTP 设置的集合。然后,HTTP 配置文件可以与想要使用这些 HTTP 配置的服务或虚拟服务器相关联。

可以将默认 HTTP 配置文件配置为设置默认情况下应用于所有服务和虚拟服务器的 HTTP 配置。

注意:

当 HTTP 参数对于服务、虚拟服务器和全局值不同时,最特定实体(服务)的值将获得最高优先级。

NetScaler 设备还提供了配置 HTTP 的其他方法。请继续阅读以了解更多信息。

NetScaler 支持 WebSocket 协议,该协议允许浏览器和其他客户端创建到服务器的双向、全双工 TCP 连接。WebSocket 的 NetScaler 实施符合 RFC 6455 标准。

注意:

NetScaler 设备支持 HTTP/1.1 和 HTTP/2 协议的用户源 IP (USIP) 地址配置。

设置全局 HTTP 参数

NetScaler 设备允许您为适用于所有 NetScaler 服务和虚拟服务器的 HTTP 参数指定值。这可以通过以下方式完成:

  • 默认 HTTP 配置文件
  • 全局 HTTP 命令

默认 HTTP 配置文件

名为 nshttp_default_profile 的 HTTP 配置文件用于指定在服务或虚拟服务器级别未提供 HTTP 配置时使用的 HTTP 配置。

备注:

  • 并非所有 HTTP 参数都可以通过默认的 HTTP 配置文件进行配置。某些设置是通过使用全局 HTTP 命令执行的(请参阅下一节)。

  • 默认配置文件不必明确绑定到服务或虚拟服务器。

配置默认 HTTP 配置文件

  • 使用命令行界面,在命令提示符处输入:

    set ns httpProfile nshttp_default_profile …

  • 在 GUI 上,导航到 系统 > 配置文件,单击 HTTP 配置文件 并更新 nshttp_default_profile。

全局 HTTP 命令

可以用来配置全局 HTTP 参数的另一种方法是全局 HTTP 命令。除了一些唯一的参数之外,此命令还复制了一些可以使用 HTTP 配置文件设置的参数。对这些重复参数所做的任何更新都会反映在默认 HTTP 配置文件中的相应参数中。

例如,如果使用此方法更新 maxReusePool 参数,则该值将反映在默认 HTTP 配置文件(nshttp_default_profile)的 maxReusePool 参数中。

注意:

我们建议您仅对默认 HTTP 配置文件中不可用的 HTTP 参数使用此方法。

配置全局 HTTP 命令

  • 使用命令行界面,在命令提示符处输入:

    set ns httpParam …

  • 在 GUI 上,导航到 系统 > 设置,单击更 改 HTTP 参数 并更新所需的 HTTP 参数。

为连接请求配置忽略编码方案

要启用 HTTP/2 并设置 HTTP/2 参数以忽略连接请求中的编码方案,请在命令提示符处键入:

set ns httpParam [-ignoreConnectCodingScheme ( ENABLED | DISABLED )]

示例:

set ns httpParam -ignoreConnectCodingScheme ENABLED

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

配置 HTTP 配置文件以删除 TRACE 或 TRACK 无效请求

您可以启用 markTraceReqInval 参数将 TRACK 和 TRACK 请求标记为无效。如果在虚拟 IP 地址上启用此选项以及 dropInvalidReqs 选项,则可以重置向 NetScaler 设备发送 TRACE 或 TRACK 请求的客户端。

使用 CLI 配置 HTTP 配置文件

在命令提示符下,键入:

set ns httpProfile <profile name> [-markTraceReqInval ENABLED | DISABLED ]

示例:

set ns httpProfile profile1 -markTraceReqInval ENABLED

为服务组配置 HTTP 配置文件

在命令提示符下,键入:

add serviceGroup <serviceGroupName>@ <serviceType> [-cacheType <cacheType>] [-td <positive_integer>] [-maxClient <positive_integer>] [-maxReq <positive_integer>] [-cacheable ( YES | NO )] [-cip ( ENABLED | DISABLED ) [<cipHeader>]] [-usip ( YES | NO )] [-pathMonitor ( YES | NO )] [-pathMonitorIndv ( YES | NO )] [-useproxyport ( YES | NO )] [-healthMonitor ( YES | NO )] [-sp ( ON | OFF )] [-rtspSessionidRemap ( ON | OFF )] [-cltTimeout <secs>] [-svrTimeout <secs>] [-CKA ( YES | NO )] [-TCPB ( YES | NO )] [-CMP ( YES | NO )] [-maxBandwidth
<positive_integer>] [-monThreshold <positive_integer>] [-state ENABLED DISABLED )][-downStateFlush ( ENABLED | DISABLED )] [-tcpProfileName <string>] [-httpProfileName <string>] [-comment <string>] [-appflowLog ( ENABLED | DISABLED )] [-netProfile <string>] [-autoScale <autoScale> -memberPort <port> [-autoDisablegraceful ( YES | NO )] [-autoDisabledelay <secs>] ] [-monConnectionClose ( RESET | FIN )]

<!--NeedCopy-->

示例:

add serviceGroup Service-Group-1 HTTP -maxClient 0 -maxReq 0 -cip ENABLED -usip NO -useproxyport YES -cltTimeout 200 -svrTimeout 300 -CKA NO -TCPB NO -CMP NO -httpProfileName profile1

使用 NetScaler GUI 配置 HTTP 配置文件

要将 TRACE 或 TRACK 请求标记为无效,请完成以下过程。

  1. 登录 NetScaler 设备,然后导航到 配置 >系统> 配置文件
  2. HTTP 配置文件 选项卡页中,单击 添加
  3. 创建 HTTP 配置文件 页面中,选择 将跟踪请求标记为无效 选项。
  4. 单击创建

设置服务或虚拟服务器特定的 HTTP 参数

使用 HTTP 配置文件,可以为服务和虚拟服务器指定 HTTP 参数。您必须定义 HTTP 配置文件(或使用内置的 HTTP 配置文件)并将该配置文件与适当的服务和虚拟服务器关联。

注意:

您还可以根据自己的要求修改默认配置文件的 HTTP 参数。

使用命令行界面指定服务或虚拟服务器级别的 HTTP 配置

在命令提示符处,执行以下操作:

  1. 配置 HTTP 配置文件。

    set ns httpProfile <profile-name>...

  2. 将 HTTP 配置文件绑定到服务或虚拟服务器。

    要将 HTTP 配置文件绑定到服务:

set service <name> .....

示例

> set service service1 -httpProfileName profile1
<!--NeedCopy-->

要将 HTTP 配置文件绑定到虚拟服务器:

set lb vserver <name> .....

示例:

> set lb vserver lbvserver1 -httpProfileName profile1
<!--NeedCopy-->

使用 GUI 指定服务或虚拟服务器级别的 HTTP 配置

在 GUI 上,执行以下操作:

  1. 配置 HTTP 配置文件。

    导航到 系统 > 配置文件 > HTTP 配置文件,然后创建 HTTP 配置文件。

  2. 将 HTTP 配置文件绑定到服务或虚拟服务器。

    导航到 流量管理 > 负载平衡 > 服务/虚拟服务器,然后创建 HTTP 配置文件,该配置文件必须绑定到服务/虚拟服务器。

内置 HTTP 配置文件

为了方便配置,NetScaler 提供了一些内置的 HTTP 配置文件。查看列出的配置文件并按原样使用,或者对其进行修改以满足您的要求。您可以将这些配置文件绑定到所需的服务或虚拟服务器。

内置配置文件 说明
nshttp_default_profile 表示设备上的默认全局 HTTP 设置。
nshttp_default_strict_validation 要求对 HTTP 请求和响应进行严格验证的部署的设置。

HTTP 配置示例

用于配置以下内容的示例命令行界面示例:

  • HTTP 波段统计
  • WebSocket 连接

HTTP 波段统计

指定 HTTP 请求和响应的波段大小。

> set protocol httpBand reqBandSize 300 respBandSize 2048
Done
> show protocol httpband -type REQUEST
<!--NeedCopy-->

WebSocket 连接

在所需的 HTTP 配置文件上启用 WebSocket。

> set ns httpProfile http_profile1 -webSocket ENABLED
Done
> set lb vserver lbvserver1 -httpProfileName profile1
Done
<!--NeedCopy-->

配置 NetScaler 设备以删除升级标头或将升级标头传递给后端服务器

HTTP 配置文件中的 passProtocolUpgrade 参数可防止对后端服务器的攻击。根据此参数的状态,升级标头将在发送到后端服务器的请求中传递或删除,然后再发送请求。

  • 如果启用了 passProtocolUpgrade 参数,则升级标头将传递到后端服务器。服务器接受升级请求并在响应中通知它。
  • 如果禁用该参数,则会删除升级标头并将剩余的请求发送到后端服务器。

passProtocolUpgrade 参数已添加到以下配置文件中:

  • nshttp_default_profile-默认启用
  • nshttp_default_strict_validation-默认情况下禁用
  • nshttp_default_internal_apps-默认情况下禁用
  • nshttp_default_http_quic_profile-默认启用

我们建议您将 passProtocolUpgrade 参数设置为默认禁用。

使用 CLI 设置 passProtocolUpgrade 参数

在命令提示符处,键入以下内容:

set ns httpProfile <name> [-passProtocolUpgrade ( ENABLED | DISABLED )]

示例:

set ns httpProfile profile1 -passProtocolUpgrade ENABLED

使用 GUI 设置 passProtocolUpgrade 参数

  1. 导航到 系统 > 配置文件 > HTTP 配置文件
  2. 创建或编辑 HTTP 配置文件。
  3. 选择“通过协议升级”。

配置 HTTP 配置文件以验证主机标头

从 NetScaler 版本 14.1-21.x 开始,NetScaler 支持验证传入的 HTTP 请求中的主机标头,以防止主机标头注入或攻击。

启用主机标头验证后,将执行以下检查:

  • 主机标头(即 IP 地址或主机标头的 DNS 名称部分)的长度不超过 255 个字符。
  • 如果指定了端口号,则不超过 5 个字符,因为最大端口号为 65535。

如果主机标头不符合定义的条件,则此类HTTP请求将被丢弃。

默认情况下,在默认配置文件中禁用主机标头验证,在安全或严格 HTTP 配置文件中启用主机标头验证。

使用 NetScaler CLI 验证 HTTP 主机标头

在命令提示符处,键入以下内容:

set ns httpprofile <name> -hostHeaderValidation (ENABLED | DISABLED)
<!--NeedCopy-->

示例:

set ns httpProfile http_profile1 -hostHeaderValidation ENABLED
<!--NeedCopy-->

使用 NetScaler GUI 验证 HTTP 主机标头

  1. 导航到 系统 > 配置文件 > HTTP 配置文件
  2. 创建或编辑 HTTP 配置文件。
  3. 配置 HTTP 配置文件页面中,选择主机标头验证