La fonctionnalité d'origine conditionnelle s'appuie sur le rules engine pour filtrer les requêtes des utilisateurs selon des critères définis, tels que les en-têtes de requête, les paramètres de chaîne de requête, les chemins ou les adresses IP clientes. CDN achemine ensuite les requêtes correspondant à ces critères vers une adresse d'origine spécifique. Ajoutez plusieurs configurations afin de diriger les requêtes vers différentes origines en fonction de conditions distinctes.
Prérequis
Avant de configurer une origine conditionnelle, créez une Rule Condition dans le rules engine.
Remarques d'utilisation
Conflit de fonctionnalités : l'origine conditionnelle et l'origine avancée sont mutuellement exclusives. Une seule de ces deux options peut être activée.
Prise en charge des caractères génériques : dans le rules engine, la valeur de correspondance de l'URI accepte le caractère générique
*(correspond à un nombre quelconque de caractères) ainsi que?(correspond à un seul caractère). La correspondance de chemin de la fonctionnalité d'origine avancée n'accepte en revanche que des valeurs exactes, sans caractères génériques.Priorité des règles et ordre de correspondance : l'évaluation des origines conditionnelles repose sur la priorité de la Rule Condition associée dans le rules engine, et non sur l'ordre des configurations d'origine conditionnelle. Dès qu'une requête correspond à une règle, l'évaluation s'arrête. Cette priorité dépend de l'ordre de création : les règles créées en premier disposent d'une priorité supérieure. Pour modifier cet ordre, supprimez puis recréez les règles dans l'ordre souhaité.
Astuce pour les configurations multi-chemins : lors de la création de règles visant à « inclure » ou « exclure » un chemin, saisissez plusieurs chemins (sur plusieurs lignes ou sous forme de valeurs multiples) dans le champ de valeur de correspondance d'une même règle afin de simplifier votre configuration.
Limite de règles : le nombre de Rule Conditions qu'une origine conditionnelle peut référencer est soumis à une limite globale au sein du rules engine. Pour un domaine donné, le total des références aux Rule Conditions, toutes fonctionnalités confondues (origine conditionnelle, origine avancée, protection contre le hotlinking basée sur le Referer), ne peut pas dépasser cinq. Dans les scénarios complexes impliquant plusieurs origines, le dépassement de ce seuil entraîne l'échec de la configuration. Planifiez soigneusement l'utilisation de vos règles ou utilisez des domaines distincts pour l'accélération si vous gérez de nombreuses origines.
Points d'attention pour les origines OSS
Si une origine correspond à un bucket OSS, ajoutez son adresse sous Domain Names > Basics > Origin Information, puis définissez le type d'origine sur OSS Domain. CDN peut ainsi s'authentifier correctement auprès d'OSS.
-
Scénarios à plusieurs origines OSS : lorsque vous configurez plusieurs origines OSS, définissez un Host d'origine spécifique pour chacune d'elles. La valeur Host doit correspondre exactement au domaine du bucket OSS concerné, par exemple
dev-3mir.oss-cn-guangzhou.aliyuncs.com.Un Host d'origine mal configuré ou l'utilisation du Host d'origine par défaut risque d'acheminer les requêtes vers le mauvais bucket, provoquant des erreurs 403 SignatureDoesNotMatch ou 404 Not Found. Liez explicitement chaque règle d'origine conditionnelle (règles de correspondance comme règles de secours) à son origine et à son Host d'origine correspondants. En présence de plusieurs origines, attribuez des poids identiques aux origines de base et créez des Rule Conditions distinctes pour chaque origine conditionnelle afin de garantir un routage prévisible.
Comparaison des types d'origine
Les origines conditionnelles et avancées peuvent toutes deux référencer des Rule Conditions du rules engine pour élaborer des politiques de routage d'origine flexibles. Lorsqu'une requête correspond à une Rule Condition, CDN sélectionne automatiquement une origine :
|
Type d'origine |
Condition de déclenchement |
|
Origine conditionnelle |
La requête correspond à la Rule Condition référencée par l'origine conditionnelle. |
|
Origine avancée |
La requête correspond à la Rule Condition référencée par l'origine avancée. |
|
Origine de base |
La requête ne correspond à aucune règle d'origine conditionnelle ou avancée (solution de repli par défaut). |
Basculement entre origine principale et secondaire : dès qu'une requête correspond à une règle d'origine avancée ou conditionnelle, CDN récupère le contenu directement auprès de l'origine désignée par cette règle. Les paramètres de priorité et de poids des origines de base ne s'appliquent alors plus. Pour mettre en place un basculement entre une origine principale et une origine secondaire, configurez la priorité et le poids des origines de base plutôt qu'une règle d'origine conditionnelle ciblant une seule origine.
Procédure
Connectez-vous à la console CDN.
Dans le volet de navigation de gauche, cliquez sur Domain Names.
Sur la page Domain Names, recherchez le nom de domaine cible, puis cliquez sur Manage dans la colonne Actions.
Dans la section Origin Information, cliquez sur Expand en regard de Conditional Origin.
Cliquez sur Add Conditional Origin.
-
Définissez la Rule Condition.
S'il s'agit de votre première configuration ou si vous devez modifier une Rule Condition existante, cliquez sur Conditional Origin dans la boîte de dialogue Rules Engine. Le rules engine s'ouvre alors pour vous permettre d'ajouter ou de modifier des configurations. Pour plus d'informations, consultez la rubrique relative au rules engine.
Si une Rule Condition existe déjà, sélectionnez-la dans la liste déroulante Rule Condition.
Dans le champ Origin Address, saisissez l'adresse d'origine. Celle-ci peut correspondre à une adresse IP, un nom de domaine, un bucket OSS ou un endpoint Function Compute (FC).
Cliquez sur OK pour finaliser la configuration.
Exemple : routage des requêtes /api/* vers FC
La fonctionnalité d'origine avancée n'accepte que les correspondances de valeurs exactes, sans prise en charge des caractères génériques ni des expressions régulières. Pour mettre en œuvre un routage d'origine basé sur le chemin, utilisez les origines conditionnelles avec le rules engine. En combinant l'origine conditionnelle, le rules engine et la réécriture d'URL, vous pouvez acheminer les requêtes ciblant le chemin /api/* vers une origine Function Compute (FC), tandis que toutes les autres requêtes sont dirigées par défaut vers une origine OSS.
Créer une règle dans le rules engine
Accédez à Domain Names, recherchez le domaine cible, puis ouvrez la page Rules Engine.
-
Cliquez sur Add Rule et configurez la condition de règle conformément au tableau suivant :
Paramètre
Valeur
Rule Name
Saisissez un nom personnalisé pour faciliter l'identification, par exemple
api-to-fc.Type de correspondance
URI
Opérateur de correspondance
Include Any
Valeur de correspondance
Cliquez sur Edit, saisissez
*/api/*, puis appuyez sur Entrée pour l'ajouter. Les caractères génériques*et?sont pris en charge. Une règle unique accepte jusqu'à 32 valeurs de correspondance.Sensible à la casse
Case-insensitive (par défaut)
ImportantN'ajoutez pas de condition de nom d'hôte. Celle-ci correspond au domaine de la requête et non à l'origine. Son ajout risquerait d'empêcher la règle de correspondre au chemin après une réécriture d'URL.
Cliquez sur Submit pour enregistrer la règle.
Configurer l'origine conditionnelle
Dans le volet de navigation de gauche, accédez à Domain Names > Basics. Dans la section Origin Information, cliquez sur l'icône de développement en regard de Conditional Origin.
-
Cliquez sur Add Conditional Origin et configurez les paramètres de la boîte de dialogue selon le tableau suivant :
Paramètre
Valeur
Rule Condition
Dans la liste déroulante, sélectionnez la règle créée à l'étape 1, par exemple
api-to-fc.Origin Address
Saisissez l'adresse de votre origine Function Compute (FC).
Cliquez sur OK pour enregistrer la configuration.
Configurer le Host d'origine
Définissez un Host d'origine spécifique pour l'origine FC afin de garantir que CDN transmette les requêtes de récupération d'origine avec l'en-tête Host approprié.
Dans le volet de navigation de gauche de la page Domain Names, accédez à l'onglet Origin Fetch > Configurations.
Dans la section Specify Origin Host, cliquez sur Add.
-
Dans la boîte de dialogue, renseignez les paramètres suivants, puis cliquez sur OK.
Paramètre
Description
Origin Type
Sélectionnez Custom Origin. Les adresses d'origine définies dans les origines conditionnelles n'apparaissent pas dans la liste déroulante Basic origin address. Choisissez donc Custom origin et saisissez l'adresse manuellement.
Origin Address
Saisissez l'adresse d'origine FC indiquée à l'étape 2.
Origin Host Type
Choisissez le type de valeur Host à utiliser. Pour les origines FC, sélectionnez Custom Origin Host et saisissez le nom de domaine manuellement.
Origin Host
Saisissez le nom de domaine FC (par exemple,
your-fc-function.cn-hangzhou.fcapp.run).Pour les origines OSS, la valeur doit correspondre exactement au domaine du bucket OSS (par exemple,
dev-3mir.oss-cn-guangzhou.aliyuncs.com).Rule Condition
Facultatif. Sélectionnez la Rule Condition créée à l'étape 1 (par exemple,
api-to-fc) pour limiter ce Host d'origine aux requêtes correspondant à cette règle.
Il est inutile de désactiver le Host d'origine par défaut. Si un Host d'origine par défaut et un Host d'origine spécifique coexistent pour une même origine, c'est le second qui s'applique. Pour les origines dépourvues de Host d'origine spécifique, le Host d'origine par défaut reste actif. Pour plus d'informations, consultez la rubrique relative au Host d'origine.
Configurer une réécriture d'URL (facultatif)
Si vous devez réécrire le chemin /api/ en /print/api/ sur votre origine FC, utilisez également la fonctionnalité de réécriture d'URL de CDN :
Dans le rules engine, configurez une règle de réécriture d'URL pour transformer
/api/en/print/api/.Assurez-vous que la condition de correspondance d'URI définie à l'étape 1 dans le rules engine couvre bien le chemin réécrit. Utilisez par exemple
*/api/*ou faites correspondre le chemin spécifique/print/api/*.
Une fois ces configurations appliquées, CDN achemine les requêtes frontales vers /api/* au service FC, tout en dirigeant les autres requêtes vers l'origine OSS par défaut.
Exemple : routage basé sur le Referer
L'exemple suivant illustre comment acheminer les requêtes vers différentes origines selon l'en-tête Referer. Cette approche s'avère utile pour la protection contre le hotlinking ou pour contrôler l'accès en fonction de la source de la requête.
Créer une condition de règle basée sur le Referer
Connectez-vous à la console CDN, sélectionnez le domaine cible, puis accédez à Domain Names > Rules Engine.
-
Cliquez sur Add Rule et configurez les paramètres selon le tableau ci-dessous. Le rules engine ne propose pas de type de correspondance dédié au Referer ; utilisez donc le type Request Header pour implémenter une correspondance basée sur celui-ci :
Paramètre
Valeur
Rule Name
Saisissez un nom explicite, tel que
referer-routing.Type de correspondance
Request Header
Nom du paramètre
RefererOpérateur de correspondance
Include Any
Valeur de correspondance
example.com. Cette valeur désigne le domaine du referer. Plusieurs domaines peuvent être ajoutés.Sensible à la casse
Case-insensitive
Cliquez sur Submit pour enregistrer la règle.
Configurer l'origine conditionnelle
Dans le volet de navigation de gauche de la page de gestion du domaine, accédez à l'onglet Basics. Dans la section Origin Information, cliquez sur l'icône de développement en regard de Conditional Origin.
-
Cliquez sur Add Conditional Origin et configurez les paramètres de la boîte de dialogue selon le tableau suivant :
Paramètre
Valeur
Rule Condition
Dans la liste déroulante, sélectionnez
referer-routing.Origin Address
Saisissez l'adresse de l'origine associée à cette source Referer.
Cliquez sur OK pour enregistrer la configuration.
Exemple : routage des utilisateurs de Chine continentale et hors de Chine continentale vers différentes origines
L'exemple suivant explique comment utiliser les origines conditionnelles avec le rules engine pour acheminer les utilisateurs situés en Chine continentale et ceux situés hors de Chine continentale vers des serveurs d'origine distincts.
Connectez-vous à la console CDN. Sur la page Domain Names, recherchez le domaine cible et cliquez sur Manage dans la colonne Actions. Dans le volet de navigation de gauche, cliquez sur Rules Engine, puis sur Add Rule.
Configurer la règle pour la Chine continentale : dans la zone de contenu de la règle, cliquez sur l'icône plus pour ajouter une condition de correspondance. Définissez Match type sur IP Location, Match operator sur Include Any, puis cliquez sur Modify pour sélectionner Chinese mainland dans la liste déroulante comme valeur de correspondance. Envoyez et enregistrez la règle.
Configurer la règle pour l'étranger (secours) : créez une seconde règle. Définissez Match type sur IP Location, Match operator sur Exclude Any, puis indiquez Chinese mainland comme valeur de correspondance. Envoyez et enregistrez la règle.
-
Configurer l'origine conditionnelle : dans la section Origin Information, associez chaque règle à son origine correspondante :
Associez la règle destinée à la Chine continentale à une origine nationale (par exemple, un bucket OSS national ou un serveur local).
Associez la règle pour l'étranger à une origine internationale (par exemple, un bucket OSS situé hors de Chine ou un serveur distant).
-
Configurer le Host d'origine : définissez un Origin Host dédié pour chaque origine afin de garantir que la valeur Host corresponde au domaine d'origine associé.
Dans le volet de navigation de gauche de la page de gestion du domaine, accédez à l'onglet Origin Fetch > Configurations. Dans la section Specify Origin Host, cliquez sur Add.
Dans la boîte de dialogue Specify Origin Host, configurez les paramètres suivants. Ajoutez une entrée pour chaque origine :
Paramètre
Valeur
Type d'origine
Custom origin. Les adresses d'origine définies dans les origines conditionnelles n'apparaissent pas dans la liste déroulante Basic origin address. Choisissez donc Custom origin et saisissez l'adresse manuellement. Si l'adresse d'origine figure déjà dans la configuration de l'origine de base (en tant qu'origine OSS, par exemple), vous pouvez également sélectionner Basic origin address et la choisir dans la liste déroulante.
Adresse d'origine
Saisissez l'adresse d'origine associée à l'origine conditionnelle (par exemple, le domaine du bucket OSS national ou international).
Type de Host d'origine
Custom origin Host
Host d'origine
Saisissez la valeur Host correspondant au domaine d'origine (par exemple,
bucket.oss-cn-hangzhou.aliyuncs.com).Rule Condition
Sélectionnez la condition de règle correspondant à cette origine (par exemple, la règle pour la Chine continentale ou celle pour l'étranger).
Cliquez sur OK pour finaliser la configuration.
Il est inutile de désactiver le Host d'origine par défaut. Si un Host d'origine par défaut et un Host d'origine spécifique coexistent pour une même origine, c'est le second qui s'applique. Pour les origines dépourvues de Host d'origine spécifique, le Host d'origine par défaut reste actif.
Recommandations
Lorsque les utilisateurs situés hors de Chine continentale subissent une latence élevée ou des connexions instables en accédant à des origines situées en Chine continentale, nous recommandons d'utiliser l'accélération de transfert OSS pour optimiser la liaison de récupération d'origine. Procédez comme suit :
Pour l'origine conditionnelle destinée à la Chine continentale, définissez l'origine sur l'endpoint public standard d'OSS (par exemple,
bucket.oss-cn-hangzhou.aliyuncs.com).Pour l'origine conditionnelle destinée à l'étranger, définissez l'origine sur l'endpoint d'accélération de transfert d'OSS (par exemple,
bucket.oss-accelerate.aliyuncs.com).
OSS s'appuie sur des nœuds d'accélération répartis dans le monde entier pour optimiser les liaisons de transfert transfrontalières, ce qui réduit considérablement la latence de récupération d'origine. Pour plus d'informations, consultez la rubrique relative à l'accélération de transfert OSS.