Citrix ADC

配置和利用变量

Vous devez d 'abord créer une variable, puis影响une value ou spécifier l 'opération qui doit être effectuée sur la variable。Après avoir effectué ces opérations, vous pouvez utiliser l ' affection comme action de stratégie。

备注:une fois configuré, les paramètres d 'une variable ne peuvent pas être modifiés ou réinitialisés。Si la变量doit être modifiée, la变量et toutes les références à la变量(表达式和修饰)doivent être supprimées。La variable peut ensuite être rajoutée avec de nouveaux paramètres, et les références(表达式和修饰)peuvent être rajoutées。

倒配置变量à l 'aide de l 'interface de ligne de command

  1. Créez une变量。
add ns变量 -type  [-scope global] [-ifFull (undef | lru)] [-ifValueTooBig (undef | truncate)] [-ifNoValue (undef | init)] [-init ] [-expires ] [-comment ] 

标记: Reportez-vous à la page man«man添加ns变量»pour la description des paramètres de command。

例1:Créez une variable ulong nommée«my_counter»et initialisez-la à 1。

添加变量my_counter -type ulong -init 1 

例2:Créer une carte nommée«user_privilege_map»。连续菜单clés最长时间15 caractères和最长时间10的文本值caractères,最大时间10000 entrées。

添加ns变量user_privilege_map类型map(text(15),text(10),10000) 

标记:点菜大陆10000 entrées非expirées, les affections pour les nouvelles clés réutilisent l 'une des entrées les moins récemment utilisées。Par défaut, une expression essayant d 'obtenir une value pour une clé inexistante initialisera une valeur de texte vide。

影响你的价值spécifiez l 'opération à影响你的变量。Cela se fait en créant une做作。

添加ns assignment  -variable  [-set  | -add  | -sub  | -append  | -clear] [-comment ] 

备注:Une variable est référencée à l 'aide du sélecteur de variable($)。结果,variable1美元Est utilisé pour faire référence à des变量de texte ou ulong。德媒母,如上所述美元的操作(键表达式)Est utilisée pour faire référence à des variables de carte。

例1:Définissez une afftation nommée«inc_my_counter»qui ajoute automatiquement 1 à la variable«my_counter»。

添加ns赋值inc_my_counter -variable $my_counter -add 1 

例2:Définissez une affectation nommée«set_user_privilege»qui ajoute à la variable«user_privilege_map»une entrée pour l ' address IP du client avec la valeur renvoyée par la légende HTTP«get_user_privilege»。

添加ns分配set_user_privilege -variable $user_privilege_map[client.ip.src. map]。-set sys.http.callout(get_user_privilege) 

标记: Si une entrée pour cette clé exist déjà, la valeur sera remplacée。Sinon,新事物entrée pour la clé和valeur sera ajoutée。Sur la base de la déclaration précédente pour user_privilege_map, si la carte continental déjà 10000 entrées, l 'une des entrées les moins récemment utilisées sera réutilisée pour la nouvelle clé et la nouvelle valeur。

  1. 变量的修饰stratégie。

    有两个函数是由变量决定的。

    • 美元name.valueExists(键表达式)。Renvoie true s 'il y une valeur dans la carte sélectionnée par l 'expression clé。Sinon renvoie false。Cette函数满足à jour les information d 'expiration et de LRU si l 'entrée de carte exist, mais ne crée pas de nouvelle entrée de carte si la valeur n ' exist pas。

    • name.valueCount美元。实际价值的变化détenues变量的变化。Il s 'agit du nombre d 'entrées dan une carte。倒une变量单,ceci est 0 si la变量n 'est pas initialisée ou 1 autrement。

    为例:调用函数nommée«set_user_privilege»avec une stratégie解压。

添加cmp策略set_user_privilege_pol -rule $user_privilege_map.valueExists(client.ip.src.typecast_text_t)set_user_privilege 

Cas d 'utilisation pour insérer un en-tête HTTP dans le côté réponse

一个变量的例子,一个变量的例子。

Ajoutez une变量单例de类型文本。Cette变量peut conconir un maximum de 100八字节de données。

添加ns变量http_req_data -type text(100) -scope transaction 

Ajoutez une action d ' afftation, qui sera utilisée pour stocker les données de requête HTTP dans la variable。

添加ns赋值set_http_req_data -variable $http_req_data -set http.req.body(100) 

Ajoutez une action de réécriture pour insérer l 'en-tête HTTP, don ' t la valeur sera récupérée à partir de la variable。

添加重写动作act_ins_header insert_http_header user_name $http_req_data.after_str("user_name").before_str("password") 

阿祖特恩stratégie德réécriture qui évaluera丹赫里德拉requête与效果的行动,倾注stocker les données。Lorsque nous atteignons cette stratégie, nous allons prendre l 'action d ' affection et stocker les données dans la variable ns (http_req_data)

添加重写策略pol_set_variable true set_http_req_data绑定重写全局pol_set_variable 10类型req_dEFAULT 

Ajoutez une stratégie de réécriture qui évaluera dans le temps de réponse, et Ajoutez un en-tête HTTP dans la réponse。

添加重写策略pol_ins_header true act_ins_header绑定重写全局pol_ins_header 10 -type res_dEFAULT 

行动d 'affectation

