À propos des hôtes virtuels

Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X.
info

Dans Edge, un routeur gère tout le trafic entrant de l'API. Cela signifie que toutes les requêtes HTTP et HTTPS adressées à un proxy d'API sont d'abord traitées par un routeur Edge.

Un hôte virtuel vous permet d'héberger plusieurs noms de domaine sur un serveur. Pour Edge, le serveur correspond à un routeur Edge. En définissant plusieurs hôtes virtuels sur un routeur, celui-ci peut gérer les requêtes API adressées à plusieurs noms de domaine.

Un hôte virtuel sur Edge définit le protocole d'accès (HTTP ou HTTPS), un port de routeur ouvert et un alias d'hôte. L'alias d'hôte est généralement le nom de domaine DNS correspondant à l'adresse IP du routeur.

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

Le premier hôte virtuel gère les requêtes HTTPS sur le domaine domainName1 et le second gère les requêtes HTTP sur domainName2.

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

À propos des définitions d'hôte virtuel

Les hôtes virtuels contiennent les informations suivantes:

  • Nom interne de l'hôte virtuel. Vous utilisez ce nom pour référencer l'hôte virtuel dans vos proxys d'API et lors de la configuration de l'hôte virtuel.
  • L'alias d'hôte de l'hôte virtuel. En règle générale, l'alias d'hôte est le nom de domaine DNS mappé à l'adresse IP du routeur. L'en-tête Host d'une requête de proxy d'API doit contenir l'alias d'hôte de l'hôte virtuel.
  • Un port ouvert sur le routeur.
  • Indique si le protocole TLS (accès HTTPS) est activé ou non (accès HTTP).

Par exemple, vous spécifiez les informations suivantes lorsque vous créez un hôte virtuel:

  • name = myvhost
  • alias de l'hôte = apis.acme.com
  • port = 443
  • TLS activé

Sur la base du paramètre ci-dessus pour l'hôte virtuel, une requête adressée à un proxy d'API utilise le formulaire suivant:

https://apis.acme.com/{proxy-base-path}/{resource-path}

où :

  • {proxy-base-path} est défini lorsque vous créez un proxy d'API et est unique pour chaque proxy d'API. Par exemple :
    https://apis.acme.com/characters
  • {resource-path} est le chemin d'accès à une ressource accessible via le proxy d'API. Par exemple :
    https://apis.acme.com/characters/coyote
    https://apis.acme.com/characters/roadrunner

À propos des hôtes virtuels dans Edge for the Cloud

Chaque organisation Edge comprend automatiquement deux environnements (test et prod), deux hôtes virtuels dans chaque environnement (par défaut et sécurisé) et des enregistrements DNS pour chaque alias d'hôte.

L'alias d'hôte de chaque hôte virtuel fourni par Apigee contient le nom de l'organisation et de l'environnement, comme indiqué dans le tableau suivant:

Environment Nom d'hôte virtuel Alias d'hôte Port TLS activé
production par défaut {org-name}-prod.apigee.net 80 Non
sécurisé {org-name}-prod.apigee.net 443 Oui
test par défaut {org-name}-test.apigee.net 80 Non
sécurisé {org-name}-test.apigee.net 443 Oui

Par exemple, le nom de domaine par défaut d'une organisation appelée "myorg" dans l'environnement prod est "myorg-prod.apigee.net". Par conséquent, pour accéder à un proxy d'API de cette organisation, vous devez utiliser une URL au format suivant:

http://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}
https://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}

Forfaits payants Apigee:un nom de domaine contenant "apigee.net" n'est peut-être pas ce que vous souhaitez exposer à vos clients. Vous pouvez utiliser une entrée DNS et un enregistrement CNAME pour mapper un nom de domaine à votre organisation dans Edge. Vous devez également créer un hôte virtuel dont l'alias d'hôte est défini sur ce nom de domaine. Les développeurs peuvent ainsi accéder à votre API via un domaine spécifique à votre entreprise.

Voici un exemple de domaine personnalisé dans Edge:

https://apis.acme.com/{proxy-base-path}/{resource-path}

À propos des hôtes virtuels sur Edge pour le cloud privé

