页面规则
目录结构
|-- page_rules/
|-- 001-core-rules.yaml
|-- 002-other-rules.yaml
|-- ...
在一个 YAML 配置文件中,您可以定义多个页面规则。
参数说明
参数名 | 数据类型 | 是否必选 | 说明 |
---|---|---|---|
enable_rule | bool | 是 | 规则的启用状态(启用或禁用) |
conditions | array | 否 | 规则生效的前置条件集合 |
actions | dict | 否 | 规则触发后的动作 |
waf | dict | 否 | Web 应用防火墙(WAF)配置 |
cache | dict | 否 | 缓存相关配置 |
content | dict | 否 | 规则命中后将返回指定的内容 |
proxy | dict | 否 | 规则命中后将会把请求代理到指定上游 |
last | bool | 否 | 是否在当前规则匹配后停止处理后续规则 |
请注意 content
和 proxy
不应该在同一条页面规则中使用。
更多参数的详细说明和使用示例,请参考以下文档:
配置示例
- enable_rule: true
conditions:
- var: uri
op: eq
vals:
- /hello
waf:
rule_sets:
- scanner_detection
- protocol_enforcement
- application_attack_xss
- application_attack_sqli
sensitivity: medium
action: "403 Forbidden"
cross_requests: false
actions:
set-proxy-uri:
uri: /hello/world
cache:
cache_key:
- name: req-header
args: customid
- name: 'query-string'
enforce_cache: true
default_ttls:
- ttl_unit: min
status: 200
ttl: 300
proxy:
retries: -1
upstream:
- cluster_type: http
cluster_name: app_upstream_name1
- cluster_type: http
cluster_name: app_upstream_name2
balancer:
algorithm: roundrobin
upstream_el_code: ''
connect_timeout: 6
sticky:
enable: true
mode: none
ttl: 1
key: Edge-Sticky
level: upstream
retry_condition:
- error
- timeout
- invalid_header
- http_500
- http_502
- http_504
send_timeout: 6
read_timeout: 6
- enable_rule: true
order: 8
conditions:
- var: uri
op: prefix
val: /file1
content:
type: file
file: dir1/setup.sh
在第一条页面规则中,当 URI
等于 /hello
时,将触发规则:启动 WAF 规则集,设置代理 URI 为 /hello/world
,然后上游服务器为该 HTTP 应用内的 app_upstream_name1
和 app_upstream_name2
,并施行缓存策略,缓存的键由请求头中的 customid
和查询字符串组成,缓存的默认生存时间(TTL)设置为 300 分钟。
在第二条页面规则中,当 URI
等于 /file1
时,直接返回静态文件 dir1/setup.sh
的文件内容。