Tous les produits
Search
Centre de documentation

Edge Security Acceleration:Configurer les noms de domaine

Dernière mise à jour :Oct 09, 2026

Pour accéder à Functions & Pages via un nom de domaine personnalisé, configurez un nom de domaine en tant que point d'entrée. Edge Security Acceleration (ESA) propose deux méthodes pour diriger les requêtes HTTP/HTTPS vers Functions & Pages : Custom Domains et Routes.

Prérequis

Les options Custom Domains et Routes nécessitent toutes deux un site actif dans votre compte.

Un site actif dispose d'un forfait souscrit et est connecté à l'aide d'un enregistrement NS ou CNAME.

Choisir une méthode de configuration

image

Fonctionnalité

Custom Domains

Routes

Objectif principal

Transmet toutes les requêtes provenant d'un domaine spécifié, tel que api.example.com, vers une seule instance Functions & Pages.

Achemine uniquement les requêtes qui correspondent à un chemin prédéfini, comme example.com/api/*, vers Functions & Pages. Les autres requêtes ne sont pas affectées.

Portée

L'intégralité du trafic du domaine.

Uniquement le trafic correspondant à la règle.

Configuration

Processus simple en une seule étape.

Flexible. Nécessite la configuration de règles de correspondance.

Cas d'utilisation

  • Fonctions dédiées de passerelle API.

  • Applications complètes avec rendu côté serveur (SSR).

  • Authentifier ou journaliser des chemins d'API spécifiques.

  • Mettre en œuvre des tests A/B pour des chemins de page spécifiques.

  • Intercepter des requêtes spécifiques et renvoyer du contenu personnalisé.

Associer un nom de domaine personnalisé

Utilisez l'option Custom Domains pour diriger tout le trafic d'un domaine vers une seule instance Functions & Pages.

Lieez Functions & Pages au domaine de votre site. Une fois l'association effectuée, accédez à Functions & Pages via le nom de domaine personnalisé. Le domaine associé à Functions & Pages doit appartenir à un site disponible. ESA ajoute automatiquement un enregistrement DNS pour le domaine associé.

image
  1. Connectez-vous à la console ESA, puis dans le volet de navigation de gauche, sélectionnez Edge Computing and AI > Functions & Pages. Cliquez sur l'instance Functions & Pages cible.

  2. Cliquez sur l'onglet Domain Names. Dans la section Custom Domains, cliquez sur Add Domain Name.

  3. Saisissez le nom de domaine à associer à votre instance Functions & Pages, par exemple pages.example.com. ESA crée automatiquement un enregistrement DNS pour le domaine sur le site correspondant.

    Remarque

    Un nouveau domaine hérite de la configuration de son site. Si le site ne dispose pas de certificat SSL/TLS, le domaine ne sera pas accessible via HTTPS. Configurez SSL/TLS pour activer l'accès HTTPS.

  4. Suivez les étapes suivantes en fonction de la méthode de connexion de votre site.

    Enregistrement NS

    Si votre site utilise un enregistrement NS, attendez environ une minute que l'enregistrement DNS prenne effet. Ouvrez ensuite un navigateur et visitez le nom de domaine personnalisé, par exemple pages.example.com, pour vérifier le résultat.

    Enregistrement CNAME

    Si votre site utilise un enregistrement CNAME, ajoutez un enregistrement CNAME auprès de votre fournisseur DNS pour activer le domaine.

    1. Dans la liste des noms de domaine personnalisés, repérez votre nouveau domaine et cliquez sur View DNS Records.

    2. Copiez la valeur CNAME générée par ESA.

    3. Accédez au site web de votre fournisseur DNS et ajoutez un enregistrement CNAME avec les informations suivantes :

      • Host Record : Saisissez le préfixe du nom de domaine personnalisé. Pour cet exemple, saisissez pages.

      • Record Type : Sélectionnez CNAME.

      • Record Value : Collez la valeur CNAME copiée à l'étape précédente.

    4. Revenez à la console ESA et attendez que le statut CNAME Status indique Configured.Vous pouvez alors afficher la page en visitant le nom de domaine personnalisé que vous venez d'associer, par exemple pages.example.com, dans un navigateur.

Configurer les routes

Acheminez les requêtes correspondant à des chemins URL spécifiques vers une instance Functions & Pages pour un contrôle granulaire du trafic. Les requêtes correspondantes sont traitées par Functions & Pages ; les requêtes non correspondantes poursuivent leur cours via le flux standard d'accélération et de mise en cache ESA. Par exemple, une route pour example.com/a* sur le site example.com envoie les requêtes vers /a, /a1 et /a2 vers Functions & Pages, tandis que les requêtes vers /b, /c et /d sont dirigées vers l'origine ou le cache.

image
  1. Connectez-vous à la console ESA, puis dans le volet de navigation de gauche, sélectionnez Edge Computing and AI > Functions & Pages. Cliquez sur l'instance Functions & Pages cible.

  2. Cliquez sur l'onglet Domain Names. Dans la section Routes, cliquez sur Add Route.

  3. Saisissez un Route Name. Dans la liste Select Website, sélectionnez le site cible, par exemple example.com.

  4. Sélectionnez un Route Mode.

    1. Simple Mode : Fait correspondre les requêtes uniquement en fonction de l'URL (nom d'hôte et chemin). Par exemple, vous pouvez configurer une règle pour acheminer toutes les requêtes dont le préfixe URL est pages.example.com vers votre instance Functions & Pages.

    2. Custom Mode : Combine plusieurs conditions telles que les en-têtes de requête, les cookies et les méthodes de requête pour une correspondance complexe. Définissez la relation logique entre les conditions (Toutes/Aucune). Par exemple, transférez une requête vers Functions & Pages uniquement si le Hostname est égal à www.example.com et si l'en-tête de requête User-Agent contient Mobile.

  5. Dans un navigateur, visitez une URL correspondant à la route pour voir le résultat.

Important
  • Si vous utilisez le mode Simple Mode et saisissez un domaine avec un préfixe, tel que *.example.com ou www.example.com, un enregistrement DNS correspondant doit exister dans la console ESA, ou vous devez ajouter manuellement un enregistrement. Sinon, les requêtes vers le domaine échoueront.

  • Si vous disposez de plusieurs routes, elles sont évaluées dans l'ordre, de haut en bas. La première route correspondante est appliquée et toutes les autres sont ignorées.

Règles de correspondance

  • Une route doit inclure à la fois un nom d'hôte et un chemin. Les routes comportant uniquement un chemin, comme /path, ne sont pas prises en charge.

  • Ajoutez un caractère générique * au début ou à la fin d'une route pour faire correspondre davantage de requêtes. Le caractère générique * correspond à zéro ou plusieurs caractères. Par exemple, example.com/* correspond à toutes les requêtes vers example.com.

  • Les routes sont sensibles à la casse. Par exemple, example.com/a et example.com/A constituent deux routes différentes.

  • Les caractères génériques (*) ne peuvent pas apparaître au milieu d'un chemin et les paramètres de requête ne sont pas pris en charge dans les modèles. Par exemple, les modèles tels que example.com/*/path et example.com/path?param=1 sont invalides.

  • Si une requête correspond à plusieurs routes, la première route correspondante de la liste est prioritaire.

  • Si le même nom de domaine est à la fois associé à une instance Functions & Pages et couvert par une route, la route est prioritaire pour la correspondance des requêtes. Les requêtes qui ne correspondent pas à la route sont traitées par l'instance Functions & Pages à laquelle le nom de domaine est associé. Par exemple, la fonction A est associée à 1.a.com et la fonction B possède la route 1.a.com/*. Étant donné que la route correspond à tous les chemins sous 1.a.com, la fonction B traite toutes les requêtes vers 1.a.com.

