将 API 代理连接到一起

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

您可以指定一个代理是另一个代理的目标端点,从而有效连接代理链中的两个代理。以这种方式链接代理可以帮助您避免网络跃点,从而提升整体性能。

使用代理链时,您指定一个代理是另一个代理的本地目标端点。使用 LocalTargetConnection 元素来调用第二个代理,而不是使用 HTTPTargetConnection 元素。

<LocalTargetConnection>
    <APIProxy>myproxy2</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

当您有一个代理提供了一些其他代理将使用的离散的低级功能时,您可能会发现代理链很有用。例如,使用后端数据存储公开创建/读取/更新/删除操作的代理可以是将数据公开给客户端的多个其他代理的目标代理。

视频:观看一个短视频,详细了解 API 代理链。

代理链的工作原理

代理链使用本地连接来最大程度地减少从另一个代理调用一个代理时的网络开销。此本地连接效率更高,因为它绕过了负载均衡器、路由器和消息处理器等网络功能。

下面说明了使用 HTTPTargetConnectionLocalTargetConnection(代理链接)连接代理之间的区别:

您可以通过指定一个代理是另一个的本地目标端点来连接代理。您可以通过以下两种方式在代理之间创建本地连接:

  • 通过指定目标代理的名称和 ProxyEndpoint 名称
  • 通过指定目标代理端点的路径

使用 LocalTargetConnection 元素在 TargetEndpoint 配置中连接目标代理,如下所述。

通过代理名称连接代理

您可以按名称指定目标代理。从一开始创建连接并一起开发代理时,您可能会发现这是最有用的。如果您不知道名称(或者名称可能发生变化),请考虑连接目标代理的端点路径,如下所述。

按名称连接到目标代理时,您需要指定代理的名称和其 ProxyEndpoint 名称。

以下示例指定了名为 data-manager 的目标代理,以及 data-manager 公开的 ProxyEndpoint 名称。如需了解参考信息,请参阅 API 代理配置参考

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

按路径连接代理

您可以通过其端点路径指定目标代理。当您不知道代理名称或名称可能更改时,您可能希望以这种方式进行操作。

如果您的代理只是目标代理的使用方(例如,当您不同时开发这两者时),路径可能是最可靠的连接方式。例如,如果您连接的代理由其他团队开发和维护,您可能需要使用可靠的端点路径进行连接。

以下示例在 /v1/streetcarts/foodcarts/data-manager 指定一个目标代理,假定主机与当前代理相同。如需了解参考信息,请参阅 API 代理配置参考

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

使用管理控制台连接代理

您可以使用 Edge 管理控制台创建代理链连接。

  1. 打开将使用目标代理的代理。
  2. Navigator 中,点击 Target Endpoints 旁边的加号。
  3. New Target Endpoint 对话框中,输入目标端点的名称。
  4. Target Endpoint Name 框下,选择以下选项之一:
    • 代理链接,以便从组织和环境中已有的代理列表中进行选择。
      1. 代理名称下拉列表中,选择目标代理。
      2. 代理端点框中,输入您要连接到的目标代理端点路径。
    • 路径链:输入目标代理基本路径,例如 /mypath/myproxy/myendpoint
  5. 点击添加

链接的代理、API 产品和安全

当两个代理都位于同一 API 产品中时,代理链是最佳选择。默认情况下,客户端可以使用这两个代理。Apigee 目前不支持在客户端无权访问的单独 API 产品中绑定第二个代理。

如果必须确保第二个代理不受直接客户端请求的影响,请考虑添加逻辑,让第二个代理检查客户端的 IP 地址。在通过链进行调用的情况下,IP 地址将为本地地址。您的代码可以先验证它是否为本地代码,然后再继续处理。如需了解执行此操作的一种方法,请参阅访问权限控制政策