Lorsque vous installez Apigee Edge pour Private Cloud, aucune organisation, environnement ni hôte virtuel par défaut n'est créé pour vous. Une fois le processus d'installation d'Edge terminé, votre première action consiste généralement à créer une organisation, un environnement et un hôte virtuel via le processus d'intégration.

Pour effectuer l'intégration, exécutez la commande suivante sur le nœud du serveur de gestion Edge:

/opt/apigee/apigee-service/bin/apigee-service apigee-provision setup-org -f configFile

configFile contient les informations nécessaires pour créer un utilisateur, une organisation, un environnement et un hôte virtuel.

Par exemple, vous pouvez créer les éléments suivants:

  • Un utilisateur de votre choix pour occuper le rôle d'administrateur de l'organisation
  • Une organisation nommée example
  • Un environnement de l'organisation nommé prod
  • Un hôte virtuel dans l'environnement nommé default qui autorise l'accès HTTP sur le port 9001
  • Alias d'hôte du nom DNS utilisé pour accéder au routeur, ou adresse IP du routeur et port de l'hôte virtuel au format IP:9001.

Vous pouvez ensuite ajouter un nombre illimité d'organisations, d'environnements et d'hôtes virtuels à votre version sur site d'Edge. Pour en savoir plus, consultez les pages suivantes :

Les hôtes virtuels sont ouverts sur le routeur Edge. Par conséquent, vous devez vous assurer que le port que vous spécifiez pour l'hôte virtuel est ouvert sur le routeur. Vous pouvez utiliser une commande sous la forme ci-dessous pour ouvrir un port:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT --verbose

Après avoir exécuté cette commande, vous pouvez accéder à vos API à l'aide d'une URL de la forme suivante:

http://<router-ip>:9001/{proxy-base-path}/{resource-path}

En règle générale, vous ne publiez pas vos API auprès des clients avec une adresse IP et un numéro de port. Vous devez plutôt définir une entrée DNS pour le routeur et le port. Exemple :

http://myAPI.myCo.com/{proxy-base-path}/{resource-path}

Lorsque vous définissez l'entrée DNS, vous devez également créer un hôte virtuel avec un alias d'hôte correspondant au nom de domaine de l'entrée DNS. Dans l'exemple ci-dessus, vous devez spécifier un alias d'hôte de myAPI.myCo.com lorsque vous créez l'hôte virtuel.

À propos des alias d'hôte et des noms DNS

L'une des propriétés que vous définissez pour un hôte virtuel est l'alias d'hôte. L'alias d'hôte correspond généralement au nom DNS de l'hôte virtuel. La manière dont vous définissez l'alias d'hôte dépend de votre type d'installation Edge: cloud ou cloud privé.

Alias d'hôte et noms DNS dans Edge pour le cloud

Dans Edge pour le cloud, lorsque vous créez une organisation Edge pour la première fois, Apigee crée automatiquement deux environnements (test et prod), deux hôtes virtuels dans chaque environnement (par défaut et sécurisé), ainsi que des enregistrements DNS pour chaque hôte virtuel.

L'alias d'hôte des hôtes virtuels contient le nom de l'organisation et de l'environnement. Par conséquent, une requête via un hôte virtuel a le format suivant:

  • http://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}
  • https://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}
  • http://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}
  • https://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}

En règle générale, vous devez créer des hôtes virtuels qui utilisent votre nom de domaine plutôt que le domaine apigee.net par défaut. Pour ce faire, vous devez d'abord créer votre propre entrée DNS et votre propre enregistrement CNAME.

La figure suivante montre une configuration type de la manière dont Edge traite une requête API:

Dans cet exemple :

  • api.acme.com est le nom de domaine souhaité.
  • Vous définissez une entrée DNS et un enregistrement CNAME pour faire pointer api.acme.com vers acme-prod.apigee.net.
  • La requête contient l'en-tête Host que le routeur utilise pour déterminer l'hôte virtuel qui gère la requête.

Dans cet exemple, vous spécifiez les informations suivantes dans une définition d'hôte virtuel:

  • name = myvhost
  • alias de l'hôte = apis.acme.com
  • port = 443
  • Activer l'accès TLS