Mode de contournement

L'activation du Bypass Mode pour une route envoie les requêtes correspondantes au service Functions & Pages en tant que sous-requêtes. Utilisez ce mode pour l'authentification ou la journalisation sans interrompre le flux principal de la requête vers l'origine :

imageimage
  1. Un client envoie une requête à un point de présence (POP) ESA.

  2. La requête correspond à une route et est transmise à Functions & Pages pour des opérations telles que la journalisation ou l'authentification. En mode de contournement, le corps de la requête n'est pas transmis à Functions & Pages.

  3. Si Functions & Pages renvoie un code d'état 200, la requête passe à l'étape suivante. Si elle renvoie tout autre code d'état, ESA arrête le traitement et renvoie un code d'état 403 au client.

  4. La requête poursuit son cours via le flux standard ESA, où elle est vérifiée par rapport aux politiques de cache ou transmise au serveur d'origine.

  5. La réponse issue d'un hit de cache ou du serveur d'origine est renvoyée au nœud ESA. À ce stade, la réponse n'est plus traitée par Functions & Pages.

  6. La réponse est envoyée au client.

Cas d'utilisation

  • Journalisation : Utilisez le mode de contournement pour transmettre des requêtes spécifiques à Functions & Pages et définir une logique de journalisation personnalisée dans votre fonction.

  • Authentification pour les téléchargements de fichiers volumineux : Le transfert de réponses volumineuses via une fonction consomme beaucoup de temps CPU et augmente les coûts. Utilisez le mode de contournement pour vous authentifier d'abord avec Functions & Pages, évitant ainsi le transfert du fichier volumineux via la fonction.

