Citrix ADC

Configuration d’une légende HTTP

Lorsque vous configurez une légende HTTP, vous spécifiez le type de demande (HTTP ou HTTPS), la destination et le format de la demande. Le format attendu de la réponse et, enfin, la partie de la réponse que vous souhaitez analyser.

Pour la destination, vous spécifiez soit l’adresse IP et le port de l’agent de légende HTTP. Vous pouvez également engager un serveur virtuel d’équilibrage de charge, de commutation de contenu ou de redirection de cache pour gérer les demandes de légende HTTP.

Dans le premier cas, les demandes de légende HTTP sont envoyées directement à l’agent de légende HTTP. Dans le second cas, les demandes de légende HTTP sont envoyées à l’adresse IP virtuelle (VIP) du serveur virtuel spécifié. Le serveur virtuel traite la demande de la même manière qu’il traite une demande client. Par exemple, si vous attendez à ce que de nombreuses légendes soient générées, vous pouvez configurer des instances de l’agent de légende HTTP sur plusieurs serveurs, lier ces instances (en tant que services) à un serveur virtuel d’équilibrage de charge, puis spécifier le serveur virtuel d’équilibrage de charge dans la configuration de légende HTTP. Le serveur virtuel d’équilibrage de charge équilibre ensuite la charge sur ces instances configurées comme déterminé par l’algorithme d’équilibrage de charge.

Pour le format de la demande de légende HTTP, vous pouvez spécifier les attributs individuels de la demande de légende HTTP (légende HTTP basée sur des attributs), ou vous pouvez spécifier l’intégralité de la demande de légende HTTP en tant qu’expression de stratégie avancée (légende HTTP basée sur une expression).

Pour le format de la demande de légende HTTP, vous pouvez spécifier les attributs individuels de la demande de légende HTTP (une légende HTTP basée sur des attributs) ou vous pouvez spécifier l’intégralité de la demande de légende HTTP en tant qu’expression de stratégie avancée (une légende HTTP basée sur une expression).

Pour plus d’informations, voir Policy-HttpCallout