Pour en savoir plus, consultez la section Configurer des hôtes virtuels pour le cloud.

Alias d'hôte et noms DNS dans Edge pour Private Cloud

Comme avec Edge pour le cloud, vous créez des hôtes virtuels qui utilisent votre propre nom de domaine pour l'alias d'hôte. Vous créez ensuite votre propre entrée DNS et votre propre enregistrement CNAME pour accéder à ces hôtes virtuels.

L'une des différences entre Cloud et Cloud privé est que, dans Cloud, Apigee crée automatiquement des noms DNS pour vos organisations, sous la forme suivante:

  • name=default: http://{org-name}-{env-name}.apigee.net (port 80 du routeur)
  • name=secure (sécurisé) : https://{org-name}-{env-name}.apigee.net (port du routeur 443)

Dans Edge pour le cloud privé, vous devez créer les entrées DNS pour l'adresse IP et le port de votre routeur.

Par exemple, vous spécifiez ces informations dans une définition d'hôte virtuel:

  • name = myvhost
  • alias hôte = apis.acme.com
  • port = 9001
  • Activer l'accès TLS

La figure suivante montre une configuration typique de la manière dont Edge traite une requête API:

Dans cet exemple :

  • api.acme.com est le nom de domaine souhaité.
  • Vous devez définir une entrée DNS et un enregistrement CNAME pour faire pointer api.acme.com vers l'adresse IP et le port du routeur.
  • La requête contient l'en-tête Host que le routeur utilise pour déterminer l'hôte virtuel qui gère la requête.

Pour en savoir plus, consultez la section Configurer des hôtes virtuels pour le cloud privé.

Alias d'hôte et caractères génériques

Vous pouvez inclure le caractère générique * dans l'alias d'hôte. Le caractère générique "*" ne peut se trouver qu'au début (avant le premier ".") de l'alias d'hôte et ne peut pas être mélangé avec d'autres caractères.

Voici un exemple d'alias d'hôte valide utilisant un caractère générique:

*.example.com

Les exemples suivants ne sont pas valides:

  www.*.example.com
  w*.example.com

L'utilisation d'un caractère générique dans un alias d'hôte virtuel permet aux proxys d'API de gérer les appels adressés à plusieurs sous-domaines tels que alpha.example.com, beta.example.com ou live.example.com. L'utilisation d'un alias générique vous permet également d'utiliser moins d'hôtes virtuels par environnement pour respecter les limites du produit, car un hôte virtuel avec un caractère générique ne compte que pour un seul hôte virtuel.

Le certificat TLS de l'hôte virtuel doit comporter un caractère générique correspondant dans le nom commun du certificat. Par exemple, *.example.com.

À propos des propriétés d'hôte virtuel

Dans Edge, un hôte virtuel est représenté par un objet XML. Par exemple, l'objet XML suivant définit un hôte virtuel:

<VirtualHost name="vhostName">
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <!-- Private Cloud only -->
        <Interface>interfaceName</Interface>
    <Port>portNumber</Port>
    <BaseURL>http://myCo.com<</BaseUrl>
    <OCSPStapling>off</OCSPStapling>
    <RetryOptions/>
   <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
    </SSLInfo>
    <Properties>
        <Property name="proxy_read_timeout">timeout</Property>
        <Property name="keepalive_timeout">timeout</Property>
        <Property name="proxy_request_buffering">onOff</Property>
        <Property name="proxy_buffering">onOff</Property>
        <Property name="ssl_protocols">protocolList</Property>
        <Property name="ssl_ciphers">cipherList</Property>
    </Properties>
</VirtualHost>

La liste des propriétés que vous pouvez définir varie selon que vous utilisez Edge pour le cloud ou Edge pour le cloud privé. Si vous utilisez Edge pour le cloud privé, la liste des propriétés disponibles dépend également de votre version d'Edge. Pour obtenir une description complète de toutes les propriétés d'un hôte virtuel, consultez la documentation de référence sur les propriétés de l'hôte virtuel.

Pour en savoir plus sur la création d'hôtes virtuels pour votre version spécifique d'Edge, consultez les pages suivantes: