Antimodèle: définir plusieurs hôtes virtuels avec le même alias d'hôte et le même numéro de port

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Dans Apigee Edge, un routeur gère tout le trafic entrant des API. Cela signifie que toutes les requêtes HTTP et HTTPS adressées à un proxy d'API Edge sont d'abord traitées par un routeur Edge. Par conséquent, la requête de proxy d'API doit être dirigée vers l'adresse IP et le port ouvert d'un routeur.

Un hôte virtuel vous permet d'héberger plusieurs noms de domaine sur un seul serveur ou groupe de serveurs. Pour Edge, les serveurs correspondent aux routeurs Edge. En définissant des hôtes virtuels sur un routeur, vous pouvez gérer les requêtes adressées à plusieurs domaines.

Un hôte virtuel sur Edge définit un protocole (HTTP ou HTTPS), ainsi qu'un port de routeur et un alias d'hôte. L'alias d'hôte est généralement un nom de domaine DNS associé à l'adresse IP d'un routeur.

Par exemple, l'image suivante montre un routeur avec deux définitions d'hôte virtuel:

Dans cet exemple, il y a deux définitions d'hôte virtuel. L'une traite les requêtes HTTPS sur le domaine domainName1, l'autre traite les requêtes HTTP sur domainName2.

Lors d'une requête adressée à un proxy d'API, le routeur compare l'en-tête d'hôte et le numéro de port de la requête entrante à la liste des alias d'hôte définis par tous les hôtes virtuels afin de déterminer quel hôte virtuel gère la requête.

Vous trouverez ci-dessous des exemples de configuration pour les hôtes virtuels:

exemple de configuration vhost

Antimodèle

Définir plusieurs hôtes virtuels avec le même alias d'hôte et le même numéro de port dans des environnements ou des environnements différents ou différents d'une organisation ou d'organisations peut prêter à confusion au moment du routage des requêtes API et peut provoquer des erreurs ou un comportement inattendu.

Utilisons un exemple pour expliquer les implications d’avoir plusieurs hôtes virtuels avec le même alias d’hôte.

Prenons l'exemple de deux hôtes virtuels sandbox and secure définis avec le même alias d'hôte, c'est-à-dire api.company.abc.com dans un environnement:

vhosts avec le même alias

Avec la configuration ci-dessus, deux scénarios sont possibles, comme décrit dans les sections suivantes.

Scénario 1 : Un proxy d'API est configuré pour accepter les requêtes vers un seul des bacs à sable des hôtes virtuels

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

Dans ce scénario, lorsque les applications clientes effectuent des appels vers un proxy d'API spécifique à l'aide de l'alias d'hôte api.company.abc.com, elles obtiennent par intermittence des erreurs 404 avec le message:

Unable to identify proxy for host: secure 

En effet, le routeur envoie les requêtes aux hôtes virtuels sandbox et secure. Lorsque les requêtes sont acheminées vers l'hôte virtuel sandbox, les applications clientes obtiennent une réponse positive. Toutefois, lorsque les requêtes sont acheminées vers l'hôte virtuel secure, les applications clientes reçoivent une erreur 404, car le proxy d'API n'est pas configuré pour accepter les requêtes sur l'hôte virtuel secure.

Scénario 2 : un proxy d'API est configuré pour accepter les requêtes à la fois vers le bac à sable des hôtes virtuels et les requêtes sécurisées

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

Dans ce scénario, lorsque les applications clientes effectuent des appels vers un proxy d'API spécifique à l'aide de l'alias d'hôte api.company.abc.com, elles obtiennent une réponse valide basée sur la logique du proxy.

Toutefois, des données incorrectes sont stockées dans Analytics, car les requêtes API sont acheminées vers les deux hôtes virtuels, alors que les requêtes réelles étaient destinées à être envoyées à un seul hôte virtuel.

Cela peut également affecter les informations de journalisation et toutes les autres données basées sur les hôtes virtuels.

Impact

  1. 404 Erreurs : les requêtes API peuvent être acheminées vers un hôte virtuel sur lequel le proxy d'API peut ne pas être configuré pour accepter les requêtes.
  2. Données Analytics incorrectes, car les requêtes API sont acheminées vers tous les hôtes virtuels ayant le même alias d'hôte, alors que les requêtes n'ont été effectuées que pour un hôte virtuel spécifique.

Bonnes pratiques

  • Ne définissez pas plusieurs hôtes virtuels avec le même alias d'hôte et le même numéro de port dans le même environnement ou dans des environnements différents d'une organisation.
  • S'il est nécessaire de définir plusieurs hôtes virtuels, utilisez des alias d'hôte différents dans chacun des hôtes virtuels, comme indiqué ci-dessous:

    deux vhosts

Complément d'informations