Citrix ADC

配置 HTTP 标注

配置 HTTP 标注时,您可以指定请求类型(HTTP 或 HTTPS)、请求的目标和格式、响应的预期格式以及要分析的响应部分。

对于目标,您可以指定 HTTP 标注代理的 IP 地址和端口,或者使用负载平衡、内容切换或缓存重定向虚拟服务器来管理 HTTP 标注请求。在第一种情况下,HTTP 标注请求将直接发送到 HTTP 标注代理。在第二种情况下,HTTP 标注请求将被发送到指定虚拟服务器的虚拟 IP 地址 (VIP)。然后,虚拟服务器将以处理客户端请求的方式处理请求。例如,如果您期望生成大量标注,则可以在多台服务器上配置 HTTP 标注代理的实例,将这些实例(作为服务)绑定到负载平衡虚拟服务器,然后在 HTTP 标注配置中指定负载平衡虚拟服务器。然后,负载平衡虚拟服务器根据负载平衡算法确定的配置实例上的负载平衡。

对于 HTTP 标注请求的格式,您可以指定 HTTP 标注请求的各个属性(基于属性的 HTTP 标注),也可以将整个 HTTP 标注请求指定为默认语法表达式(基于表达式的 HTTP 标注)。

注意:设备不检查请求的有效性。您必须确保请求是有效的请求。不正确或不完整的 HTTP 标注配置会导致运行时不与操作关联的 UndiF 条件。UnDIF 条件仅更新未定义的命中计数器,这使您能够对错误配置的 HTTP 标注进行故障排除。但是,设备会分析 HTTP 标注请求,以便您能够为标注配置某些 Citrix ADC 功能。这可能会导致 HTTP 标注调用自己。有关标注递归以及如何避免它的信息,请参阅避免 HTTP 标注递归

最后,无论是使用 HTTP 请求属性还是表达式来定义 HTTP 标注请求的格式,都必须指定来自 HTTP 标注代理的响应格式以及要评估的响应部分。响应可以是布尔值、数字或文本。要评估的响应部分由表达式指定。例如,如果指定响应包含文本,则可以使用HTTP.RES.BODY(<unit>) `指定设备必须仅评估 <unit> 来自标注代理的响应的第一个字节。

在命令行中,首先使用 add 命令创建 HTTP 标注。添加标注时,所有参数都设置为 NONE 的默认值,但 HTTP 方法除外,该方法设置为 GET 的默认值。然后,您可以使用 set 命令配置标注的参数。set 命令用于配置两种类型的标注(基于属性和基于表达式的标注)。不同之处在于用于配置两种类型的标注的参数。因此,下面的命令行说明包括用于配置基于属性的标注的 set 命令和用于配置基于表达式的标注的 set 命令。在配置实用程序中,所有这些配置任务都在单个对话框中执行。

注意:在将 HTTP 标注放入策略之前,您可以修改除返回类型之外的所有配置参数。一旦 HTTP 标注位于策略中,您就无法完全修改标注中配置的表达式。例如,您不能将 HTTP.REQ.HEADER(“myval”) 更改为 CLIENT.IP.SRC。但是,您可以修改传递给表达式的运算符和参数。例如,您可以将 HTTP.REQ.HEADER("myVal1") 更改为 HTTP.REQ.HEADER("myVal2") 或将 HTTP.REQ.HEADER("myVal") 更改为 HTTP.REQ.HEADER("myVal").AFTER_STR(<string>)。如果 set 命令失败,请创建一个新的 HTTP 标注。

HTTP 标注配置涉及配置默认语法表达式。有关配置默认语法表达式的详细信息,请参阅配置默认语法表达式:入门。

使用命令行界面配置 HTTP 标注

在命令提示窗口中执行以下操作:

  1. 创建 HTTP 标注。

    add policy httpCallout <name>

    示例

    add policy httpCallout mycallout
    
  2. 配置 HTTP 标注的详细信息。

    • 要配置基于属性的 HTTP 标注,请键入:
    set policy httpCallout <name> [-IPAddress <ip_addr|ipv6_addr|\*>] [-port <port|\*>] [-vServer <string>] [-returnType <returnType>] [-httpMethod ( GET | POST )] [-hostExpr <string>] [-urlStemExpr <string>] [-headers <name(value)> ...] [-parameters <name(value)> ...] [-resultExpr <string>]
    

    示例

    > set policy httpCallout mycallout -vserver lbv1 -returnType num -httpMethod GET -hostExpr 'http.req.header("Host")'
    -urlStemExpr "http.req.url" -parameters Name("My Name") -headers Name("MyHeader")
    -resultExpr "http.res.body(10000).length"
    
    

    要配置基于表达式的 HTTP 标注,请键入:

    set policy httpCallout <name> [-vServer <string>] [-returnType <returnType>] [-httpMethod ( GET | POST )] [-fullReqExpr <string>] [-resultExpr <string>]
    

    示例

    > set policy httpCallout mycallout1 -vserver lbv1 -returnType num -httpMethod GET
    -fullReqExpr q{"GET " + http.req.url + "HTTP/" + http.req.version.major + "." + http.req.version.minor.sub(1)+
    "r\nHost:10.101.10.10\r\nAccept: \*/\*\r\n\r\n"}
    
  3. 验证 HTTP 标注的配置。

    show policy httpCallout <name>

使用配置实用程序配置 HTTP 标注

  1. 导航到 AppExpert > HTTP 标注
  2. 在详细信息窗格中,单击 Add(添加)。
  3. 创建 HTTP 标注对话框中,配置 HTTP 标注的参数。有关参数的描述,请将鼠标光标悬停在复选框上。
  4. 单击 Create(创建),然后单击 Close(关闭)。

配置 HTTP 标注