Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Puede especificar que un proxy sea el endpoint de destino de otro, lo que conectará los dos proxies en una cadena de proxies. Encadenar proxies de esta forma puede ayudarte a evitar un salto de red y, por lo tanto, mejorar el rendimiento general.
Con el encadenamiento de proxies, se especifica que un proxy es el endpoint de destino local del otro.
En lugar de usar el elemento HTTPTargetConnection
para llamar al segundo proxy, usa el elemento LocalTargetConnection
.
<LocalTargetConnection> <APIProxy>myproxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
Puede que te resulte útil encadenar proxies cuando tengas un proxy que ofrezca alguna función discreta de bajo nivel que otros proxies puedan usar. Por ejemplo, un proxy que exponga operaciones de creación, lectura, actualización y eliminación con un almacén de datos backend podría ser el proxy de destino de varios proxies que expongan los datos a los clientes.
Vídeo: consulta un breve vídeo para obtener más información sobre el encadenamiento de proxies de API.
Cómo funciona el encadenamiento de proxies
El encadenamiento de proxies usa una conexión local para minimizar la sobrecarga de la red al llamar a un proxy desde otro. Esta conexión local es más eficiente porque evita las funciones de red, como los balanceadores de carga, los routers y los procesadores de mensajes.
A continuación, se muestra la diferencia entre conectar proxies con
HTTPTargetConnection
y LocalTargetConnection
(encadenamiento de proxies):
Para conectar proxies, especifica que uno es el endpoint de destino local del otro. En la configuración del diagrama anterior (llamada de proxy a proxy con encadenamiento de proxies), especificarías que ProxyB (/proxyB) es un endpoint de destino local de ProxyA (/proxyA). De esta forma, las solicitudes que lleguen a ProxyA se reenviarán a ProxyB.
Puedes crear una conexión local entre proxies de dos formas:
- Especificando el nombre del proxy de destino y el nombre de un ProxyEndpoint
- Especificando una ruta al endpoint del proxy de destino
Para conectar proxies de destino en una configuración TargetEndpoint
LocalTargetConnection
, usa un elemento TargetEndpoint
LocalTargetConnection
, como se describe a continuación.
Conectar proxies por nombre de proxy
Puede especificar el proxy de destino por nombre. Puede que te resulte más útil cuando crees la conexión desde el principio y desarrolles los proxies al mismo tiempo. Si no conoces el nombre (o el nombre puede cambiar), considera la posibilidad de conectarte con la ruta del endpoint del proxy de destino, tal como se describe más abajo.
Cuando te conectas a un proxy de destino por nombre, especificas el nombre del proxy y el nombre de su ProxyEndpoint
.
En el siguiente ejemplo se especifica un proxy de destino llamado data-manager
, junto con el nombre ProxyEndpoint
expuesto por data-manager
. Para obtener información de referencia, consulta la referencia de configuración de proxies de APIs.
<TargetEndpoint name="datamanager"> <PreFlow name="PreFlow"> <!-- PreFlow policies --> </PreFlow> <PostFlow name="PostFlow"> <!-- PostFlow policies --> </PostFlow> <LocalTargetConnection> <APIProxy>data-manager</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection> </TargetEndpoint>
Conectar proxies por ruta
Puede especificar el proxy de destino por su ruta de endpoint. Puede que quieras hacerlo de esta forma cuando no sepas el nombre del proxy o cuando el nombre pueda cambiar.
Si tu proxy es simplemente el consumidor del proxy de destino (por ejemplo, cuando no desarrollas ambos), la ruta puede ser la forma más fiable de conectarse. Por ejemplo, si el proxy al que te conectas lo ha desarrollado y lo mantiene otro equipo, puede que quieras conectarte mediante una ruta de endpoint fiable.
En el siguiente ejemplo se especifica un proxy de destino en /v1/streetcarts/foodcarts/data-manager
, donde se supone que el host es el mismo que el del proxy actual. Para obtener información de referencia, consulta la referencia de configuración de proxies de APIs.
<TargetEndpoint name="datamanager"> <PreFlow name="PreFlow"> <!-- PreFlow policies --> </PreFlow> <PostFlow name="PostFlow"> <!-- PostFlow policies --> </PostFlow> <LocalTargetConnection> <Path>/v1/streetcarts/foodcarts/data-manager</Path> </LocalTargetConnection> </TargetEndpoint>
El elemento <Path>
de <LocalTargetConnection>
puede ser una cadena o puede usar una plantilla de mensaje para asignar un valor de forma dinámica.
Conectar proxies mediante la interfaz de usuario de Apigee
También puedes conectar proxies, ya sea por nombre o por ruta, mediante la interfaz de usuario de Apigee. En el siguiente ejemplo, hay dos proxies (ProxyA y ProxyB) y quieres que ProxyB sea un punto de conexión de destino de ProxyA. Para conectar los proxies por nombre de proxy, sigue estos pasos:
- Ve a la lista de proxies.
- Inicia sesión en la interfaz de usuario de Apigee.
- En el panel de la izquierda, selecciona Desarrollar > Proxies.
- En la lista de proxies, selecciona ProxyA.
- Haz clic en la pestaña Desarrollar.
- En el panel Código, sustituye la sección
<TargetEndpoint>
del XML por lo siguiente:<TargetEndpoint> <LocalTargetConnection> <APIProxy>ProxyB</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection> </TargetEndpoint>
- Haz clic en Guardar.
Apigee en la consola de Cloud
En la Google Cloud consola, ve a la página Desarrollo de proxy > Proxies de API.
UI clásica de Apigee
Proxies encadenados, productos de API y seguridad
La creación de cadenas de proxies es la mejor opción cuando ambos proxies están en el mismo producto de API. De forma predeterminada, ambos están disponibles para los clientes. Actualmente, Apigee no admite la agrupación del segundo proxy en un producto de API independiente al que los clientes no deberían tener acceso.
Si tu segundo proxy debe estar protegido frente a las solicitudes directas de los clientes, considera la posibilidad de añadir lógica para que tu segundo proxy examine la dirección IP del cliente. En el caso de una llamada realizada con encadenamiento, la dirección IP será local. Tu código puede validar que es local antes de permitir que se siga procesando. Consulta la política AccessControl para ver una de las formas de hacerlo.