Dans une appliance Citrix ADC, une action d ' afftation liée à la stratégie est déclenchée lorsque la règle de stratégie est évaluée à true。L 'action met à可变的时间être utilisée dans les évaluations ultérieures des règles de stratégie。De cette façon, la même变量peut être mise à jour et utilisée pour des évaluations De stratégie ultérieures dans la même fonctionnalité。Auparavant, l 'appliance exécutait de action d 'affectation独特après avoir évalué toutes les stratégies de function losque les stratégies des actions d 'affectation associées étaient évaluées à true。conséquent,可变价值définie,可变影响être utilisée,可变影响évaluations règles,可变影响stratégie,可变影响être utilisée,可变影响être utilisée,可变影响être utilisée,可变影响être utilisée,可变影响être utilisée。

Cette fonctionnalité peut être mieux包括avec un cas d 'utilisation qui contrôle la liste d 'accès des客户sur une appliance Citrix ADC。La décision d 'accès est fournie par un service Web distinct, avec La demand/客户端访问吗?<客户端ip地址>qui renvoie une réponse avec«BLOCK»ou«Autoriser»dans le corps。La légende HTTP est configurée pour inclure l ' address IP du客户端associée à une requête入口。当l 'appliance Citrix ADC recoit一个客户端,一个要求d l 'appliance genere拉要求de legende et l 'envoie au serveur de legende heberge一个基础数据d本IP群众演员在la liste角和联合国代理de legende HTTP, verifie si l本IP du客户est repertoriee在基础数据。L 'agent de légende HTTP reçoit la demand de légende, vérifie si L ' address IP du client est répertoriée et envoie une réponse。La réponse est un code d ' état, 200,302 avec«BLOCK»ou«Autoriser»dans le corps。En function du code d ' état, l ' appliance effect l ' évaluation de la stratégie。Si l ' évaluation de stratégie a la valeur true, l ' action d ' affecest déclenchée immédiatement et l ' action définit la valeur à la variable。L’appliance utilet définit cette valeur de variable pour une évaluation ultérieure de stratégie dans le même模块。

Cas d 'utilisation pour configururer l 'action d ' affation

suivous les étapes ci-dessous pour configurer l 'action d ' afftation et utiliser la variable pour les stratégies suivantes:

  1. La décision d 'accès est fournie par un service Web séparé, avec La demand qui renvoie une réponse avec BLOCK ou Autoriser dans le corps。

    GET / url-service > / url-allowed吗?< URL路径>

  2. 配置une变量点菜倒容器décisions d 'accès倒容器URL。

    添加ns变量url_list_map类型'map(text(1000),text(10),10000)'

  3. 配置une légende HTTP pour envoy la demand d 'accès au service Web。

    add policy httpCallout url_list_callout -vserver url_vs -returnType TEXT -urlStemExpr '"/url-allowed?"+ HTTP.REQ.URL。PATH' -resultExpr 'HTTP.RES.BODY(10)'

  4. 配置une action d 'affectation pour申诉la légende pour obtenir la décision d 'accès et l 'affecter à l 'entrée de mappage de l 'URL。

    add ns assign client_access_assn -variable '$client_access_map[CLIENT.IP.SRC. map]-set SYS.HTTP_CALLOUT(client_access_callout)

  5. 配置une动作de répondeur pour envoy une réponse 403 si une requête d 'URL est bloquée。

    add responder action url_list_block_act responder with '"HTTP/1.1 403 Forbidden\\r\ n\\r\\n"'

  6. 配置une stratégie de répondeur pour définir l 'entrée de carte pour l 'URL si elle n 'est pas déjà définie。Avec l 'amélioration de l ' action immédiate, la valeur d 'entrée de carte est définie loors de l ' évaluation de ceette stratégie。前卫'amélioration, l ' afftation n ' pas été effectuée前卫que toutes les stratégies des intervenants aient été évaluées décision est fournie par un service Web distinct。

    $url_list_map.VALUEEXISTS(http . require . url . path)' url_list_assn

  7. 配置une stratégie de répondeur pour bloquer l 'accès à une URL si sa valeur d 'entrée de carte est BLOCK。Avec l 'amélioration de l 'action immédiate, l 'entrée de carte définie par la stratégie précédente peut être utilisée dans cette stratégie。先锋派'amélioration,先锋派'entrée de carte n 'est toujours pas définie à ce stade。

    添加响应器策略client_access_block_pol '$client_access_map[CLIENT.IP.SRC.]TYPECAST_TEXT_T] == "BLOCK"' client_access_block_act .

  8. Liez les stratégies de répondeur au servur virtuel。标记:全球常识stratégies car常识exécuter pour la légende HTTP sur un server virtuel distinct。

    bind lb vserver vs -policyName client_access_assn_pol -priority 10 -gotoPriorityExpression NEXT -type REQUESTbind lb vserver vs -policyName client_access_block_pol -priority 20 -gotoPriorityExpression END -type REQUEST

倒配置变量à配置工具

  1. Accedez一AppExpert >变量NS,倒créer une变量。
  2. Accedez一AppExpert > nsassignments,倒影响值à拉变量。
  3. Accédez à la zone d 'entités appropriée dans laquelle vous souhaitez configure l ' afficer en tant qu 'action。
配置和利用变量