頁面規則
目錄結構
|-- 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
的檔案內容。