端点属性参考文档

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

本主题介绍可以在 TargetEndpoint 和 ProxyEndpoint 配置中设置以控制消息传递和连接行为的传输属性。如需查看 TargetEndpoint 和 ProxyEndpoint 配置的完整说明,请参阅 API 代理配置参考

TargetEndpoint 传输属性

TargetEndpoint 配置中的 HTTPTargetConnection 元素定义了一组 HTTP 传输属性。您可以使用这些属性来设置传输级配置。

这些属性在 TargetEndpoint HTTPTargetConnection 元素中设置,如下所示:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="supports.http10">true</Property>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
    <CommonName>COMMON_NAME_HERE</CommonName>
  </HTTPTargetConnection>
</TargetEndpoint>

TargetEndpoint 传输属性 规范

属性名称 默认值 说明
keepalive.timeout.millis 60000 连接池中目标连接的连接空闲超时。如果池中的连接处于空闲状态的时间超过指定的限制,则连接会被关闭。
connect.timeout.millis

3000

目标连接超时。如果发生连接,Edge 会返回 HTTP 503 状态代码。 会发生超时。在某些情况下,当 LoadBalancer 返回时,系统可能会返回 HTTP 504 状态代码。 是 TargetServer 定义 并且会出现超时

io.timeout.millis 55000

如果在指定的毫秒数内没有数据可供读取,或者在指定的毫秒数内套接字未准备好写入数据,则事务被视为超时。

  • 如果在写入 HTTP 请求时发生超时,则返回 408, Request Timeout
  • 如果在读取 HTTP 响应时发生超时,则返回 504, Gateway Timeout

此值应始终小于虚拟主机的 proxy_read_timeout 属性的值。

该值应小于 用于与消息处理器进行通信的路由器。请参阅配置路由器超时,了解 。

请参阅为 Edge 设置 io.timeout.millis 和 api.timeout

supports.http10 true 如果此值为 true 并且客户端发送 1.0 请求,则也会向目标发送 1.0 请求。否则,将向目标发送 1.1 请求。
supports.http11 true 如果此值为 true 且客户端发送 1.1 请求,则也会向目标发送 1.1 请求,否则将向目标发送 1.0 请求。
use.proxy true 如果设置为 true,并且代理配置在 http.properties 中指定(仅限本地部署),则目标连接设置为使用指定的代理。
use.proxy.tunneling true 如果设置为 true,并且代理配置在 http.properties 中指定(仅限本地部署),则目标连接设置为使用指定的隧道。如果目标使用 TLS/SSL,则该属性会被忽略,并且始终通过隧道发送消息。
enable.method.override false 对于指定的 HTTP 方法,为发送到目标服务的出站请求设置 X-HTTP-Method-Override 标头。例如 <Property name="GET.override.method">POST</Property>
*.override.method 对于指定的 HTTP 方法,为出站请求设置 X-HTTP-Method-Override 标头。例如 <Property name="GET.override.method">POST</Property>
request.streaming.enabled false

默认情况下 (false),HTTP 请求载荷会被读取到缓冲区中,而 可以按预期对载荷工作运行在载荷大于 缓冲区大小 (10 MB),您可以将此 属性设为 true。如果为 true,则 HTTP 请求载荷不会读入缓冲区;它们是 按原样流式传输到目标端点在这种情况下,系统会绕过 TargetEndpoint 请求流中对载荷进行操作的任何政策。另请参阅流式请求和响应

response.streaming.enabled false

默认情况下 (false),HTTP 响应载荷会被读取到缓冲区中,而 可以按预期对载荷工作运行在载荷大于 缓冲区大小 (10 MB),您可以将此 属性设为 true。如果为 true,则 HTTP 响应载荷不会读入缓冲区;它们是 按原样流式传输到 ProxyEndpoint 响应流。在这种情况下,系统会绕过 TargetEndpoint 响应流中对载荷进行操作的任何政策。另请参阅 流式请求和 响应

success.codes 不适用

默认情况下,Apigee Edge 将 HTTP 代码 4XX5XX 视为错误,并处理 HTTP 代码 1XX2XX3XX 作为成功。通过此属性,您可以明确定义成功代码, 例如,2XX, 1XX, 505 会将任何 100200505 HTTP 响应代码视为 成功。

