頁面規則

目錄結構

|-- page_rules/
  |-- 001-core-rules.yaml
  |-- 002-other-rules.yaml
  |-- ...

在一個 YAML 配置檔案中,您可以定義多個頁面規則。

引數說明

引數名資料型別是否必選說明
enable_rulebool規則的啟用狀態(啟用或禁用)
conditionsarray規則生效的前置條件集合
actionsdict規則觸發後的動作
wafdictWeb 應用防火牆(WAF)配置
cachedict快取相關配置
contentdict規則命中後將返回指定的內容
proxydict規則命中後將會把請求代理到指定上游
lastbool是否在當前規則匹配後停止處理後續規則

請注意 contentproxy 不應該在同一條頁面規則中使用。

更多引數的詳細說明和使用示例,請參考以下文件:

配置示例

- 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_name1app_upstream_name2,並施行快取策略,快取的鍵由請求頭中的 customid 和查詢字串組成,快取的預設生存時間(TTL)設定為 300 分鐘。

在第二條頁面規則中,當 URI 等於 /file1 時,直接返回靜態檔案 dir1/setup.sh 的檔案內容。