Módulo WASM#
El módulo central que implementa la funcionalidad básica de WASM en Angie: incluye soporte para cargar entornos de ejecución alternativos y módulos WASM, así como configurar sus características y límites.
Los demás módulos de esta sección amplían esta funcionalidad, permitiéndote configurar y optimizar de forma flexible las capacidades de WASM para diversos escenarios y requisitos.
En nuestros repositorios, el módulo se construye dinámicamente
y está disponible como un paquete independiente llamado Predeterminado — wasm_modules Carga un módulo desde un file del disco y le asigna un identificador único
(parámetro obligatorio). Durante la carga, se realiza una verificación para asegurar que el módulo
pueda ser instanciado. La directiva admite los siguientes parámetros: Permite al huésped acceder a un directorio en el anfitrión.
El parámetro puede especificarse varias veces para distintos directorios. Restringe explícitamente la lista de APIs permitidas para el módulo enumerándolas.
Si el módulo intenta usar APIs no disponibles (no listadas aquí),
se devuelve un error "API not found". Por defecto, todas las APIs están disponibles para el módulo. Controla el ciclo de vida del módulo cargado. En modo En modo Una directiva de nivel superior que proporciona el contexto del archivo de configuración
en el que deben especificarse las directivas WASM.
Puede contener comandos para cargar módulos WASM y configurar parámetros
específicos para un entorno de ejecución concreto.angie-module-wasm
.Ejemplo de Configuración#
# Estas directivas cargan la funcionalidad principal
load_module modules/ngx_wasm_module.so;
load_module modules/ngx_wasm_core_module.so;
load_module modules/ngx_wasmtime_module.so;
# Disponible aquí: https://git.angie.software/web-server/angie-wasm
load_module modules/ngx_http_wasm_host_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";
}
}
}
Directivas#
load#
load
file id=
identifier [fs=
host_path:guest_path]... [api=
api]... [type=
command
| reactor
]fs
api
type
command
, la máquina se ejecuta una vez
y su estado se destruye después de la ejecución.reactor
, la máquina funciona efectivamente de forma indefinida,
permitiendo que el código se ejecute varias veces.
Esto requiere una gestión cuidadosa de la memoria:
si los recursos no se liberan, pueden producirse fugas de memoria.wasm_modules#