设置此属性会覆盖默认值。因此,如果您想将 HTTP 代码 400 添加到默认成功代码列表中,请将此属性设置为:

&lt;Property name="success.codes">1XX、2XX、3XX、400</Property>

如果您想仅将 HTTP 代码 400 视为成功代码,请将属性设置为:

<Property name="success.codes">400</Property>

将 HTTP 代码 400 设置为唯一的成功代码后,代码 1XX2XX3XX 会 视为失败

compression.algorithm 不适用 默认情况下,Apigee Edge 使用与客户端请求相同的压缩类型将请求转发到目标。例如,如果接收到的客户端请求使用 gzip 压缩,则 Apigee Edge 会使用 gzip 压缩将请求转发给目标。如果从目标收到的响应使用 deflate,则 Apigee Edge 会使用 deflate 将响应转发给客户端。支持的值包括:
  • gzip:始终使用 gzip 压缩发送消息
  • deflate:始终使用 deflate 压缩发送消息
  • none:始终不使用压缩发送消息

另请参阅: Apigee 是否支持通过 GZIP/deflate 压缩进行压缩/解压缩?

request.retain.headers.
enabled
true 默认情况下,Apigee Edge 会始终为出站消息保留所有 HTTP 标头。设置为 true 时,入站请求中的所有 HTTP 标头都会设置在出站请求中。
request.retain.headers 不适用 定义应在向目标服务发送的出站请求中设置的来自请求的特定 HTTP 标头。例如,要“传递”User-Agent 标头,请将 request.retain.headers 的值设置为 User-Agent。以逗号分隔列表的形式指定多个 HTTP 标头,例如 User-Agent,Referer,Accept-Language。此属性会替换 request.retain.headers.enabled。如果 request.retain.headers.enabled 设置为 false,仍然会为出站消息设置 request.retain.headers 属性中指定的任何标头。
response.retain.headers.
enabled
true 默认情况下,Apigee Edge 会始终为出站消息保留所有 HTTP 标头。设置为 true 时,将为出站响应设置来自目标服务的入站响应中的所有 HTTP 标头,然后再将响应传递给 ProxyEndpoint。
response.retain.headers 定义在发送到 ProxyEndpoint 之前,应为出站响应设置的来自响应的特定 HTTP 标头。例如,要传递 Expires 标头,请将 response.retain.headers 的值设置为 Expires。您可将多个 HTTP 标头指定为以逗号分隔的列表, 示例 Expires,Set-Cookie。此属性会替换 response.retain.headers.enabled。如果 response.retain.headers.enabled 设置为 false,任何标头 response.retain.headers 属性中指定的设置在 。
retain.queryparams.
enabled
true 默认情况下,Apigee Edge 会始终为出站请求保留所有查询参数。设置为 true 时,将为向目标服务发出的出站请求设置入站请求中的所有查询参数。
retain.queryparams 不适用 定义要在出站请求中设置的特定查询参数。例如,要包含请求消息中的查询参数 apikey,请将 retain.queryparams 设置为 apikey。以逗号分隔列表的形式指定多个查询参数,例如 apikey,environment。此属性会替换 retain.queryparams.enabled

ProxyEndpoint 传输属性

ProxyEndpoint HTTPTargetConnection 元素定义了一组 HTTP 传输属性。这些属性可用于设置传输级配置。

这些属性在 ProxyEndpoint HTTPProxyConnection 元素中设置,如下所示:

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <BasePath>/v1/weather</BasePath>
    <Properties>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
    <VirtualHost>default</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
</ProxyEndpoint>

如需详细了解虚拟主机,请参阅虚拟主机简介

ProxyEndpoint 传输属性 规范

属性名称 默认值 说明
X-Forwarded-For false 如果设置为 true,虚拟主机的 IP 地址将作为 HTTP X-Forwarded-For 标头的值。
request.streaming.
enabled
false 默认情况下 (false),HTTP 请求载荷会被读入缓冲区,而政策 按预期运行有效负载在载荷大于 缓冲区大小 (10 MB),您可以将此 属性设为 true。如果为 true,则 HTTP 请求载荷不会读入缓冲区;它们是 按原样流式传输到 TargetEndpoint 请求流。在这种情况下,系统会绕过 ProxyEndpoint 请求流中对载荷进行操作的任何政策。另请参阅流式请求和响应
response.streaming.
enabled
false 默认情况下 (false),HTTP 响应载荷会被读取到缓冲区中,而 可以按预期对载荷工作运行在载荷大于 缓冲区大小 (10 MB),您可以将此 属性设为 true。如果为 true,则 HTTP 响应载荷不会读入缓冲区;它们是 按原样流式传输到客户端在这种情况下,系统会绕过 ProxyEndpoint 响应流中对载荷进行操作的任何政策。另请参阅流式请求和响应
compression.algorithm