Paramètre Description
Nom Nom de la légende, 127 caractères maximum
Adresse IP et port (adresse IP/port) ou nom du serveur virtuel (vserver) Adresse IPv4 ou IPv6 du serveur vers lequel la légende est envoyée, ou un caractère générique, et le port du serveur vers lequel la légende est envoyée, ou un caractère générique. Ou bien, le nom d’un serveur virtuel d’équilibrage de charge, de commutation de contenu ou de redirection de cache avec un type de service HTTP.
Méthode HTTP (HttpMethod) Méthode HTTP (HttpMethod). Méthode utilisée dans la requête HTTP envoyée par cette légende. Valeurs valides : GET ou POST. Par défaut : GET.
Expression de l’hôte (HostexPR) Expression de l’hôte (HosteXPR). Expression de texte avancée pour configurer l’en-tête Host. Longueur maximale : 255. L’expression peut être une valeur littérale ou une expression avancée qui dérive la valeur. Exemples : « 10.101.10.11 », « http.req.header (« hôte ») »
Expression de tige d’URL (URLStemExpr) Expression de tige URL (URLSemExpr) Expression de chaîne avancée permettant de générer la souche d’URL. Longueur maximale : 8191. L’expression peut être une chaîne littérale ou une expression qui dérive la valeur. Exemples : « » /mysite/index.html « » « http.req.url »
En-têtes HTTP (en-têtes) En-têtes HTTP (en-têtes). Expression de texte avancée pour insérer des en-têtes HTTP et leurs valeurs dans la demande de légende HTTP. Spécifiez une valeur pour chaque en-tête. Vous spécifiez le nom de l’en-tête sous forme de chaîne et la valeur d’en-tête en tant qu’expression avancée. Spécifiez les en-têtes séparés par l’espace. Tels que -headers cip(client.ip.src) hdr(http.req.header(“HDR”)). Le nombre d’en-têtes peut être de 8
Demande d’envoi au serveur basée sur des expressions (FullReqExpr) Demande HTTP exacte que Citrix ADC doit envoyer en tant qu’expression avancée à 8191 caractères. Si vous spécifiez ce paramètre, vous devez omettre les arguments HttpMethod, HostexPR, URLStemExpr, en-têtes et paramètres. L’expression de requête est limitée par la fonction dans laquelle la légende est utilisée. Par exemple, une expression HTTP.RES ne peut pas être utilisée dans une banque de stratégies au moment de la demande ou dans une banque de stratégies de changement de contenu TCP.
Demande d’envoi au serveur basée sur des expressions (BodyExpr) Expression de chaîne avancée permettant de générer le corps de la requête. L’expression peut contenir une chaîne littérale ou une expression qui dérive la valeur (par exemple, client.ip.src). S’exclut mutuellement avec -FullReqExpr.
Paramètres Expression avancée permettant d’insérer des paramètres de requête dans la requête HTTP envoyée par la légende. Spécifiez une valeur pour chaque paramètre que vous configurez. Si la demande de légende utilise la méthode GET, ces paramètres sont insérés dans l’URL. Si la demande de légende utilise la méthode POST, ces paramètres sont insérés dans le corps POST. Vous configurez le nom du paramètre de requête sous forme de chaîne et la valeur en tant qu’expression avancée. Les valeurs des paramètres sont codées par URL. Spécifiez les paramètres séparés par l’espace comme ፦paramètres name1 (« name1”) name2 (http.req.header (« hdr »)). Le maximum de 8 paramètres peut être configuré.
Type de retour (ReturnType) Type de données renvoyées par l’application cible dans la réponse à la légende. Valeurs valides : TEXT : Traitez la valeur renvoyée comme une chaîne de texte. NUM : Traitez la valeur renvoyée comme un nombre. BOOL : Traitez la valeur renvoyée comme une valeur booléenne. Remarque : Vous ne pouvez pas modifier le type de retour une fois qu’il a été défini.
Expression pour extraire des données de la réponse (ResultExpr) Expression avancée qui extrait les objets HTTP.RES de la réponse à la légende HTTP. La longueur maximale est de 8191. Les opérations de cette expression doivent correspondre au type de retour. Par exemple, si vous configurez un type de texte renvoyé, l’expression de résultat doit être une expression textuelle. Si le type de retour est num, l’expression de résultat (ResultExpr) doit renvoyer une valeur numérique similaire à la suivante : « http.res.body (10000) .length » Remarque : Parfois, si vous définissez un type de retour TEXT et que le résultat envoyé par le serveur dépasse 16 Ko, l’expression de résultat peut renvoyer NULL. Par exemple, lorsque le résultat est une chaîne concaténée qui dépasse 16 Ko.
Modèle Type de schéma pour le serveur de légende. Exemple : HTTP, https
Cache pour Secs Durée, en secondes, pour laquelle la réponse de légende est mise en cache. Les réponses mises en cache sont stockées dans un groupe de contenu de mise en cache intégré appelé « CalloutContentGroup ». Si aucune durée n’est configurée, les réponses de légende ne sont pas mises en cache à moins qu’une configuration normale de mise en cache soit utilisée pour les mettre en cache. Ce paramètre prévaut sur toute configuration normale de mise en cache qui s’appliquerait autrement à ces réponses.

Remarque : L’appliance ne vérifie pas la validité de la demande. Vous devez vous assurer que la demande est valide et qu’elle ne contient aucune information confidentielle. Une configuration de légende HTTP incorrecte ou incomplète entraîne une condition UNDEF d’exécution qui n’est pas associée à une action. La condition UNDEF met simplement à jour le compteur d’accès non définis, ce qui vous permet de dépanner une légende HTTP mal configurée. Toutefois, l’appliance analyse la demande de légende HTTP pour vous permettre de configurer certaines fonctionnalités de Citrix ADC pour la légende. Cela peut conduire à une légende HTTP qui s’appelle elle-même. Pour plus d’informations sur la récursion de légende et sur la façon de l’éviter, reportez-vous à la section Éviter la récursion des légendes HTTP.

Enfin, que vous utilisiez des attributs de requête HTTP ou une expression pour définir le format de la demande de légende HTTP, vous devez spécifier le format de la réponse à partir de l’agent de légende HTTP et la partie de la réponse que vous souhaitez évaluer. Le type de réponse peut être une valeur booléenne, un nombre ou un texte. En fonction de ce type de retour uniquement, vous pouvez utiliser les autres méthodes d’expression sur la réponse de légende. Si le type de retour est un nombre, vous pouvez utiliser l’expression basée sur le nombre sur la réponse de légende. La partie de la réponse que vous souhaitez évaluer est spécifiée par une expression. Par exemple, si vous spécifiez que la réponse contient du texte, vous pouvez utiliser HTTP.RES.BODY(<unit>) pour spécifier que l’appliance doit évaluer uniquement les premiers <unit>octets de la réponse de l’agent de légende.

