Citrix ADC

配置 超文本传输协议标注

配置 超文本传输协议标注时,您可以指定请求的类型(HTTP或 (HTTPS)目标和请求的格式。响应的预期格式,最后是要分析的响应部分。

对于目标,您可以指定HTTP标注代理的IP地址和端口。或者使用负载平衡,内容切换或缓存重定向虚拟服务器来管理HTTP标注请求。

在第一种情况下,超文本传输协议标注请求直接发送到 超文本传输协议标注代理。在第二种情况下,超文本传输协议标注请求将发送到指定虚拟服务器的虚拟 知识产权地址 (贵宾)虚拟服务器处理请求的方式与处理客户端请求的方式相同。例如,如果您希望生成许多标注,则可以在多台服务器上配置 超文本传输协议标注代理的实例,将这些实例(作为服务)绑定到负载平衡虚拟服务器,然后在 超文本传输协议标注配置中指定负载平衡虚拟服务器。然后,负载平衡虚拟服务器根据负载平衡算法确定的配置实例上的负载平衡。

对于 超文本传输协议标注请求的格式,您可以指定 超文本传输协议标注请求(基于属性的 超文本传输协议标注)的各个属性,也可以将整个 超文本传输协议标注请求指定为高级策略表达式(基于表达式的 超文本传输协议标注)。

下表介绍了HTTP标注策略中的元素:

有关更多信息,请参阅策略HTTPcallout

参数 说明
名称 标注的名称,最多 127 个字符
IP地址和端口(IP地址/端口)或虚拟服务器名称(虚拟服务器) 向其发送标注的服务器的 IPv4或 IPv6地址,或者通配符,以及向其发送标注的服务器上的端口或通配符。或者,服务类型为 超文本传输协议的负载平衡、内容切换或缓存重定向虚拟服务器的名称。
超文本传输协议方法(http方法) 超文本传输协议方法(HTTP方法)。此标注发送的 超文本传输协议请求中使用的方法。有效值:收到或 邮递默认值:收到
主机表达式(hostExPR) 主机表达式 (hostExPR)用于配置主机标头的高级文本表达式。最大长度:255。表达式可以是文字值,也可以是派生该值的高级表达式。示例:”10.101.10.11“http.req.头(“主机”)”
统一资源定位地址干表达式 (urlStemExPR) URL干表达式(urlStemExPR)用于生成URL干的高级字符串表达式。最大长度:8191。表达式可以是文字字符串,也可以是派生值的表达式。示例:“mysite / index . html”““http.req.url”
HTTP标头(标头) 超文本传输协议标头(标头)。用于在 超文本传输协议标注请求中插入 超文本传输协议标题及其值的高级文本表达式。为每个标题指定一个值。您可以将标题名称指定为字符串,将标题值指定为高级表达式。指定以空格分隔的标题。例如-标题cip(客户端 .src)hdr(http.req.header(“hdr”))标题的数量可以是 8.
基于表达式的发送到服务器的请求 (fullRequExPR) Citrix ADC将作为高级表达式发送的确切HTTP请求,最多8191个字符。如果指定此参数,则必须省略HttpMethod, hostExPR, urlSTEMEXPR,标头和参数参数。请求表达式受使用标注的功能的约束,例如,HTTP。RES表达式不能用于请求时间策略库或TCP内容交换策略库中。
基于表达式的请求发送到服务器(BodyExPR) 用于生成请求正文的高级字符串表达式。表达式可以包含一个文字字符串或派生值的表达式(例如,client.ip.src)与-fullRqexPR互相排斥。
参数 用于在标注发送的 超文本传输协议请求中插入查询参数的高级表达式。为配置的每个参数指定一个值。如果标注请求使用 收到方法,则这些参数将插入到 统一资源定位地址中。如果标注请求使用 邮递方法,则这些参数将插入 邮递正文中。您可以将查询参数名称配置为字符串,将值配置为高级表达式。参数值经过 统一资源定位地址编码。指定以空格分隔的参数,例如:-参数name1(“name1”)name2(http.req.header(“hdr”))最多可以配置 8.个参数。
返回类型 (返回式) 目标应用程序在对标注的响应中返回的数据类型。有效值:文本:将返回值视为文本字符串。NUM:将返回值视为数字。BOOL:将返回值视为布尔值。注意:设置退货类型之后,您无法更改退货类型。
从响应中提取数据的表达式(ResultExPR) 从HTTP标注的响应中提取HTTP。RES对象的高级表达式。最大长度为 8191。此表达式中的操作必须与返回类型匹配。例如,如果配置返回类型的文本,则结果表达式必须是基于文本的表达式。如果返回类型为 num,则结果表达式 (ResultExPR) 必须返回类似于以下内容的数值:“http.res.body (10000) .length” 注意:有时,如果设置了 TEXT 的返回类型并且从服务器发送的结果超过 16 KB,则结果表达式可以返回 NULL。例如,当结果为超过 16 KB 的连接字符串时。
方案 标注服务器的方案类型。例如:HTTP、https
CacheForSECS 缓存标注响应的持续时间(以秒为单位)。缓存的响应存储在名为“calloutContent集团”的集成缓存内容组中。如果未配置持续时间,除非使用普通的缓存配置来缓存它们,否则不会缓存标注响应。此参数优先于本来应用于这些响应的任何常规缓存配置。

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

最后,无论是使用 超文本传输协议请求属性还是表达式来定义 超文本传输协议标注请求的格式,都必须指定来自 超文本传输协议标注代理的响应格式以及要评估的响应部分。响应类型可以是布尔值、数字或文本。仅基于此返回类型,您可以在标注响应中使用进一步的表达式方法。如果返回类型是数字,则可以根据标注响应使用基于数字的表达式。要评估的响应部分由表达式指定。例如,如果您指定响应包含文本,则可以使用HTTP.RES.BODY(<单位>)指定设备必须仅评估<单位>来自标注代理的响应的前一个字节。

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

注意:在将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(<字符串>)。如果组命令失败,请创建HTTP标注。

超文本传输协议标注配置涉及配置高级策略表达式。有关配置高级策略表达式的详细信息,请参阅配置高级策略表达式:入门主题。

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

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

创建HTTP标注。

add policy httpCallout  [-IPAddress ] [-port] [-vServer ] [-returnType ] [-httpMethod (GET | POST)] [-hostExpr ] [-urlStemExpr ] [-headers …[-parameters …][-bodyExpr ] [-fullReqExpr ] [-scheme (http | https)] [-resultExpr ] [-cacheForSecs ] [-comment ] 

例如

添加策略httpCallout mycallout-vserver lbv1-returnType num-httpMethod GET-hostxpr'http.req.header(“主机”)-urlStemExpr“http.req.url”-参数名称(“我的名字”)-headers名称(“MyHeader”)-resultExpr“http.res.body(10000).length”<--需要复制-->

修改 超文本传输协议标注配置。

设置策略httpCallout[-IPAddress][-port][-vServer][-returnType][-httpMethod(GET | POST)][-hostExpr][-urlStemExpr][-headers][-parameters][-resultExpr][-NeedCopy-->

例如

>设置策略httpCallout mycallout-vserver lbv1-returnType num-httpMethod GET-hostxpr'http.req.header(“主机”)-urlStemExpr“http.req.url”-参数名(“我的名字”)-头名(“我的头”)-resultExpr“http.res.body(10000).长度“<!--NeedCopy-->

使用 fullRequExPR参数配置 超文本传输协议标注。

设置策略httpCallout[-vServer][-returnType][-fullReqExpr][-resultExpr]<--需要复制-->

例如

> set policy httpCallout mycallout1 -vserver lbv1 -returnType num fullReqExpr q{"GET " + HTTP . request .url + "HTTP/" + HTTP . request .version.major + "."+ http.req.version.minor.sub(1) +“r \ nHost: 10.101.10.10 \ r \ nAccept: \ * / \ \ r \ n \ r \ n”}< !——NeedCopy >

验证 超文本传输协议标注的配置。

show policy-httpCallout``sh policy-httpCallout-mycallout 1>名称:mycallout 1>Vserver:lbv1(UP)有效Vserver状态:UP返回类型:文本方案:HTTP完整请求表达式:“GET”+HTTP.REQ.url+“HTTP/”+HTTP.REQ.version.major+“+HTTP.REQ.version.minor.sub(1)+“r\n主机:10.101.10\r\n接受:\*/\*\*\r\n\r\n”结果表达式:HTTP.res.body(100)命中率:0未定义命中率:0完成><!--NeedCopy-->

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

  1. 导航到专家>HTTP标注
  2. 在详细信息窗格中,单击添加(添加)。
  3. 在“创建 超文本传输协议标注“对话框中,配置HTTP标注的参数。有关参数的描述,请将鼠标光标悬停在复选框上。
  4. 单击创造(创建),然后单击(关闭)。配置 超文本传输协议标注
配置 超文本传输协议标注