Citrix ADC

配置HTTP调出

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

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

在第一种情况下,HTTP调出请求直接发送到HTTP调出代理。在第二种情况下,HTTP调出请求被发送到指定虚拟服务器的虚拟IP地址(VIP)。虚拟服务器以与处理客户端请求相同的方式处理请求。例如,如果希望生成许多调出,则可以在多个服务器上配置HTTP调出代理的实例,将这些实例(作为服务)绑定到负载均衡虚拟服务器,然后在HTTP调出配置中指定负载均衡虚拟服务器。负载均衡虚拟服务器然后根据负载均衡算法来平衡那些已配置实例上的负载。

对于HTTP调出请求的格式,可以指定HTTP调出请求的各个属性(基于属性的HTTP调出),也可以将整个HTTP调出请求指定为高级策略表达式(基于表达式的HTTP调出)。

对于HTTP调出请求的格式,可以指定HTTP调出请求的各个属性(基于属性的HTTP调出),也可以将整个HTTP调出请求指定为高级策略表达式(基于表达式的HTTP调出)。

有关更多信息,请参见policy-httpCallout

参数 描述
的名字 标注的名称,最多127个字符
IP地址和端口(IP -address /港口)或虚拟服务器名称(vserver) 发送呼叫码到的服务器的IPv4或IPv6地址或通配符,以及发送呼叫码到的服务器的端口或通配符。或者,具有HTTP服务类型的负载均衡、内容切换或缓存重定向虚拟服务器的名称。
HTTP方法(httpMethod) HTTP方法(httpMethod)。此调出发送的HTTP请求中使用的方法。有效值:GET或POST。默认值:。
主机表达式(hostExpr) 主机表达式(hostExpr)。用于配置主机报头的高级文本表达式。最大长度为255。表达式可以是文字值,也可以是派生该值的高级表达式。示例:" 10.101.10.11 "," http.req.header("Host") "
URL词干表达式 URL词干表达式(urlStemExpr) URL词干的高级字符串表达式。最大长度:8191。表达式可以是字面值字符串,也可以是派生值的表达式。示例:"/mysite/index.html" " http.req.url "
HTTP Headers (Headers) HTTP Headers (Headers)。用于在HTTP调出请求中插入HTTP标头及其值的高级文本表达式。为每个头指定一个值。您可以将标题名称指定为字符串,并将标题值指定为高级表达式。指定用空格分隔的标题。例如-headers cip(client.ip.src) hdr(http.req.header(" hdr "))。头信息的个数可以是8个
发送到服务器的基于表达式的请求(fullReqExpr) Citrix ADC将作为高级表达式发送到8191个字符的确切HTTP请求。如果你指定了这个参数,你必须省略httpMethod, hostExpr, urlStemExpr, headers和parameters参数。请求表达式受到使用调出的特性的约束。例如,HTTP。RES表达式不能用于请求时策略库和TCP内容切换策略库。
发送到服务器的基于表达式的请求(bodyExpr) 用于生成请求主体的高级字符串表达式。表达式可以包含一个字面值字符串或派生值的表达式(例如,client.ip.src)。与-fullReqExpr互斥。
参数 用于在调出发送的HTTP请求中插入查询参数的高级表达式。为您配置的每个参数指定一个值。如果调出请求使用GET方法,则这些参数将插入到URL中。如果调出请求使用POST方法,则这些参数将插入到POST体中。您可以将查询参数名配置为字符串,将值配置为高级表达式。参数值是URL编码的。指定以空格分隔的参数,例如:-parameters name1(" name1 ") name2(http.req.header(" hdr "))。最多可配置8个参数。
返回类型:returnType 目标应用程序在对调出的响应中返回的数据类型。有效值:TEXT:将返回值作为文本字符串处理。NUM:将返回值作为数字处理。BOOL:将返回值作为布尔值处理。注意:设置后不能更改返回类型。
表达式从响应中提取数据(resultExpr) 提取HTTP的高级表达式。HTTP调出的响应中的RES对象。最大长度为8191。此表达式中的操作必须与返回类型匹配。例如,如果配置了文本的返回类型,则结果表达式必须是基于文本的表达式。如果返回类型为num, result表达式(resultExpr)必须返回一个类似于" http.res.body(10000) "的数值。注意:有时候,如果你设置了一个返回类型TEXT,并且从服务器发送的结果超过16kb,结果表达式可以返回NULL。例如,当结果是一个超过16 KB的连接字符串时。
计划 调出服务器的方案类型。例如:HTTP、https
cacheForSecs 缓存调出响应的持续时间,以秒为单位。缓存的响应存储在名为“calloutContentGroup”的集成缓存内容组中。如果未配置持续时间,则不缓存调出响应,除非使用正常的缓存配置来缓存它们。此参数优先于任何正常的缓存配置,否则将应用于这些响应。

