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
- Connectez-vous à Console Access Gateway Admin UI.
- Cliquez sur l'onglet Applications.
- Cliquez sur Modifier.
- Cliquez sur Politiques.
- Cliquez sur Modifier.
- Développez l'option Avancé.
- 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; - 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. Remarque :
Les erreurs de syntaxe dans une configuration de politique personnalisée précédemment valide peuvent ne pas être détectées. Validez toutes les instructions de configuration mises à jour avec une nouvelle politique qui est utilisée uniquement pour valider le code de la politique. Supprimez-les immédiatement après la validation.
- Cliquez sur OK pour enregistrer la configuration.
- 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
- Variables intégrées ou prédéfinies
- Variables utilisateur
- Conditionnelles
- Codes de retour
- Instructions
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]]];
Les configurations personnalisées prennent uniquement en charge les instructions qui précisent le contexte de l'emplacement.
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. |
|
|
| 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. |
|
|
| 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. |
|
|
Étapes suivantes
Éléments principaux de l'application
Applications prises en charge par Access Gateway
Ajouter une application d'en-tête générique
Ajouter un exemple d'application de politique
Politique Access Gateway avancée
Comportements de l'application
Gérer les éléments essentiels de l'application