全局自定义动作

目录结构

|-- global_custom_actions/
  |-- global_custom_actions.yaml
  |-- ...

YAML 文件中可以包含一个或多个全局自定义动作。

配置说明

参数名数据类型是否必选描述
namestring全局自定义动作的名称,也是该动作的唯一标识
conditionsarray触发该动作的条件列表
actionsarray当条件满足时要执行的动作列表

条件 (conditions) 配置

可参考 页面规则 - 条件

动作 (actions) 配置

可参考 页面规则 - 动作

配置示例

- name: global-action-1
  conditions:
  - var: uri
    op: eq
    val: /hello
  actions:
  - limit-req-rate:
      rate_shape_unit: r/s
      rate_reject: 20
      rate_reject_unit: r/s
      error_page_status_code: 429
      reject_action: error_page
      limit_key: uri
      rate_shape: 10
- name: global-action-2
  conditions:
  - var: uri
    op: eq
    val: /bad/request
  actions:
  - exit:
      code: 403
- name: global-action-3
  conditions:
  - var: uri
    op: eq
    val: /el
  actions:
  - user-code:
      el: |-
        {
        true =>
          set-upstream-name("hello $or_global_user_variable_uuid"),
          done;
        }

此配置定义了三个全局自定义动作,每个动作都有特定的条件和要执行的动作。

使用示例

更新配置到 OpenResty Edge 中:

edge-config https://192.168.1.1 -s -t 2051e780-1897-4ea0-92b4-2c2f0169aa94 -l global_custom_actions -i /root/oredge-configs

从 OpenResty Edge 中导出配置:

edge-config -u https://192.168.1.1 -s -t 2051e780-1897-4ea0-92b4-2c2f0169aa94 -E -l global_custom_actions

示例中均使用 -l global_custom_actions 来指定只导入/导出全局自定义动作相关的配置。

注意事项

  1. 全局自定义动作是一个全局配置,为了保持与多个本地配置的兼容性,在更新配置时不会执行删除操作。

  2. 每个全局自定义动作必须有一个唯一的名称。

  3. 动作配置必须是有效的动作类型和相应的配置参数。

  4. 在更新配置时,工具会比较新旧配置来确定是否需要更新。如果配置有变化,则会执行更新操作。

  5. 在导入配置时,工具会先检查配置的有效性,然后再执行添加或更新操作。

  6. 在导出配置时,工具会格式化 YAML 内容,特别是对于 user-code 动作中的 el 字段。

相关文档