默认情况下,Apigee Edge 遵循接收的任何消息设置的压缩类型。例如,如果客户端提交使用 gzip 压缩的请求,Apigee Edge 将使用 gzip 压缩将请求转发给目标。您可以通过在 TargetEndpoint 或 ProxyEndpoint 中设置此属性来配置要明确应用的压缩算法。支持的值包括:

  • gzip:始终使用 gzip 压缩发送消息
  • deflate:始终使用 deflate 压缩发送消息
  • none:始终不使用压缩发送消息

另请参阅: Apigee 是否支持通过 GZIP/deflate 压缩进行压缩/解压缩?

api.timeout 不适用

配置单个 API 代理的超时

您可以配置 API 代理(甚至包括启用了流式处理的代理),使其在指定时间后超时并返回 504 Gateway Timeout 状态。主要使用场景是针对拥有 API 代理的客户 需要较长时间才能执行例如,假设您需要特定代理在 3 分钟后超时。以下是您使用 api.timeout 的方式。

  1. 首先,确保将负载平衡器、路由器和消息处理器配置为在 3 分钟后超时。
  2. 然后,将相关代理配置为在 3 分钟后超时。以毫秒为单位指定该值。例如:<Property name="api.timeout">180000</Property>
  3. 但请注意,增加系统超时可能会导致性能问题,因为所有不具有 api.timeout 设置的代理都会使用新的、更长的负载平衡器、路由器和消息处理器超时。因此,请将无需更长超时的其他 API 代理配置为使用较短的超时。例如,以下命令将 API 代理设置为在 1 分钟后超时。
    <Property name="api.timeout">60000</Property>

您无法使用变量设置此属性。

无法修改 Edge 超时的客户也可以配置 API 代理 超时(只要超时短于标准边缘消息处理器) 超时设置为 57 秒。

请参阅为 Edge 设置 io.timeout.millis 和 api.timeout

为 Edge 设置 io.timeout.millis 和 api.timeout

在 Edge 上,io.timeout.millisapi.timeout 的操作 彼此相关。 对于向 API 代理发出的每个请求:

  1. 路由器将其超时值发送给消息处理器。路由器超时值是由处理请求的虚拟主机设置的 proxy_read_timeout 的值,或 57 秒的默认超时值。
  2. 然后,消息处理器会设置 api.timeout
    1. 如果在代理级别设置 api.timeout,请将其设置为路由器超时。
    2. 如果在代理级别设置了 api.timeout,请在消息处理器上将其设置为路由器超时或 api.timeout 的值(以较小值为准)。
  3. api.timeout 的值指定 API 代理从 API 请求到响应的最长执行时间。

    在 API 代理中的每个政策执行完毕后 或是在消息处理器将请求发送到目标端点之前, 消息处理器会计算(api.timeout - 从请求开始算起经过的时间)。 如果值小于零,则表示处理请求的最长时间已到期,并且 消息处理器返回 504

  4. io.timeout.millis 的值指定目标端点进行响应的最长时间。

    在连接到目标端点之前,消息处理器会确定 (api.timeout - 自请求开头起经过的时间)和 io.timeout.millis。 然后将 io.timeout.millis 设置为该值。

    • 如果在写入 HTTP 请求时发生超时,则返回 408, Request Timeout
    • 如果在读取 HTTP 响应时发生超时,则返回 504, Gateway Timeout

关于适用于 Node.js 应用的 ScriptTarget

ScriptTarget 元素用于将 Node.js 应用集成到您的代理中。对于 有关使用 Node.js 和 ScriptTarget 的信息,请参阅:

HostedTarget 端点简介

空的 <HostedTarget/> 标记会告知 Edge 将 Node.js 用作其目标 部署在 Hosted Targets 环境中的应用。有关详情,请参阅 Hosted Targets 概览