Développer une politique Access Gateway avancée

Une strtégie avancée comporte une ou plusieurs instructions. Instructions de politique :

  • Exécutez dans l'ordre spécifié.
  • se terminent par un point-virgule ;
  • peuvent définir des variables ;
  • peuvent lire (lecture seule) et écrire les Access Gateway et HTTP.
  • prennent en charge les constructions conditionnelles de type si/alors ;
  • prennent en charge le regroupement des instructions en blocs ;
  • prennent en charge les courts-circuits, ce qui entraîne l'arrêt de l'exécution à ce moment-là ;
  • prennent en charge la modification et le renvoi des codes d'état HTTP ;
  • Prennent en charge de la réécriture d'URL.

Créer une politique avancée

  1. Connectez-vous à Console Access Gateway Admin UI.
  2. Cliquez sur l'onglet Applications.
  3. Cliquez sur Modifier.
  4. Cliquez sur Politiques.
  5. Cliquez sur Modifier.
  6. Développez l'option Avancé.
  7. Dans la case Configuration personnalisée, saisissez la politique avancée, comme dans cet exemple :
    set $TEST "some value";
    proxy_set_header header_test $TEST;
  8. Cliquez sur Non validé pour valider la syntaxe de la configuration personnalisée. Si la validation a réussi, le bouton devient Validé. Dans le cas contraire, corrigez les erreurs de syntaxe et validez à nouveau.
  9. Cliquez sur OK pour enregistrer la configuration.
  10. Cliquez sur Terminé pour terminer la session de modification de l'application.

Configuration personnalisée

Une configuration personnalisée comporte des commentaires, des instructions, des données de session, des tests et des actions de suivi pour ces tests. Les configurations personnalisées prennent en charge les constructions suivantes :

Commentaires

Pour créer un commentaire, saisissez un signe numérique (#) au début d'une instruction :

#This is a comment.
 #This comment, preceded by a space.
set $TEST "some value"; #this is also a valid comment.

Variables intégrées ou prédéfinies

Les variables intégrées comprennent tous les champs d'en-tête de session HTTP, de cookie, de requête et de demande, ainsi que plus de 50 types de variables nommées. Il est d'usage d'utiliser un préfixe pour nommer et accéder à ces variables. Consultez la section Variables intégrées pour obtenir la liste complète des variables intégrées de NGINX. Les préfixes courants incluent les suivants :

Préfixe

Utilisez

Exemple
arg_

Arguments de la requête d'accès

arg_name, où le nom représente une variable de requête.
cookie_ Champs des cookies d'accès cookie_name, où le nom représente un champ de cookie.
http_ Accéder au champ d'en-tête arbitraire http_email, où l'e-mail représente un champ dans l'en-tête.
sent_http_ Champ d'en-tête de réponse sent_http_email, où l'e-mail représente un champ dans l'en-tête de la réponse.

Variables utilisateur

Vous pouvez définir des variables dans une configuration personnalisée et les utiliser dans des affectations et des instructions conditionnelles.

Format :

set $variablename value;

Exemple :

#create a variable TEST, containing the value "test value"
set $TEST "test value";

Conditionnelles

Les instructions conditionnelles vous permettent de choisir si vous souhaitez exécuter un code en fonction des états des variables. Consultez Instruction Si pour en savoir plus sur les instructions Si.

Format :

if (condition) { statement1; statement2; . . . statementn; }

Les exemples de conditions qui comprennent les éléments suivants :

  • Nom de variable Elle est fausse si elle est vide ou égale à 0, sinon elle est considérée comme vraie.
  • Une comparaison entre deux variables utilisant des opérateurs d'égalité (=) et d'inégalité (!=).
  • Une correspondance entre une variable et une expression régulière.

Exemple :

# If the query parameter 'test' contains the value 'demo'
# then no authorization required.
if ($arg_test = "demo") {
    set $policy_type "NO_AUTH";}

En outre, l'instruction break interrompt l'exécution de l'instruction supplémentaire. Cet exemple montre comment utiliser l'instruction de pause :

if ($arg_test = "demo") {
    set $policy_type "NO_AUTH";
    break;
}
#Statements after break aren't executed if the condition is true

Codes de retour

Cette commande interrompt le traitement et renvoie le code spécifié à un client.

Format :

return numericReturnCode [optional url];

Exemple :

#Stop executing and return a 404
return 404;

Instructions

Cette commande vous permet d'appeler des instructions depuis la configuration personnalisée, similaires aux appels de fonctions dans les langages de programmation. Les instructions peuvent recevoir des paramètres. Consultez la Liste alphabétique de toutes les instructions NPNIX.

Format :

directive_name [parameter1 [parameter2 [parametern]]];

Exemples :

Instruction

Description

Formater

Exemple

Proxy masquer l'en-tête Par défaut, certains champs d'en-tête sont masqués. L'instruction de champ proxy_hide_header peut être utilisée pour masquer d'autres en-têtes. La valeur peut contenir du texte, des variables et leurs combinaisons.
proxy_hide_header field;
proxy_hide_header secondaryEmailAddress;
En-tête de l'ensemble des proxys Cette instruction permet de redéfinir ou d'ajouter des champs à l'en-tête de requête.
proxy_set_header field value;
proxy_set_header Host $proxy_host;
Redirection de proxy Spécifiez les valeurs à modifier dans les champs d'en-tête Emplacement et Actualiser d'une réponse de serveur proxy.
proxy_redirect redirect replacement;
proxy_redirect http://general.domain.tbd/abc http://abc.domain.tld;

Étapes suivantes