<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 |
|
目标连接超时。如果发生连接,Edge 会返回 HTTP |
io.timeout.millis |
55000 |
如果在指定的毫秒数内没有数据可供读取,或者在指定的毫秒数内套接字未准备好写入数据,则事务被视为超时。
此值应始终小于虚拟主机的 proxy_read_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 |
默认情况下 ( |
response.streaming.enabled |
false |
默认情况下 ( |
success.codes |
不适用 |
默认情况下,Apigee Edge 将 HTTP 代码 设置此属性会覆盖默认值。因此,如果您想将 HTTP 代码 <Property name="success.codes">1XX、2XX、3XX、400</Property> 如果您想仅将 HTTP 代码 <Property name="success.codes">400</Property> 将 HTTP 代码 |
compression.algorithm |
不适用 |
默认情况下,Apigee Edge 使用与客户端请求相同的压缩类型将请求转发到目标。例如,如果接收到的客户端请求使用 gzip 压缩,则 Apigee Edge 会使用 gzip 压缩将请求转发给目标。如果从目标收到的响应使用 deflate,则 Apigee Edge 会使用 deflate 将响应转发给客户端。支持的值包括:
|
request.retain.headers. |
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. |
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. |
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. |
false |
默认情况下 (false ),HTTP 请求载荷会被读入缓冲区,而政策
按预期运行有效负载在载荷大于
缓冲区大小 (10 MB),您可以将此
属性设为 true 。如果为 true ,则 HTTP 请求载荷不会读入缓冲区;它们是
按原样流式传输到 TargetEndpoint 请求流。在这种情况下,系统会绕过 ProxyEndpoint 请求流中对载荷进行操作的任何政策。另请参阅流式请求和响应。 |
response.streaming. |
false |
默认情况下 (false ),HTTP 响应载荷会被读取到缓冲区中,而
可以按预期对载荷工作运行在载荷大于
缓冲区大小 (10 MB),您可以将此
属性设为 true 。如果为 true ,则 HTTP 响应载荷不会读入缓冲区;它们是
按原样流式传输到客户端在这种情况下,系统会绕过 ProxyEndpoint 响应流中对载荷进行操作的任何政策。另请参阅流式请求和响应。 |
compression.algorithm |
无 |
默认情况下,Apigee Edge 遵循接收的任何消息设置的压缩类型。例如,如果客户端提交使用 gzip 压缩的请求,Apigee Edge 将使用 gzip 压缩将请求转发给目标。您可以通过在 TargetEndpoint 或 ProxyEndpoint 中设置此属性来配置要明确应用的压缩算法。支持的值包括:
|
api.timeout |
不适用 |
配置单个 API 代理的超时 您可以配置 API 代理(甚至包括启用了流式处理的代理),使其在指定时间后超时并返回
您无法使用变量设置此属性。 无法修改 Edge 超时的客户也可以配置 API 代理 超时(只要超时短于标准边缘消息处理器) 超时设置为 57 秒。 |
为 Edge 设置 io.timeout.millis 和 api.timeout
在 Edge 上,io.timeout.millis
和 api.timeout
的操作
彼此相关。
对于向 API 代理发出的每个请求:
- 路由器将其超时值发送给消息处理器。路由器超时值是由处理请求的虚拟主机设置的
proxy_read_timeout
的值,或 57 秒的默认超时值。 - 然后,消息处理器会设置
api.timeout
:- 如果未在代理级别设置
api.timeout
,请将其设置为路由器超时。 - 如果在代理级别设置了
api.timeout
,请在消息处理器上将其设置为路由器超时或api.timeout
的值(以较小值为准)。
- 如果未在代理级别设置
api.timeout
的值指定 API 代理从 API 请求到响应的最长执行时间。在 API 代理中的每个政策执行完毕后 或是在消息处理器将请求发送到目标端点之前, 消息处理器会计算(
api.timeout
- 从请求开始算起经过的时间)。 如果值小于零,则表示处理请求的最长时间已到期,并且 消息处理器返回504
。io.timeout.millis
的值指定目标端点进行响应的最长时间。在连接到目标端点之前,消息处理器会确定 (
api.timeout
- 自请求开头起经过的时间)和io.timeout.millis
。 然后将io.timeout.millis
设置为该值。- 如果在写入 HTTP 请求时发生超时,则返回
408, Request Timeout
。 - 如果在读取 HTTP 响应时发生超时,则返回
504, Gateway Timeout
。
- 如果在写入 HTTP 请求时发生超时,则返回
关于适用于 Node.js 应用的 ScriptTarget
ScriptTarget 元素用于将 Node.js 应用集成到您的代理中。对于 有关使用 Node.js 和 ScriptTarget 的信息,请参阅:
- <ph type="x-smartling-placeholder"></ph> 使用 ScriptTarget 指定 Node.js 目标
- <ph type="x-smartling-placeholder"></ph> 高级 ScriptTarget 配置
HostedTarget 端点简介
空的 <HostedTarget/>
标记会告知 Edge 将 Node.js 用作其目标
部署在 Hosted Targets 环境中的应用。有关详情,请参阅
Hosted Targets 概览。