FAQ

Code pour le mode de contournement

Prenons l'exemple de la signature d'URL de type A :

  • Remplacez la fonction d'entrée async fetch() par async bypass().

  • La fonction doit renvoyer une valeur construite avec new ResponseBypass(), qui prend deux paramètres :

    • Le premier paramètre est un booléen (true ou false) indiquant si l'authentification a réussi.

    • Si l'authentification échoue (false), vous pouvez passer un deuxième paramètre status pour spécifier le code d'état à renvoyer au client.

Exemple de code pour la signature de type A originale

import { createHash } from "node:crypto";

async function handleRequest(request) {
  const url = new URL(request.url);
  const path = url.pathname;
  const delta = 3600;

  const authKeyTypeA = url.searchParams.get('auth_key');

  const privateKey = 'your_secret_key'
  const currentTimestamp = Math.floor(Date.now() / 1000);

  if (!authKeyTypeA) {
    // In an authentication failure scenario, the edge node returns a 403 error to the client by default.
    return new Response('Unauthorized', { 
      status: 401,
    });
  }

  const [timestamp, rand, uid, signature] = authKeyTypeA.split('-');

  if (currentTimestamp > parseInt(timestamp)+ delta) {
    // In an authentication failure scenario, the edge node returns a 403 error to the client by default.
    return new Response('Link expired', {
      status: 403,
    });
  }

  const signString = [path, timestamp, rand, uid, privateKey].join('-');

  const md5 = createHash('md5').update(signString).digest('hex');

  if (md5 !== signature) {
  
    return new Response('Unauthorized', {
      status: 401
    });
  }

  // If the resource is on another domain, fetch it and return the response.
  // const yourUrl = `https://your-dcdn-domain.com${path}${url.search}`
  // const cdnResponse = await fetch(yourUrl, request)
  // return new Response(cdnResponse.body, cdnResponse)

  // In most cases, fetching from the origin is sufficient.
  return fetch(request.url)
}

export default {
  async fetch(request) {
    return handleRequest(request)
  }
}

Exemple de code pour la signature de type A avec mode de contournement

import { createHash } from "node:crypto";

    async function handleRequest(request) {
      const url = new URL(request.url);
      const path = url.pathname;
      const delta = 3600;

      const authKeyTypeA = url.searchParams.get("auth_key");

      const privateKey = "your_secret_key";
      const currentTimestamp = Math.floor(Date.now() / 1000);

      if (!authKeyTypeA) {
        // Authentication failed. If you pass false, the edge node returns a 403 error to the client by default.
        return new ResponseBypass(false, {
          status: 401,
        });
      }

      const [timestamp, rand, uid, signature] = authKeyTypeA.split("-");

      if (currentTimestamp > parseInt(timestamp) + delta) {
        // Authentication failed. If you pass false, the edge node returns a 403 error to the client by default.
        return new ResponseBypass(false, {
          status: 403,
        });
      }

      const signString = [path, timestamp, rand, uid, privateKey].join("-");

      const md5 = createHash("md5").update(signString).digest("hex");

      if (md5 !== signature) {
        // Authentication failed. If you pass false, the edge node returns a 403 error to the client by default.
        return new ResponseBypass(false, {
          status: 401,
        });
      }

      // Authentication succeeded. If you pass true, the request proceeds to the origin, and the response is no longer processed by this function.
      const resSuccess = new ResponseBypass(true);
      return resSuccess;
    }

    export default {
      async bypass(request) {
        return handleRequest(request);
      },
    };

Modifier les configurations de domaine

Si vos domaines et routes actuels ne répondent plus à vos besoins, modifiez-les ou supprimez-les.

  1. Connectez-vous à la console ESA, puis dans le volet de navigation de gauche, sélectionnez Edge Computing and AI > Functions & Pages. Cliquez sur l'instance Functions & Pages cible.

  2. Cliquez sur l'onglet Domains.

  3. Dans l'onglet Domain Names, vous pouvez Remove un nom de domaine personnalisé. Pour les routes, vous pouvez les Edit ou les Delete.

Comment associer Functions et Pages directement à un domaine racine ?

Pour associer Functions et Pages directement à un domaine racine tel que example.com, utilisez l'une des méthodes suivantes :

  • Custom Domains : Sélectionnez Add Domain Name et saisissez @.example.com comme nom de domaine.

  • Routes : Sélectionnez Add Route. Pour le site, utilisez Select Website pour sélectionner example.com. Pour le Route Mode, sélectionnez Simple Mode et laissez le champ Route Prefix vide.