Sur la ligne de commande, vous créez d’abord une légende HTTP à l’aide de la commande add. Lorsque vous ajoutez une légende, tous les paramètres sont définis sur la valeur par défaut NONE, à l’exception de la méthode HTTP, qui est définie sur la valeur par défaut GET. Vous configurez ensuite les paramètres de la légende à l’aide de la commande set. La commande set permet de configurer les deux types de légendes (basées sur l’attribut et sur l’expression). La différence réside dans les paramètres utilisés pour configurer les deux types de légendes. Ainsi, les instructions de ligne de commande suivantes incluent une commande set pour configurer une légende basée sur des attributs et une commande set pour configurer une légende basée sur une expression. Dans l’utilitaire de configuration, toutes ces tâches de configuration sont exécutées dans une seule boîte de dialogue.

Remarque : Avant de placer une légende HTTP dans une stratégie, vous pouvez modifier tous les paramètres configurés à l’exception du type de retour. Une fois qu’une légende HTTP est dans une stratégie, vous ne pouvez pas modifier complètement une expression configurée dans la légende. Par exemple, vous ne pouvez pas remplacer HTTP.REQ.HEADER (« myval ») par CLIENT.IP.SRC. Vous pouvez modifier les opérateurs et les arguments transmis à l’expression. Par exemple, vous pouvez changer HTTP.REQ.HEADER("myVal1") sur HTTP.REQ.HEADER("myVal2"), ou HTTP.REQ.HEADER("myVal") sur HTTP.REQ.HEADER("myVal").AFTER_STR(<string>). Si la commande set échoue, créez une légende HTTP.

La configuration des légendes HTTP implique la configuration des expressions de stratégie avancées. Pour plus d’informations sur la configuration des expressions de stratégie avancées, consultez Configuration des expressions de stratégie avancées : mise en route.

Pour configurer une légende HTTP à l’aide de l’interface de ligne de commande

À l’invite de commandes, procédez comme suit :

Créez une légende HTTP.

add policy httpCallout <name> [-IPAddress <ip_addr|ipv6_addr>] [-port<port>] [-vServer <string>] [-returnType <returnType>] [-httpMethod (GET | POST )] [-hostExpr <expression>]  [-urlStemExpr <expression>] [-headers <name(value)> ...] [-parameters <name(value)> ...] [-bodyExpr <expression>] [-fullReqExpr <expression>] [-scheme ( http | https )] [-resultExpr <expression>] [-cacheForSecs <secs>] [-comment <string>]

<!--NeedCopy-->

Exemple :


add 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"

<!--NeedCopy-->

Modifiez la configuration de la légende 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>]

<!--NeedCopy-->

Exemple :

> 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"
<!--NeedCopy-->

Configurez la légende HTTP à l’aide du paramètre FullReqExpr.

set policy httpCallout <name> [-vServer <string>] [-returnType <returnType>] [-fullReqExpr <string>] [-resultExpr <string>]
<!--NeedCopy-->

Exemple :


> 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-->

Vérifiez les configurations de la légende HTTP.


show policy httpCallout `<name>`

sh policy httpCallout mycallout1
> Name: mycallout1
>Vserver: lbv1 (UP)
Effective Vserver state: UP
Return type: TEXT
Scheme: HTTP
Full 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
>

<!--NeedCopy-->

Pour configurer une légende HTTP à l’aide de l’utilitaire de configuration

  1. Accédez à AppExpert > AppExpert > AppAllets HTTP.
  2. Dans le volet d’informations, cliquez sur Ajouter.
  3. Dans la boîte de dialogue Créer une légende HTTP, configurez les paramètres de la légende HTTP. Pour obtenir une description du paramètre, placez le curseur de la souris sur la case à cocher.
  4. Cliquez sur Create, puis cliquez sur Close. Configurer une légende HTTP
Configuration d’une légende HTTP