Configurer le proxy de transfert pour les proxys d'API

Les proxys de transfert fournissent un point unique par lequel plusieurs machines envoient des requêtes à un serveur externe. Ils peuvent appliquer des règles de sécurité, enregistrer et analyser les requêtes et effectuer d'autres actions afin que les requêtes respectent vos règles métier.

En utilisant un proxy inverse dans Apigee hybrid, vous pouvez intercepter et gérer tout le trafic sortant de votre cluster Kubernetes. Cela inclut les requêtes de proxy d'API vers les points de terminaison cibles et la communication avec *.googleapis.com que l'environnement d'exécution hybride établit pour son pipeline de débogage et d'analyse, ainsi que pour les règles telles que MessageLogging et les règles d'IA (comme SanitizeUserPrompt et SemanticCacheLookup).

Pour utiliser un proxy de transfert HTTP entre hybrid et le TargetEndpoint, vous devez configurer les paramètres de proxy sortant dans votre fichier de remplacement. Ces propriétés spécifiques à l'environnement acheminent les requêtes cibles d'hybrid vers le proxy de transfert HTTP. Vous devez également vous assurer que use.proxy est défini sur "true" pour tout TargetEndpoint que vous souhaitez faire passer par un proxy de transfert HTTP. Pour obtenir des instructions, consultez le bas de la page.

Pour configurer un environnement hybride pour le proxy de transfert, ajoutez la propriété envs.httpProxy à votre fichier de remplacement et appliquez celui-ci au cluster. Exemple :

envs:
  - name: test
    httpProxy:
      scheme: HTTP
      host: 10.12.0.47
      port: 3128
      ...

Pour en savoir plus sur chacune des propriétés de configuration envs.httpProxy, consultez la documentation de référence sur les propriétés de configuration.

Le proxy de transfert est configuré pour un environnement. Tout le trafic allant des proxys d'API de cet environnement vers des cibles en backend passe par le proxy de transfert HTTP spécifié. Si le trafic destiné à une cible spécifique d'un proxy d'API doit accéder directement à la cible en backend, en contournant le proxy de transfert, définissez la propriété suivante dans le TargetEndpoint pour remplacer le proxy de transfert HTTP :

<Property name="use.proxy">false</Property>

Pour en savoir plus sur la définition des propriétés TargetEndpoint, y compris sur la configuration de la connexion au point de terminaison cible, consultez la documentation de référence sur les propriétés des points de terminaison.

Définissez use.proxy sur "true" pour tout TargetEndpoint que vous souhaitez faire passer par un proxy de transfert HTTP :

<Property name="use.proxy">true</Property>

Si vous disposez d'un pare-feu sur le backend qui est configuré pour que l'en-tête Host inclue toujours le nom d'hôte du serveur backend, tandis que le processeur de messages envoie le nom d'hôte du serveur proxy, procédez comme suit pour configurer cette option :

Définissez la propriété use.proxy.host.header.with.target.uri sur "true" dans TargetEndpoint, comme indiqué dans l'exemple suivant :

Exemple de configuration TargetEndpoint :

  <TargetEndpoint name="default">
    <HTTPTargetConnection>
      <URL>https://mocktarget.apigee.net/json</URL>
      <Properties>
        <Property name="use.proxy.host.header.with.target.uri">true</Property>
      </Properties>
    </HTTPTargetConnection>
  </TargetEndpoint>

Pour en savoir plus sur la propriété use.proxy.host.header.with.target.uri, consultez la documentation de référence sur les propriétés des points de terminaison.

Règles d'IA et proxy inverse

Les règles Model Armor (SanitizeUserPrompt et SanitizeModelResponse) et les règles de cache sémantique (SemanticCacheLookup et SemanticCachePopulate) effectuent des appels sortants lors du traitement des requêtes et des réponses. Il s'agit, entre autres, des appels de désinfection Model Armor, ainsi que des appels d'embeddings textuels, de recherche vectorielle findNeighbors et upsertDatapoints d'Agent Platform.

Lorsqu'un proxy de transfert est configuré pour l'environnement avec envs.httpProxy, tous les appels ci-dessus sont routés par défaut via le proxy de transfert, sans qu'aucune configuration au niveau des règles ne soit requise. Ce comportement s'applique même aux points de terminaison qui ne sont pas sous *.googleapis.com, comme le point de terminaison Vector Search public appelé par SemanticCacheLookup.

Ces appels de règles vers des services externes sont traités de la même manière que le trafic de trace et d'analyse du runtime : si vous définissez envs[].managementCallsSkipProxy sur true, ils ignorent le proxy inverse et sortent directement. L'ignorance du proxy inverse s'applique à tous les appels listés ci-dessus (c'est-à-dire la désinfection, les embeddings de texte, findNeighbors et upsertDatapoints). Ce comportement de proxy inverse au niveau du proxy est distinct d'un TargetEndpoint, dont le comportement de proxy inverse est contrôlé par sa propre propriété use.proxy.