Le moteur de règles offre une interface graphique simplifiant la configuration des règles. Configurez des règles pour identifier les requêtes utilisateur selon leurs paramètres et déterminer si une configuration s'applique. Cette approche assure une gestion plus flexible et précise des configurations et politiques définies dans Dynamic Content Delivery Network (DCDN).
Informations générales
La console CDNDCDN propose de nombreuses fonctionnalités de base, telles que la configuration du délai d'expiration (TTL) et la réécriture des paramètres de retour à l'origine.
Certaines exigences nécessitent toutefois des paramètres avancés. Vous souhaitez par exemple router les requêtes contenant le chemin /example vers un serveur d'origine spécifique. Dans ce cas, combinez les fonctionnalités de base avec le moteur de règles pour personnaliser vos configurations. De plus, CDNDCDN fournit EdgeRoutine, qui offre une grande flexibilité.
|
Capacité de configuration |
Fonctionnalités de base |
Fonctionnalités de base + moteur de règles |
Fonctions Edge |
|
Mise en œuvre |
Configurations générales |
Configurations flexibles |
Configurations hautement flexibles |
|
Scénarios |
Besoins courants |
Besoins personnalisés avancés |
Besoins entièrement personnalisés |
|
Niveau de difficulté (Compétence technique de l'utilisateur) |
Faible |
Moyen |
Élevé |
|
Flexibilité de configuration |
Faible |
Moyenne |
Élevée |
Limites
Vous pouvez créer jusqu'à 50 conditions de règle par nom de domaine.
Chaque condition de règle peut contenir jusqu'à 20 sous-règles.
Les opérateurs de correspondance ou de non-correspondance d'expression régulière ne sont pas disponibles lors de la configuration des conditions de règle via la console ou OpenAPI. Vous pouvez toutefois consulter les configurations existantes utilisant ces opérateurs. Pour les utiliser, recourez à ESA.
Une condition de règle peut être référencée cinq fois au maximum parmi toutes les fonctionnalités d'un même nom de domaine.
L'imbrication des conditions de règle est possible sur trois niveaux de profondeur, chaque niveau pouvant avoir ses propres relations logiques indépendantes.
Si une fonctionnalité, telle que la définition du délai d'expiration du cache ou la modification des en-têtes de requête sortante, référence une condition de règle, la priorité de cette condition détermine l'ordre d'exécution, et non l'ordre de configuration de la fonctionnalité.
Les limites mentionnées ci-dessus (50 conditions de règle, 20 sous-règles, 3 niveaux d'imbrication et 5 références) sont strictes et ne peuvent pas être augmentées sur demande.
Chaque condition accepte un maximum de 32 valeurs de correspondance pour les types tels que l'IP client, l'URI, l'extension de fichier, le nom de fichier et le User-Agent. Si vous disposez d'une liste d'autorisation d'adresses IP clientes volumineuse, regroupez plusieurs adresses IP en blocs CIDR (par exemple,
120.209.XXX.X/24) afin d'économiser votre quota de valeurs de correspondance.Vous pouvez configurer jusqu'à 32 valeurs de correspondance User-Agent. Les valeurs dépassant cette limite sont ignorées. Pour faire correspondre un grand nombre de User-Agents, utilisez un caractère générique (
*) pour regrouper des valeurs similaires (par exemple,*Chrome*correspond à toutes les versions du navigateur Chrome) ou utilisez EdgeScript pour une logique de correspondance plus flexible.
Syntaxe des conditions de règle
Une condition de règle combine une ou plusieurs expressions conditionnelles à l'aide d'opérateurs logiques. Les sections suivantes décrivent la syntaxe applicable.
Opérateurs logiques
Les opérateurs logiques évaluent les conditions situées au même niveau, y compris les ensembles de conditions imbriquées. Les opérateurs pris en charge sont and et or.
and: opérateur ET logique. La correspondance réussit uniquement si toutes les conditions sont vraies.or: opérateur OU logique. La correspondance réussit si au moins une condition est vraie. Configurez par exemple plusieurs conditions de règle pour un même en-tête de réponse afin d'ajouter cet en-tête dans différentes circonstances. Exemple : si l'URI contient/path-aor si l'URI contient/path-b, le système ajoute l'en-tête de réponse.
Paramètres d'une expression conditionnelle
Une expression conditionnelle, unité la plus granulaire d'une règle, comprend les paramètres suivants :
|
Paramètre |
Fonctions pour la configuration des noms de domaine paramètre de fonction |
Description |
Obligatoire |
|
Correspondance conditionnelle |
match |
Définit l'expression de correspondance conditionnelle. |
Oui |
|
Opérateur logique |
logic |
Spécifie l'opérateur logique pour l'expression de correspondance conditionnelle. Les valeurs valides sont |
Oui |
|
Critères |
criteria |
Désigne le tableau d'expressions conditionnelles à évaluer. |
Oui |
|
Type de correspondance |
MatchType |
Indique le type d'information à faire correspondre dans une requête client. |
Oui |
|
Objet de correspondance |
MatchObject |
Affine le type de correspondance. Par exemple, une adresse IP cliente peut être spécifiée comme IP de connexion POP ou IP XFF. |
Non |
|
Opérateur de correspondance |
MatchOperator |
Détermine la comparaison à effectuer. |
Oui |
|
Valeur de correspondance |
MatchValue |
La valeur à comparer aux données issues de la requête client. |
Oui |
|
Négation de condition |
negate |
Indique s'il faut inverser le résultat de l'expression conditionnelle. Les valeurs valides sont true et false. |
Oui |
|
Sensibilité à la casse |
caseSensitive |
Précise si la valeur de correspondance respecte la casse. |
Non |
|
Nom de la condition de règle |
name |
Définit le nom de la condition de règle. |
Oui |
|
Statut |
status |
Détermine le statut de la condition de règle. |
Oui |
Configuration des expressions conditionnelles
Type de correspondance | Fonctions pour la configuration des noms de domaine paramètre de fonction | Description | Objet de correspondance | Opérateur de correspondance | Valeur de correspondance | Sensibilité à la casse | Variable Nginx |
Protocole | scheme | Protocole utilisé par la requête client, tel que HTTP ou HTTPS. | Non applicable |
|
| Non applicable | $scheme |
Méthode de requête | method | Méthode utilisée par la requête client, telle que GET ou PUT. | Non applicable |
|
| Non applicable | $request_method |
URI (chemin) | uri | Chemin présent dans l'URL de la requête client, hors paramètres de requête. Exemple : | Non applicable |
| Les caractères génériques |
| $raw_uri ou $uri |
Nom de fichier | basename | Nom du fichier demandé par le client. Exemple : name1. | Non applicable |
| Les caractères génériques |
| - |
Extension de fichier | extension | Extension du fichier demandé par le client. Le système identifie l'extension comme la sous-chaîne allant du dernier point (.) à la fin du nom de fichier. Exemple : | Non applicable |
| Les caractères génériques |
| - |
Nom d'hôte | hostname | Nom d'hôte issu de la requête client. Ordre de correspondance : hôte dans l'URL de la requête > hôte dans l'en-tête de requête | Non applicable |
| Hôte provenant de la requête client. Vous pouvez saisir plusieurs valeurs. |
| $host ou $http_host |
Adresse IP cliente | clientip | Adresse IP du client. IPv4 (par exemple, |
Remarque Pour plus d'informations sur l'IP de connexion POP et l'IP XFF, consultez Mode de vérification de l'adresse IP. |
| Les adresses IPv6, telles que 240e:XXX:3004:2:3:0:0:3f7, et les blocs CIDR, tels que 120 209.XXX.XXX/31, sont pris en charge. Vous pouvez saisir plusieurs valeurs. | Non applicable | $remote_addr |
Version IP cliente | clientipVer | Version IP de l'adresse cliente : IPv4 ou IPv6. |
Remarque Pour plus d'informations sur l'IP de connexion POP et l'IP XFF, consultez Mode de vérification de l'adresse IP. |
|
| Non applicable | - |
Fournisseur d'accès Internet (FAI) | geolocation | FAI auquel appartient l'adresse IP cliente. |
Remarque Pour plus d'informations sur l'IP de connexion POP et l'IP XFF, consultez Mode de vérification de l'adresse IP. |
| Sélectionnez un FAI dans la liste déroulante ou saisissez des caractères pour filtrer les options. La recherche floue par ID ou par nom est prise en charge. Vous pouvez saisir plusieurs valeurs. | Non applicable | $ip_isp_id |
Géolocalisation IP | geolocation | Emplacement géographique de l'adresse IP cliente. |
Remarque Pour plus d'informations sur l'IP de connexion POP et l'IP XFF, consultez Mode de vérification de l'adresse IP. |
| Sélectionnez un emplacement dans la liste déroulante ou saisissez des caractères pour filtrer les options. La recherche floue par ID ou par nom est prise en charge. Vous pouvez saisir plusieurs valeurs. | Non applicable | $ip_country_id |
Paramètre de requête | querystring | Paramètre présent dans l'URL de la requête. | Saisissez le nom du paramètre. |
| Les caractères génériques |
| $arg_{name} |
En-tête de requête | header | En-tête présent dans la requête client. | Saisissez un nom de paramètre ou sélectionnez-en un dans la liste déroulante. |
| Vous pouvez saisir plusieurs valeurs. |
| $http_{name} |
Cookie | cookie | Cookie présent dans la requête client. | Saisissez le nom du cookie. |
| Les caractères génériques |
| $cookie_{name} |
User-Agent | useragent | En-tête | Non applicable |
| Sélectionnez une valeur dans la liste déroulante ou saisissez une valeur User-Agent, telle que |
| $http_user_agent |
Plage Range | range | Correspond à un pourcentage spécifié de requêtes clientes. | Non applicable |
| Saisissez une valeur en pourcentage. | Non applicable | - |
Heure | time | Moment où la requête client se produit. L'heure est exprimée en UTC+8. Exemple : 09:10~14:22. | Non applicable |
| Saisissez une plage horaire, telle que 09:10~14:22, représentant la période de 09:10 à 14:22. | Non applicable | - |
Variable Nginx | ngxvar | Utilisez des variables Nginx si les variables précédentes ne répondent pas à vos besoins. Pour obtenir la liste des variables prises en charge, consultez la documentation officielle Nginx. | Sélectionnez une variable dans la liste déroulante ou saisissez un nom de variable. La concaténation est prise en charge, par exemple |
| Vous pouvez saisir plusieurs valeurs. | Non applicable | ${name} |
Notes de configuration courantes pour les expressions conditionnelles
Point de départ de la correspondance URI (chemin) : Pour la correspondance d'URI, la valeur correspond à la partie du chemin commençant par le premier
/après le nom de domaine. Cette valeur n'inclut ni le nom de domaine ni les paramètres de requête. Pour la requêtehttps://example.com/path/file.html?key=value, la valeur à faire correspondre est/path/file.html. La valeur de correspondance doit commencer par/.Format de correspondance des extensions de fichier : Lors de la configuration d'une correspondance d'extension de fichier, la valeur doit inclure un point (
.). Par exemple, pour cibler les fichiers.txt, saisissez.txt, et nontxt. Sinon, la correspondance risque d'échouer.-
Exemples d'utilisation des caractères génériques : Les correspondances d'URI et d'extension de fichier prennent en charge les caractères génériques
?(correspond à un seul caractère) et*(correspond à zéro ou plusieurs caractères). Exemples courants :/*.pdf: Correspond à tous les fichiers PDF situés dans le répertoire racine./api/*/data: Correspond au chemindatadans n'importe quel sous-répertoire sous/api/..??: Correspond à toutes les extensions de fichier composées de deux caractères, telles que.jset.ts.
Mode de vérification de l'adresse IP
Le moteur de règles propose deux modes de vérification de l'adresse IP. Le mode sélectionné influence la manière dont les nœuds CDNDCDN identifient l'adresse IP du client :
IP de connexion POP : Ce mode fait correspondre l'adresse IP utilisée par un client pour se connecter à un nœud CDNDCDN. Si un serveur proxy est interposé entre le client et le nœud CDNDCDN, l'IP de connexion POP correspond à l'adresse IP du serveur proxy.
IP XFF : Ce mode fait correspondre l'adresse IP la plus à gauche dans l'en-tête de requête
x-forwarded-for. L'IP XFF représente toujours l'adresse IP réelle du client, qu'un serveur proxy soit utilisé ou non entre le client et le nœud CDNDCDN.
Le choix du mode de vérification dépend du passage ou non de la requête client par un serveur proxy avant d'atteindre un nœud CDNDCDN.
Notez que l'emplacement où une fonctionnalité prend effet sur un nœud CDNDCDN affecte également le mode de vérification de l'adresse IP. Pour les fonctionnalités liées aux paramètres d'origine qui s'appliquent sur les nœuds L2, les nœuds L1 traversés par une requête sont considérés comme des serveurs proxy intermédiaires.
Exemple : Supposons que l'adresse IP réelle du client soit 10.10.10.10 et que l'adresse IP du serveur proxy soit 192.168.0.1.
-
Sans serveur proxy :
La valeur de l'en-tête de requête
x-forwarded-forest10.10.10.10.L'adresse IP réelle du client (l'IP la plus à gauche dans l'en-tête x-forwarded-for) = L'adresse IP utilisée pour établir la connexion entre le client et le nœud CDNDCDN =
10.10.10.10.
-
Avec serveur proxy :
La valeur de l'en-tête de requête
x-forwarded-forest10.10.10.10,192.168.0.1.L'adresse IP réelle du client (l'adresse IP la plus à gauche dans l'en-tête
x-forwarded-for) est10.10.10.10.IP de connexion du client au nœud CDNDCDN = IP du serveur proxy =
192.168.0.1.L'adresse IP réelle du client (la première adresse IP en partant de la gauche dans l'en-tête x-forwarded-for) ≠ l'adresse IP de connexion du client au nœud CDNDCDN.
Certains fournisseurs d'accès Internet (FAI) dans des régions spécifiques peuvent attribuer des adresses IP privées aux utilisateurs finaux. Par conséquent, les nœuds peuvent recevoir l'adresse IP privée d'un utilisateur.
Les adresses IP privées se répartissent en trois plages :
Adresse IP privée de classe A : 10.0.0.0 à 10.255.255.255, masque de sous-réseau : 10.0.0.0/8
Adresse IP privée de classe B : 172.16.0.0 à 172.31.255.255, masque de sous-réseau : 172.16.0.0/12
Adresse IP privée de classe C : 192.168.0.0 à 192.168.255.255, masque de sous-réseau : 192.168.0.0/16
Opérateurs de correspondance (matchOperator)
Opérateur | condition paramètre de fonction | Description |
égal à |
| La condition est remplie uniquement lorsque la variable est exactement égale ou différente de la valeur de correspondance spécifiée. |
différent de |
| |
existe |
| La condition est remplie selon que la variable spécifiée existe ou non dans la requête. |
n'existe pas |
| |
contient l'un des éléments |
| La condition est remplie si la variable contient (ou ne contient pas) l'une des valeurs de correspondance spécifiées. Un maximum de 32 valeurs de correspondance est pris en charge. Deux types de correspondance de contenu sont pris en charge :
|
ne contient aucun des éléments |
| |
supérieur à |
| C'est-à-dire |
inférieur à |
| C'est-à-dire |
supérieur ou égal à |
| C'est-à-dire |
inférieur ou égal à |
| C'est-à-dire |
correspondance d'expression régulière |
| Compare la variable à une expression régulière. Remarque Si vous configurez des règles dans la console ou via OpenAPI, vous ne pouvez pas utiliser ces opérateurs d'expression régulière. Cependant, vous pouvez consulter les configurations existantes. Pour utiliser des opérateurs de correspondance liés aux expressions régulières, ouvrez un ticket ou utilisez Edge Security Acceleration (ESA). |
non-correspondance d'expression régulière |
|
Caractères génériques
|
Caractère générique |
Description |
Exemple de correspondance de chemin |
|
|
Correspond à n'importe quel caractère unique. |
|
|
|
Correspond à zéro ou plusieurs caractères. |
|
Fonctionnalités pouvant référencer des règles
|
Catégorie de fonctionnalité |
Nom de la fonctionnalité |
|
Configuration de récupération d'origine |
|
|
En-têtes de requête HTTP d'origine |
|
|
En-têtes de réponse HTTP d'origine |
|
|
Configuration du cache |
|
Procédure
Connectez-vous à la console DCDN.
Dans le volet de navigation de gauche, cliquez sur Domain Names.
Sur la page Domain Names, localisez le nom de domaine à gérer et cliquez sur Configure dans la colonne Actions.
Dans le volet de navigation de gauche du nom de domaine cible, cliquez sur Rules Engine.
Cliquez sur Create Rule.
Sur la page Create Rule, définissez le Rule Name et le Rule Content.
Cliquez sur Submit pour finaliser la configuration.