跳转至

mod_wasmplugin

模块简介

Bfe 支持在 http request/response 的处理流程中引入用户自定义的 wasm插件 (遵循 proxy-wasm 规范, https://github.com/proxy-wasm/spec)。 mod_wasmplugin 负责运行 wasm插件,并根据自定义规则调用 wasm插件。

基础配置

配置描述

模块配置文件: conf/mod_wasm/mod_wasm.conf

配置项 描述
Basic.DataPath String
wasm插件规则配置的文件路径
Basic.WasmPluginPath String
存放wasm插件文件的文件夹路径
Log.OpenDebug Boolean
是否开启 debug 日志
默认值False

配置示例

[Basic]
DataPath = mod_wasm/mod_wasm.data
WasmPluginPath=wasm_plugin/

wasm插件规则配置

配置描述

配置项 描述
Version String
配置文件版本
BeforeLocationRules Object
HandleBeforeLocation 回调点的 wasm插件规则列表
BeforeLocationRules[] Object
wasm插件规则详细信息
BeforeLocationRules[].Cond String
描述匹配请求或连接的条件, 语法详见Condition
BeforeLocationRules[].PluginList Object
条件匹配时执行的wasm插件列表
BeforeLocationRules[].PluginList[] String
wasm插件名
ProductRules Object
各产品线的 wasm插件规则列表
ProductRules{k} String
产品线名称
ProductRules{v} Object
产品线下的 wasm插件规则列表
ProductRules{v}[] Object
wasm插件规则详细信息
ProductRules{v}[].Cond String
描述匹配请求或连接的条件, 语法详见Condition
ProductRules{v}[].PluginList Object
条件匹配时执行的wasm插件列表
ProductRules{v}[].PluginList[] String
wasm插件名
PluginMap Object
wasm插件字典
PluginMap{k} String
wasm插件名
PluginMap{v} Object
wasm插件详细信息
PluginMap{v}.Name String
wasm插件名
PluginMap{v}.WasmVersion String
wasm插件文件版本
PluginMap{v}.ConfVersion String
wasm插件配置文件版本
PluginMap{v}.InstanceNum Integer
wasm插件运行实例数

配置示例

{
    "Version": "20240101000000",
    "BeforeLocationRules": [{
        "Cond": "req_path_prefix_in(\"/headers\", false)",
        "PluginList": [ "headers" ]
    }],
    "ProductRules": {
        "local_product": [{
            "Cond": "default_t()",
            "PluginList": []
        }]
    },
    "PluginMap": {
        "headers": {
            "Name": "headers",
            "WasmVersion": "20240101000000",
            "ConfVersion": "20240101000000",
            "InstanceNum": 20
        }
    }
}

wasm插件文件

对于 PluginMap 中的任意一个 wasm插件(名为PlugName),需要预先准备好以下文件,存放于路径: <WasmPluginPath>/PlugName/ | 文件名 | 描述 | | ------- | -------------------------------------------------------------- | | PlugName.wasm | wasm 文件 | | PlugName.md5 | PlugName.wasm 的 md5 文件 | | PlugName.conf | 插件自定义配置文件 |