Global rules
描述
Global Rule 为传入请求配置 Plugin,不依赖于绑定到 Route、Service、Consumer 或 Plugin Config 的插件配置。限流和可观测性插件通常会全局启用,以便为所有 API 提供一致的行为。
同一阶段内的 Global Rule Plugin 会先于局部绑定的 Plugin 执行。完整顺序为:全局 rewrite、局部 rewrite、全局 access、局部 access。因此,全局 access 处理函数不会先于局部 rewrite 处理函数执行。优先级只对同一阶段和作用域内的 Plugin 进行排序;如果某个处理函数提前返回响应,后续处理函数将不会执行。详情请参见插件执行顺序。
使用示例
以下示例展示了如何为所有请求启用 limit-count 插件:
NOTE
您可以这样从 config.yaml 中获取 admin_key 并存入环境变量:
admin_key=$(yq '.deployment.admin.admin_key[0].key' conf/config.yaml | sed 's/"//g')curl http://127.0.0.1:9180/apisix/admin/global_rules/1 -X PUT \
-H 'Content-Type: application/json' \
-H "X-API-KEY: $admin_key" \
-d '{
"plugins": {
"limit-count": {
"time_window": 60,
"policy": "local",
"count": 2,
"key": "remote_addr",
"rejected_code": 503
}
}
}'
你也可以通过以下命令查看所有的全局规则:
curl http://127.0.0.1:9180/apisix/admin/global_rules -H "X-API-KEY: $admin_key"