WASM 模块#
此核心模块在 Angie 中实现了基本的 WASM 功能:包括支持加载替代运行时和 WASM 模块,以及配置它们的功能和限制。
本节中的其他模块扩展了此功能,使您能够灵活地配置和优化 WASM 功能,以满足各种场景和需求。
在我们的代码库中,该模块是 动态构建的,并作为单独的软件包提供,名为 angie-module-wasm
。
配置示例#
# 这些指令加载核心功能
load_module modules/ngx_wasm_module.so;
load_module modules/ngx_wasm_core_module.so;
load_module modules/ngx_wasmtime_module.so;
# 可在此处获得:https://git.angie.software/web-server/angie-wasm
load_module modules/ngx_http_wasm_host_module.so;
load_module modules/ngx_http_wasm_content_module.so;
load_module modules/ngx_http_wasm_vars_module.so;
events {
}
wasm_modules {
#use wasmtime;
load ngx_http_handler.wasm id=handler;
load ngx_http_vars.wasm id=vars type=reactor;
}
http {
wasm_var vars "ngx:wasi/var-utils#sum-entry" $rvar $arg_a $arg_b $arg_c $arg_d;
server {
listen *:8080;
location / {
return 200 "sum('$arg_a','$arg_b','$arg_c','$arg_d')=$rvar\n";
}
location /wasm {
client_max_body_size 20M;
wasm_content handler "ngx:wasi/http-handler-entry#handle-request";
}
}
}
指令#
load#
|
|
默认 |
— |
wasm_modules |
从磁盘 file 加载模块并为其分配一个 id (必需)。在加载过程中,模块会被验证以确保可以实例化。
该指令具有以下参数:
|
允许来宾访问主机上的目录。可以为不同的目录多次指定。 |
|
启用模块可用 API 的白名单模式,并指定这些 API。 如果模块尝试使用受限 API(即此处未列出),将返回“找不到 API”错误。 默认情况下,模块可以访问所有 API。 |
|
控制加载模块的生命周期。
|
wasm_modules#
一个顶级块指令,提供配置文件上下文,其中应指定 WASM 指令。它可以包含加载 WASM 模块和配置特定运行时设置的指令。