Tous les produits
Search
Centre de documentation

Edge Security Acceleration:Configurer des noms de domaine

Dernière mise à jour :Aug 12, 2026

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

Prérequis

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

Un site actif dispose d'un abonnement souscrit et est connecté via un enregistrement NS ou CNAME.

Choisir une méthode de configuration

image

Fonctionnalité

Custom Domains

Routes

Objectif principal

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

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

Périmètre

Tout le 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 à la 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 précis.

  • Intercepter certaines requêtes et renvoyer un contenu personnalisé.

Associer un domaine personnalisé

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

Liez Functions and Pages au domaine de votre site. Une fois l'association effectuée, accédez à Functions and Pages via le domaine personnalisé. Le domaine associé à Functions and 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, choisissez Edge Computing and AI > Functions and Pages. Cliquez sur l'instance Functions and Pages cible.

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

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

    Remarque

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

    image

  4. Suivez les étapes ci-après selon la méthode de connexion de votre site.

    Enregistrement NS

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

    Enregistrement CNAME

    Si votre site utilise un enregistrement CNAME, ajoutez un enregistrement CNAME chez votre fournisseur DNS pour activer le domaine.

    1. Dans la liste des domaines personnalisés, localisez votre nouveau domaine et cliquez sur View DNS Records.

      image

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

      image

    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 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.

      image

    4. Retournez dans la console ESA et attendez que le CNAME Status affiche Configured.imageVous pouvez alors consulter la page en visitant le domaine personnalisé que vous venez d'associer, par exemple pages.example.com, dans un navigateur.image

Configurer des routes

Dirigez les requêtes correspondant à des chemins d'URL spécifiques vers une instance Functions and Pages afin d'assurer un contrôle granulaire du trafic. Les requêtes correspondantes sont traitées par Functions and Pages ; les requêtes non correspondantes suivent le flux standard d'accélération et de mise en cache d'ESA. Par exemple, une route pour example.com/a* sur le site example.com envoie les requêtes vers /a, /a1 et /a2 à Functions and 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, choisissez Edge Computing and AI > Functions and Pages. Cliquez sur l'instance Functions and Pages cible.

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

  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 selon l'URL (nom d'hôte et chemin). Vous pouvez par exemple configurer une règle pour diriger toutes les requêtes dont le préfixe d'URL est pages.example.com vers votre instance Functions and Pages.image

    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 (All/Any). Par exemple, transférez une requête vers Functions and Pages uniquement lorsque le Hostname est égal à www.example.com et que l'en-tête de requête User-Agent contient Mobile :image

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

    image

Important
  • Si vous utilisez le 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 ce domaine échoueront.

  • Si vous avez plusieurs routes, elles sont évaluées 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 contenant 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 correspondre à davantage de requêtes. Le caractère générique * correspond à zéro caractère ou plus. Par exemple, example.com/* correspond à toutes les requêtes adressées à example.com.

  • Les routes sont sensibles à la casse. Ainsi, example.com/a et example.com/A constituent deux routes distinctes.

  • 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 conséquent, des modèles comme example.com/*/path et example.com/path?param=1 sont invalides.

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

Mode Bypass

L'activation du Bypass Mode pour une route envoie les requêtes correspondantes au service Functions and Pages sous forme de sous-requêtes. Utilisez ce mode pour l'authentification ou la journalisation sans interrompre le flux de requêtes principal 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 transférée à Functions and Pages pour des opérations telles que la journalisation ou l'authentification. En mode bypass, le corps de la requête n'est pas transféré à Functions and Pages.

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

  4. La requête suit le flux ESA standard, où elle est vérifiée par rapport aux politiques de cache ou transférée au serveur d'origine.

  5. La réponse provenant d'un succès 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 and Pages.

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

Cas d'utilisation

  • Journalisation : utilisez le mode bypass pour transférer des requêtes spécifiques à Functions and 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. Privilégiez le mode bypass pour vous authentifier d'abord auprès de Functions and Pages, évitant ainsi le transfert du fichier volumineux via la fonction.

FAQ

Code pour le mode bypass

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 retourner 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.

    • En cas d'échec de l'authentification (false), vous pouvez passer un second 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 bypass

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. Dans le volet de navigation de gauche, choisissez Edge Computing > Functions and Pages. Cliquez sur l'instance Functions and Pages cible.

  2. Cliquez sur l'onglet Domains.

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