caching_type
caching_type
属性允许您定义缓存将在其中操作的模式。
数据类型:枚举的字符串 [resilient, strict, allow, none]
策略对象示例
"name": "caching",
"version": "builtin",
"configuration": {
"caching_type": "allow"
有关如何配置策略的详情,请参考文档中的
创建策略链
部分。
3scale Batcher 策略提供了标准的 APIcast 授权机制的替代方案,其中为 APIcast 接收的每个 API 请求调用 3scale 后端(Service Management API)。
要使用此策略,您必须在策略链中的
3scale Batcher
前放置
3scale
Batcher。
3scale Batcher 策略会缓存授权状态和批处理使用报告,从而显著减少请求数到 3scale 后端。借助 3scale 批处理器策略,您可以通过降低延迟并提高吞吐量来提高 APIcast 性能。
当 3scale Batcher 策略被启用时,APIcast 会使用以下授权流:
在每个请求中,策略检查是否缓存凭证:
如果缓存了凭据,策略将使用缓存的授权状态,而不是调用 3scale 后端。
如果没有缓存凭据,策略会调用后端,并使用可配置的生存时间(TTL)来缓存授权状态。
策略不立即向 3scale 后端报告与请求对应的使用量,而是累计使用计数器将它们报告到批处理中的后端。单独的线程在单个调用中报告 3scale 后端的总用量计数器,具有可配置的频率。
3scale Batcher 策略提高了吞吐量,但准确性较低。使用限制和当前利用率存储在 3scale 中,APIcast 只能在向 3scale 后端发出调用时获取正确的授权状态。启用 3scale Batcher 策略时,在一个时间段内 APIcast 不会发送调用到 3scale。在这个时间窗内,发出调用的应用可能会超过定义的限值。
如果吞吐量比速率限制的准确性更重要,则将此策略用于高负载 API。当报告频率和授权 TTL 低于速率限制周期时,3scale Batcher 策略可以带来更好的准确性。例如,如果限制是每天的,并且报告频率和授权 TTL 被配置为几分钟。
3scale Batcher 策略支持以下配置设置:
auths_ttl
:当授权缓存过期时,以秒为单位设置 TTL。
当缓存当前调用的授权时,APIcast 将使用缓存的值。在
auths_ttl
参数中设置的时间后,APIcast 会移除缓存并调用 3scale 后端来检索授权状态。
将
auths_ttl
参数设置为
0
以外的值。将
auths_ttl
设置为
0
的值可在第一次缓存请求时更新授权计数器,从而导致速率限制无效。
batch_report_seconds
:设置批处理报告 APIcast 发送到 3scale 后端的频率。默认值为
10
秒。
3scale 推荐器策略启用了
推荐过滤器功能
。当服务策略链中启用策略时,APIcast 将 3scale Referencerer 策略的值发送到
Service Management API
,作为向上方
AuthRep
调用。3scale Referencerer 策略的值在调用中的
referrer
参数中发送。
有关
Referrer Filtering
如何工作的更多信息,请参阅
身份验证模式
下的
Referrer Filtering
部分。
4.1.5. Anonymous Access(匿名访问)
匿名访问策略会公开一项服务,无需身份验证。例如,这对无法适应发送身份验证参数的传统应用程序很有用。匿名访问策略只支持使用 API Key 和 App Id / App Key 身份验证选项的服务。当为未提供任何凭证的 API 请求启用策略时,APIcast 将授权调用使用策略中配置的默认凭据。若要授权 API 调用,配置有凭据的应用必须存在并且处于活动状态。
使用 Application Plans,您可以配置用于默认凭证的应用程序的速率限值。
在策略链中同时使用这些策略时,您需要将匿名访问策略放在 APIcast 策略的前面。
以下是策略所需的配置属性:
auth_type
:从以下其中一个备选中选择一个值,并确保属性与为 API 配置的身份验证选项对应:
app_id_and_app_key
:应用程序 ID/应用程序密钥身份验证选项:
user_key
:用于 API 密钥身份验证选项。
app_id
(仅适用于
app_id_and_app_key
身份验证类型):API 调用中未提供任何凭据时将用于授权的应用的 App Id。
app_key
(仅适用于
app_id_and_app_key
身份验证类型):API 调用中不提供任何凭据时将用于授权的应用的 App Key。
user_key
(仅适用于
user_key
auth_type):API 调用中不提供任何凭据时将用于授权的应用的 API 密钥。
您可以使用 Camel 服务策略定义
HTTP 代理
,其中 3scale 流量通过定义的 Apache Camel 代理发送。在这种情况下,Camel 充当反向 HTTP 代理,APIcast 将流量发送到 Camel,然后 Camel 会将流量发送到 API 后端。
以下示例显示了流量流:
发送到 3scale 后端的所有 APIcast 流量都不使用 Camel 代理。此策略仅适用于 Camel 代理以及 APIcast 和 API 后端之间的通信。
如果要通过代理发送所有流量,则必须使用
HTTP_PROXY
环境变量。
Camel 服务策略禁用所有负载平衡策略,流量发送到 Camel 代理。
如果定义了
HTTP_PROXY
、
HTTPS_PROXY
或
ALL_PROXY
参数,此策略将覆盖这些值。
代理连接不支持身份验证。您可以使用标头修改策略进行身份验证。
"policy_chain": [
"name": "apicast.policy.apicast"
"name": "apicast.policy.camel",
"configuration": {
"all_proxy": "http://192.168.15.103:8080/",
"http_proxy": "http://192.168.15.103:8080/",
"https_proxy": "http://192.168.15.103:8443/"
如果未定义 http_proxy 或 https_proxy ,则使用 all_proxy 值。
条件策略与其他 APIcast 策略不同,因为它包含一系列策略。它定义在每个
nginx 阶段
评估的条件,如
访问
、
重写
和
日志
等。当条件为 true 时,条件策略会为其链中包含的每个策略运行该阶段。
APIcast Conditional Policy 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的更多信息,请参阅
技术预览功能支持范围
。
以下示例假定 Conditional Policy 定义以下条件:
请求方法为 POST
。
APIcast --> Caching --> Conditional --> Upstream
Headers
URL Rewriting
在这种情况下,当请求是
POST
时,每个阶段的执行顺序如下:
APIcast
Caching
Headers
URL Rewriting
Upstream
如果没有
POST
请求,每个阶段的执行顺序如下:
APIcast
Caching
Upstream
内容缓存策略允许您根据自定义条件启用和禁用缓存。这些条件只能应用于客户端请求,因为策略中无法使用上游响应。
当内容缓存策略位于策略链中时,APIcast 会在发送上游请求前将
HEAD
请求发送到
GET
请求。如果您不想进行此转换,请不要将内容缓存策略添加到策略链中。
如果发送了 cache-control 标头,它将优先于 APIcast 设定的超时。
如果 Method 是 GET,则以下示例配置将缓存响应。
"name": "apicast.policy.content_caching",
"version": "builtin",
"configuration": {
"rules": [
"cache": true,
"header": "X-Cache-Status-POLICY",
"condition": {
"combine_op": "and",
"operations": [
"left": "{{method}}",
"left_type": "liquid",
"op": "==",
"right": "GET"
支持的配置
-
将以下任一方法的内容缓存策略设置为禁用:
POST
、
PUT
或
DELETE
.
如果一条规则匹配,并且它启用了缓存,则执行将停止并且不会禁用。这里按优先级排序非常重要。
通过允许您指定以下指定来控制 CORS 行为,可通过交叉资源共享(CORS)请求处理策略来控制 CORS:
允许的标头
允许的方法
允许的源标头
允许的凭证
CORS 请求处理策略将阻止所有未指定的 CORS 请求。
当在策略链中使用这两个策略时,您需要将 CORS Request 处理策略放在 APIcast 策略的前面。
|