La fonctionnalité d'origine conditionnelle utilise le moteur de règles pour filtrer les requêtes des utilisateurs en fonction de critères spécifiés, tels que les en-têtes de requête, les paramètres de chaîne de requête, les chemins ou les adresses IP client. Le CDN achemine les requêtes correspondant aux critères vers une adresse d'origine spécifique. Vous pouvez ajouter plusieurs configurations pour diriger les requêtes vers différentes origines selon diverses conditions.
Prérequis
Avant de configurer une origine conditionnelle, créez une condition de règle dans le moteur de règles.
Remarques sur l'utilisation
Conflit de fonctionnalités : Les fonctionnalités d'origine conditionnelle et d'origine avancée sont mutuellement exclusives. Vous ne pouvez en activer qu'une seule.
Prise en charge des caractères génériques : Dans le moteur de règles, la valeur de correspondance URI prend en charge le caractère générique
*(correspond à n'importe quel nombre de caractères) et?(correspond à un seul caractère). La correspondance de chemin dans la fonctionnalité d'origine avancée prend uniquement en charge les valeurs exactes, et non les caractères génériques.Priorité des règles et ordre de correspondance : Le CDN évalue les origines conditionnelles en fonction de la priorité de la condition de règle associée dans le moteur de règles, et non de l'ordre des configurations d'origine conditionnelle. Lorsqu'une requête correspond à une règle, l'évaluation s'arrête. La priorité des règles dans le moteur de règles est déterminée par l'ordre de création : les règles créées en premier ont une priorité plus élevée. Pour ajuster la priorité de correspondance, supprimez et recréez les règles dans l'ordre souhaité.
Conseil pour la configuration multi-chemins : Lors de la création de règles pour « inclure » ou « exclure » un chemin, saisissez plusieurs chemins (sur plusieurs lignes ou sous forme de plusieurs valeurs) dans le champ de valeur de correspondance d'une seule règle afin de simplifier votre configuration.
Limite de règles : Le nombre de conditions de règle qu'une origine conditionnelle peut référencer est soumis à une limite globale dans le moteur de règles. Pour un seul domaine, le nombre total de références aux conditions de règle pour toutes les fonctionnalités, y compris l'origine conditionnelle, l'origine avancée et la protection contre le hotlinking basée sur le Referer, ne peut pas dépasser cinq. Dans des scénarios multi-origines complexes, le dépassement de cette limite entraîne l'échec de la configuration. Nous vous recommandons de planifier soigneusement l'utilisation de vos règles ou d'utiliser des domaines distincts pour l'accélération si vous disposez de nombreuses origines.
Considérations pour les origines OSS
Si une origine est un compartiment OSS, ajoutez son adresse sous Domain Names > Basics > Origin Information et définissez le type d'origine sur Domaine OSS. Cela permet au CDN de s'authentifier correctement auprès d'OSS.
-
Scénarios multi-origines OSS : Lorsque vous configurez plusieurs origines OSS, configurez un hôte d'origine spécifique pour chacune d'elles. La valeur de l'hôte doit correspondre exactement au domaine du compartiment OSS correspondant, par exemple
dev-3mir.oss-cn-guangzhou.aliyuncs.com.Si l'hôte d'origine n'est pas configuré correctement ou si vous vous fiez à l'hôte d'origine par défaut, les requêtes peuvent être acheminées vers le mauvais compartiment. Cela peut provoquer des erreurs 403 SignatureDoesNotMatch ou 404 Not Found. Liez explicitement chaque règle d'origine conditionnelle, y compris les règles de correspondance et les règles de secours, à son origine et à son hôte d'origine correspondants. Lorsque vous configurez plusieurs origines, nous vous recommandons de définir des poids égaux pour les origines de base et de créer des conditions de règle distinctes pour chaque origine conditionnelle afin de garantir un routage prévisible.
Comparaison des types d'origine
Les origines conditionnelles et les origines avancées peuvent toutes deux référencer des conditions de règle du moteur de règles pour créer des politiques de routage d'origine flexibles. Le CDN sélectionne automatiquement une origine si une requête correspond à une condition de règle :
|
Type d'origine |
Condition de déclenchement |
|
Origine conditionnelle |
La requête correspond à la condition de règle référencée par l'origine conditionnelle. |
|
Origine avancée |
La requête correspond à la condition de règle référencée par l'origine avancée. |
|
Origine de base |
La requête ne correspond à aucune règle d'origine conditionnelle ou d'origine avancée (secours par défaut). |
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 et cliquez sur Manage dans la colonne Actions.
Dans la section Origin Information, cliquez sur Expand à côté de Conditional Origin.
Cliquez sur Add Conditional Origin.
-
Définissez la Rule Condition.
S'il s'agit de votre premier ajout de configuration ou si vous devez modifier une condition de règle existante, cliquez sur Conditional Origin dans la boîte de dialogue Rules Engine. Cela ouvre le moteur de règles où vous pouvez ajouter ou modifier des configurations. Pour plus d'informations, consultez le moteur de règles.
Si vous disposez d'une condition de règle existante, sélectionnez-la dans la liste déroulante Rule Condition.
Dans le champ Origin Address, saisissez l'adresse d'origine. L'adresse d'origine peut être une adresse IP, un nom de domaine, un compartiment OSS ou un endpoint Function Compute (FC).
Cliquez sur OK pour terminer la configuration.
Exemple : Acheminement des requêtes /api/* vers FC
La fonctionnalité d'origine avancée prend uniquement en charge la correspondance de valeurs exactes et ne prend pas en charge les caractères génériques ni les expressions régulières. Pour mettre en œuvre un routage d'origine basé sur le chemin, utilisez des origines conditionnelles avec le moteur de règles. En combinant la fonctionnalité d'origine conditionnelle avec le moteur de règles et la réécriture d'URL, vous pouvez acheminer les requêtes pour le chemin /api/* vers une origine Function Compute (FC), tandis que toutes les autres requêtes sont acheminées par défaut vers une origine OSS.
Créer une règle dans le moteur de règles
Accédez à Domain Names, recherchez le domaine cible et accédez à la page Rules Engine.
-
Cliquez sur Add Rule et configurez la condition de règle comme décrit dans le tableau suivant :
Paramètre
Valeur
Rule Name
Saisissez un nom personnalisé pour une identification facile, par exemple
api-to-fc.Type de correspondance
URI
Opérateur de correspondance
Include Any
Valeur de correspondance
Cliquez sur Edit, saisissez
*/api/*et appuyez sur Entrée pour l'ajouter. Les caractères génériques*et?sont pris en charge. Une seule règle prend en charge jusqu'à 32 valeurs de correspondance.Sensible à la casse
Case-insensitive (par défaut)
ImportantN'ajoutez pas de condition de nom d'hôte. La condition de nom d'hôte correspond au domaine de la requête, et non à l'origine. L'ajout d'une condition de nom d'hôte peut 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 d'expansion à côté de Conditional Origin.
-
Cliquez sur Add Conditional Origin et configurez les paramètres dans la boîte de dialogue comme décrit dans le tableau suivant :
Paramètre
Valeur
Rule Condition
Dans la liste déroulante, sélectionnez la règle que vous avez 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 l'hôte d'origine
Configurez un hôte d'origine spécifique pour l'origine FC afin de garantir que le CDN envoie des requêtes de récupération d'origine avec l'en-tête Host correct.
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, configurez les paramètres suivants et cliquez sur OK.
Paramètre
Description
Origin Type
Sélectionnez Custom Origin. Les adresses d'origine configurées dans les origines conditionnelles n'apparaissent pas dans la liste déroulante Basic origin address. Vous devez sélectionner Custom origin et saisir manuellement l'adresse.
Origin Address
Saisissez l'adresse d'origine FC de l'étape 2.
Origin Host Type
Sélectionnez le type de valeur d'hôte à utiliser. Pour les origines FC, sélectionnez Custom Origin Host et saisissez manuellement le nom de domaine.
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 compartiment OSS (par exemple,
dev-3mir.oss-cn-guangzhou.aliyuncs.com).Rule Condition
Facultatif. Sélectionnez la condition de règle créée à l'étape 1 (par exemple,
api-to-fc) pour limiter cet hôte d'origine aux requêtes qui correspondent à la règle.
Vous n'avez pas besoin de désactiver l'hôte d'origine par défaut. Lorsque l'hôte d'origine par défaut et l'hôte d'origine pour une origine spécifique sont configurés pour la même origine, l'hôte d'origine pour l'origine spécifique prend effet. Pour les origines qui n'ont pas d'hôte d'origine spécifique configuré, l'hôte d'origine par défaut reste en vigueur. Pour plus d'informations, consultez hôte d'origine.
Configurer une réécriture d'URL (facultatif)
Si vous devez réécrire le chemin /api/ vers le chemin /print/api/ sur votre origine FC, vous devez également utiliser la fonctionnalité de réécriture d'URL dans le CDN :
Dans le moteur de règles, configurez une règle de réécriture d'URL pour réécrire
/api/vers/print/api/.Assurez-vous que la condition de correspondance URI dans le moteur de règles de l'étape 1 couvre le chemin réécrit. Par exemple, utilisez
*/api/*ou faites correspondre le chemin spécifique/print/api/*.
Une fois ces configurations terminées, le CDN achemine les requêtes frontend vers /api/* vers le service FC, tout en acheminant les autres requêtes vers l'origine OSS par défaut.
Exemple : Routage basé sur le Referer
L'exemple suivant montre comment acheminer les requêtes vers différentes origines en fonction de l'en-tête Referer. Cela est 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 Referer
Connectez-vous à la console CDN, sélectionnez le domaine cible et accédez à Domain Names > Rules Engine.
-
Cliquez sur Add Rule et configurez les paramètres comme décrit dans le tableau suivant. Le moteur de règles ne dispose pas de type de correspondance Referer dédié. Vous devez utiliser le type de correspondance Request Header pour mettre en œuvre la correspondance basée sur le Referer :
Paramètre
Valeur
Rule Name
Saisissez un nom descriptif, par exemple
referer-routing.Type de correspondance
Request Header
Nom du paramètre
RefererOpérateur de correspondance
Include Any
Valeur de correspondance
example.com. Cette valeur spécifie le domaine referer. Vous pouvez ajouter plusieurs domaines.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 des domaines, accédez à l'onglet Basics. Dans la section Origin Information, cliquez sur l'icône d'expansion à côté de Conditional Origin.
-
Cliquez sur Add Conditional Origin et configurez les paramètres dans la boîte de dialogue comme décrit dans 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 pour cette source Referer.
Cliquez sur OK pour enregistrer la configuration.
Exemple : Acheminement des utilisateurs depuis la Chine continentale et hors de la Chine continentale vers différentes origines
L'exemple suivant montre comment utiliser des origines conditionnelles avec le moteur de règles pour acheminer les utilisateurs depuis la Chine continentale et hors de la Chine continentale vers différents serveurs d'origine.
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 cliquez sur Add Rule.
Configurer la règle 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 et 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 outre-mer (secours) : Créez une autre règle. Définissez Match type sur IP Location, Match operator sur Exclude Any, et définissez la valeur de correspondance sur Chinese mainland. 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 Chine continentale à une origine domestique (par exemple, un compartiment OSS domestique ou un serveur domestique).
Associez la règle outre-mer à une origine internationale (par exemple, un compartiment OSS international ou un serveur international).
-
Configurer l'hôte d'origine : Configurez un Origin Host dédié pour chaque origine afin de garantir que la valeur Host corresponde au domaine d'origine correspondant.
Dans le volet de navigation de gauche de la page de gestion des domaines, 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
Origin Type
Custom origin. Les adresses d'origine configurées dans les origines conditionnelles n'apparaissent pas dans la liste déroulante Basic origin address. Vous devez sélectionner Custom origin et saisir manuellement l'adresse. Si l'adresse d'origine est déjà ajoutée dans la configuration d'origine de base (par exemple, en tant qu'origine OSS), vous pouvez également sélectionner Basic origin address et la choisir dans la liste déroulante.
Origin Address
Saisissez l'adresse d'origine associée à l'origine conditionnelle (par exemple, le domaine du compartiment OSS domestique ou international).
Origin Host Type
Custom origin Host
Origin Host
Saisissez la valeur Host qui correspond au domaine d'origine (par exemple,
bucket.oss-cn-hangzhou.aliyuncs.com).Rule Condition
Sélectionnez la condition de règle qui correspond à cette origine (par exemple, la règle Chine continentale ou la règle pour l'extérieur de la Chine continentale).
Cliquez sur OK pour terminer la configuration.
Vous n'avez pas besoin de désactiver l'hôte d'origine par défaut. Lorsque l'hôte d'origine par défaut et l'hôte d'origine pour une origine spécifique sont configurés pour la même origine, l'hôte d'origine pour l'origine spécifique prend effet. Pour les origines qui n'ont pas d'hôte d'origine spécifique configuré, l'hôte d'origine par défaut reste en vigueur.
Recommandations
Pour les scénarios où les utilisateurs hors de la Chine continentale rencontrent une latence élevée ou des connexions instables lors de l'accès aux origines de Chine continentale, nous vous recommandons d'utiliser l'accélération de transfert OSS pour optimiser le lien de récupération d'origine. Configurez comme suit :
Pour l'origine conditionnelle Chine continentale, définissez l'origine sur le point de terminaison public standard OSS (par exemple,
bucket.oss-cn-hangzhou.aliyuncs.com).Pour l'origine conditionnelle outre-mer, définissez l'origine sur le point de terminaison d'accélération de transfert OSS (par exemple,
bucket.oss-accelerate.aliyuncs.com).
OSS utilise des nœuds d'accélération distribués mondialement pour optimiser les liens de transfert transfrontaliers et peut réduire considérablement la latence de récupération d'origine. Pour plus d'informations, consultez Accélération de transfert OSS.