Les fonctionnalités basées sur des règles se distinguent par trois caractéristiques : la priorité des paramètres de règle par rapport aux paramètres globaux, la réentrance et la granularité des paramètres de règle. Cette rubrique détaille chaque caractéristique et précise celles qui s'appliquent à chaque fonctionnalité basée sur des règles.
Priorité des paramètres de règle et des paramètres globaux
Au sein d'une même fonctionnalité, la priorité des paramètres de règle que vous ajoutez correspond à l'ordre de correspondance des règles. Lorsqu'un paramètre de règle est ajouté, un numéro de séquence lui est attribué dans la liste des règles. Les paramètres de règle sont évalués selon l'ordre croissant de leur numéro de séquence.
-
Chaque fonctionnalité basée sur des règles comprend à la fois des paramètres de règle et des paramètres globaux. Tous les paramètres de règle ont une priorité supérieure à celle des paramètres globaux. Si une fonctionnalité dispose de paramètres de règle et de paramètres globaux, et qu'une requête utilisateur correspond à une condition de règle, les paramètres de règle sont exécutés en premier. Si aucune condition de règle n'est satisfaite, les paramètres globaux sont appliqués en dernier lieu. Si les paramètres globaux sont vides, les paramètres par défaut des nœuds ESA sont utilisés.
Le tableau suivant présente la liste des règles d'une fonctionnalité comportant trois paramètres de règle ainsi que des paramètres globaux. Les exemples de cette rubrique s'appuient sur cette liste de règles.
|
Numéro de séquence |
Paramètre de règle |
Condition de règle |
|
1 |
Paramètre de règle 1 |
Condition A (non satisfaite) |
|
2 |
Paramètre de règle 2 |
Condition B |
|
3 |
Paramètre de règle 3 |
Condition C |
|
Paramètres globaux |
Aucun |
|
|
Ordre d'exécution |
Les paramètres de règle sont exécutés selon l'ordre croissant de leur numéro de séquence (1, puis 2, puis 3), et les paramètres globaux sont exécutés en dernier. |
Réentrance des fonctionnalités basées sur des règles
La réentrance d'un module de fonctionnalité détermine si ce module peut être appelé plusieurs fois lors du traitement d'une seule requête. Les appels à un module de fonctionnalité réentrant n'interfèrent pas entre eux et le résultat de chaque appel est pris en compte.
Fonctionnalités réentrantes
Lors du traitement d'une requête, une fonctionnalité réentrante peut être appelée plusieurs fois. Ces appels n'interfèrent pas entre eux et le résultat de chaque appel est appliqué. Par exemple, la fonctionnalité Modifier les en-têtes de requête sortants est réentrante. Si une requête client correspond à plusieurs conditions de règle, le paramètre de règle associé à chaque condition satisfaite est exécuté.
Exemple 1 : Modifier les en-têtes de requête sortants
Si une requête utilisateur satisfait à la fois la Condition B et la Condition C, le Paramètre de règle 2 et le Paramètre de règle 3 sont tous deux exécutés. Les paramètres globaux sont également exécutés, mais ils n'ont aucun effet car aucune action n'y est configurée. Par conséquent, les deux en-têtes de requête suivants sont ajoutés à la requête utilisateur :
animal: catfruit: apple
|
Numéro de séquence |
Paramètre de règle |
Condition de règle |
Paramètre de fonctionnalité |
Exécuté |
|
1 |
Paramètre de règle 1 |
Condition A (non satisfaite) |
Ajouter un en-tête de requête dont le nom est |
Non |
|
2 |
Paramètre de règle 2 |
Condition B |
Ajouter un en-tête de requête dont le nom est animal et dont la valeur est cat. |
Oui |
|
3 |
Paramètre de règle 3 |
Condition C |
Ajouter un en-tête de requête dont le nom est fruit et dont la valeur est apple. |
Oui |
|
Paramètres globaux |
Aucun |
Aucun |
Oui |
Fonctionnalités non réentrantes
Lors du traitement d'une requête, une fonctionnalité non réentrante ne peut être appelée qu'une seule fois et le module de fonctionnalité correspondant est quitté une fois l'appel terminé. Si une requête client correspond à plusieurs conditions de règle, seul le premier paramètre de règle satisfaisant est exécuté.
Exemple 2 : Réécrire l'URL
Si une requête utilisateur satisfait à la fois la Condition B et la Condition C, seul le Paramètre de règle 2 est exécuté. Le Paramètre de règle 2 ayant un numéro de séquence plus faible, il correspond en premier à la Condition B. Par conséquent, le chemin de l'URL de la requête utilisateur est réécrit vers /animal :
Requête d'origine :
http://example.com/testRequête réécrite :
http://example.com/animal
|
Numéro de séquence |
Paramètre de règle |
Condition de règle |
Paramètre de fonctionnalité |
Exécuté |
|
1 |
Paramètre de règle 1 |
Condition A (non satisfaite) |
Réécrire le chemin de l'URL de la requête utilisateur vers |
Non |
|
2 |
Paramètre de règle 2 |
Condition B |
Réécrire le chemin de l'URL de la requête utilisateur vers /animal. |
Oui |
|
3 |
Paramètre de règle 3 |
Condition C |
Réécrire le chemin de l'URL de la requête utilisateur vers |
Non |
|
Paramètres globaux |
Aucun |
Aucun |
Non |
Granularité des paramètres de règle
La granularité des paramètres de règle inclut la dimension de la fonctionnalité et la dimension de la sous-fonctionnalité. Ces deux dimensions diffèrent par le comportement d'un module de sous-fonctionnalité lorsque ses paramètres sont laissés vides.
Dimension de la fonctionnalité
Au niveau de la dimension de la fonctionnalité, un paramètre de sous-fonctionnalité vide n'est résolu par aucune autre règle : lorsqu'une requête utilisateur correspond à une condition de règle, un module de sous-fonctionnalité dont les paramètres sont vides est exécuté comme si aucun paramètre n'avait été ajouté. La règle s'applique à l'ensemble du module de fonctionnalité et les paramètres prennent effet pour l'intégralité de ce module.
Exemple 3 : Règle SSL/TLS (une fonctionnalité non réentrante dont les paramètres de règle prennent effet au niveau de la dimension de la fonctionnalité)
Supposons qu'une requête utilisateur satisfasse à la fois la Condition B et la Condition C. Le Paramètre de règle 2 ayant un numéro de séquence plus faible, il correspond en premier à la Condition B et seul le Paramètre de règle 2 est exécuté. Les paramètres indiqués par - dans le Paramètre de règle 2, tels que la suite de chiffrement TLS, prennent effet selon les paramètres par défaut.
|
Numéro de séquence |
Paramètre de règle |
Condition de règle |
Chiffrement SSL/TLS |
Paramètres de la suite de chiffrement TLS et de la version du protocole |
OCSP Stapling |
HTTP/2 |
HTTP/3 (QUIC) |
Exécuté |
|
1 |
Paramètre de règle 1 |
Condition A (non satisfaite) |
Activé |
- |
Désactivé |
Désactivé |
Désactivé |
Non |
|
2 |
Paramètre de règle 2 |
Condition B |
Activé |
- |
Désactivé |
Désactivé |
Désactivé |
Oui |
|
3 |
Paramètre de règle 3 |
Condition C |
Activé |
- |
Activé |
Activé |
Activé |
Non |
|
Paramètres globaux |
Aucun |
Désactivé |
- |
Désactivé |
Activé |
Activé |
Non |
Dimension de la sous-fonctionnalité
Au niveau de la dimension de la sous-fonctionnalité, un paramètre de sous-fonctionnalité vide est résolu par les règles suivantes : lorsqu'une requête utilisateur correspond à une condition de règle, un module de sous-fonctionnalité dont les paramètres sont vides continue d'évaluer les conditions de règle suivantes jusqu'à ce qu'il corresponde à une condition dont les paramètres de sous-fonctionnalité ne sont pas vides. La règle s'applique à un module de sous-fonctionnalité et les paramètres prennent effet pour ce module spécifique.
Exemple 4 : Règle de mise en cache (une fonctionnalité non réentrante dont les paramètres de règle prennent effet au niveau de la dimension de la sous-fonctionnalité)
L'exemple suivant présente les paramètres de règle de mise en cache et étend la liste des règles à cinq paramètres, avec les Conditions A à E. Supposons qu'une requête utilisateur satisfasse aux Conditions B, C et D. Les conditions de règle sont évaluées selon l'ordre croissant de leur numéro de séquence et les éléments de configuration non définis sont exécutés selon les paramètres globaux par défaut. Chaque sous-fonctionnalité occupe une colonne distincte dans le tableau suivant et prend sa valeur indépendamment, comme indiqué dans la ligne Paramètres effectifs finaux.
|
Numéro de séquence |
Paramètre de règle |
Condition de règle |
Éligibilité au cache |
Durée de vie (TTL) du cache du navigateur |
Durée de vie (TTL) du cache Edge |
CacheKey personnalisé |
Mise en cache du port |
Mettre en cache les réponses expirées |
Cache Reserve |
|
1 |
Paramètre de règle 1 |
Condition A (non satisfaite) |
Éligible au cache |
- |
Respecter la politique de cache du serveur d'origine (le cas échéant). Sinon, ne pas mettre en cache. |
- |
- |
Désactivé |
- |
|
2 |
Paramètre de règle 2 |
Condition B |
Éligible au cache |
- |
Respecter la politique de cache du serveur d'origine (le cas échéant). Sinon, ne pas mettre en cache. |
- |
- |
Désactivé |
- |
|
3 |
Paramètre de règle 3 |
Condition C |
Ignorer le cache |
Ne pas mettre en cache |
- |
- |
- |
- |
- |
|
4 |
Paramètre de règle 4 |
Condition D |
Éligible au cache |
- |
Ignorer la politique de cache du serveur d'origine et utiliser une durée de vie (TTL) de cache personnalisée de 1 heure. |
Ignorer les chaînes de requête |
- |
Désactivé |
- |
|
5 |
Paramètre de règle 5 |
Condition E |
Éligible au cache |
- |
- |
- |
- |
Désactivé |
- |
|
Paramètres globaux |
Aucun |
- |
- |
- |
- |
Désactivé par défaut |
- |
Désactivé par défaut |
|
|
Paramètres effectifs finaux |
Éligible au cache |
Ne pas mettre en cache |
Respecter la politique de cache du serveur d'origine (le cas échéant). Sinon, ne pas mettre en cache. |
Ignorer les chaînes de requête |
Désactivé |
Désactivé |
Désactivé |
Caractéristiques des différentes fonctionnalités
Le tableau suivant répertorie la réentrance, la granularité et la priorité des paramètres de règle pour chaque fonctionnalité basée sur des règles, regroupées par catégorie de fonctionnalité.
|
Catégorie de fonctionnalité |
Fonctionnalité basée sur des règles |
Réentrance |
Granularité des paramètres de règle |
Priorité des paramètres de règle |
|
SSL/TLS |
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Non réentrant |
Sous-fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Règles de transformation |
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Réentrant |
Sous-fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Réentrant |
Sous-fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Redirection |
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Caching |
Non réentrant |
Sous-fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Optimisation du contenu |
Non réentrant |
Sous-fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Non réentrant |
Sous-fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Non réentrant |
Sous-fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Optimisation réseau |
Non réentrant |
Sous-fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Retour à l'origine |
Non réentrant |
Sous-fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Gestion de la configuration |
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Trafic |
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. Le résultat dépend également de la configuration de l'action End : si l'action End est définie, la correspondance s'arrête après l'exécution de la première règle satisfaite et aucune autre correspondance n'est effectuée ; si l'action End n'est pas définie et que plusieurs conditions de règle sont satisfaites, le paramètre de fonctionnalité de la dernière règle satisfaite prend effet. |
||
|
Protection de sécurité |
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
|
|
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |
||
|
Non réentrant |
Fonctionnalité |
Basée sur les numéros de séquence dans la liste des règles. Un numéro de séquence plus faible indique une priorité plus élevée. |