请注意:设备不检查请求的有效性。您必须确保请求是有效的请求,并且不包含任何机密信息。不正确或不完整的HTTP调出配置将导致与操作不关联的运行时UNDEF条件。UNDEF条件仅仅更新了Undefined Hits计数器,使您能够排除配置错误的HTTP调出故障。但是,设备会解析HTTP调出请求,使您能够为调出配置某些Citrix ADC特性。这可能导致HTTP调出调用自身。有关调出递归以及如何避免它的信息,请参见避免HTTP Callout递归

最后,无论使用HTTP请求属性还是表达式来定义HTTP调出请求的格式,都必须指定来自HTTP调出代理的响应的格式以及希望计算的响应部分。响应类型可以是布尔值、数字或文本。仅基于此返回类型,您可以在调出响应上使用进一步的表达式方法。如果返回类型是数字,则可以在调出响应上使用基于数字的表达式。要计算的响应部分由表达式指定。例如,如果指定响应包含文本,则可以使用HTTP.RES.BODY(<单位>)若要指定设备必须只计算来自调出代理的响应的第一个字节。

在命令行中,首先使用add命令创建一个HTTP调出。添加调出时,所有参数都被设置为默认值NONE, HTTP方法除外,该方法被设置为默认值GET。然后使用set命令配置callout的参数。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(<字符串>).如果set命令失败,则创建HTTP调出。

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 -hostExpr 'http.req.header("Host")'-urlStemExpr "http.req. header("Host")'url" -parameters Name("My Name") -headers Name("MyHeader")-resultExpr "http.res.body(10000)。长度“< !——NeedCopy >

修改HTTP调出配置。

set policy httpCallout  [-IPAddress ] [-port ] [-vServer ] [-returnType ] [-httpMethod (GET | POST)] [-hostExpr ] [-urlStemExpr ] [-headers …[-parameters …][-resultExpr ] 

例子

> set policy httpCallout mycallout -vserver lbv1 -returnType num -httpMethod GET -hostExpr 'http.req.header("Host")'-urlStemExpr "http.req. header("Host")'url" -parameters Name("My Name") -headers Name("MyHeader") -resultExpr "http.res.body(10000)。长度“< !——NeedCopy >

使用fullReqExpr参数配置HTTP调出。

set policy httpCallout  [-vServer ] [-returnType ] [-fullReqExpr ] [-resultExpr ] 

例子

> set policy httpCallout mycallout1 -vserver lbv1 -returnType num 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”}< !——NeedCopy >

验证HTTP调出的配置。

show policy httpCallout '  ' sh policy httpCallout mycallout1 >名称:mycallout1 >Vserver: lbv1 (UP) Vserver有效状态:UP返回类型:TEXT方案:HTTP完整REQ expr: "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" Result expr: http.res.body(100) Hits: 0 Undef Hits: 0 Done > 

使用配置实用程序配置HTTP调出

  1. 导航到AppExpert>HTTP插图的编号
  2. 在详细信息窗格中,单击添加
  3. 创建HTTP Callout对话框中,配置HTTP调出参数。有关参数的说明,请将鼠标光标悬停在复选框上。
  4. 点击创建然后点击关闭配置HTTP调出
配置HTTP调出