Módulo WASM#
O módulo principal que implementa a funcionalidade básica do WASM no Angie: inclui suporte para carregamento de runtimes alternativos e módulos WASM, bem como configuração de seus recursos e limites.
Os outros módulos nesta seção estendem essa funcionalidade, permitindo que você configure e otimize flexivelmente as capacidades do WASM para vários cenários e requisitos.
Em nossos repositórios, o módulo é construído dinamicamente
e está disponível como um pacote separado chamado Padrão — wasm_modules Carrega um módulo de um arquivo no disco e atribui a ele um identificador
único (parâmetro obrigatório). Durante o carregamento, ocorre verificação para
garantir que o módulo possa ser instanciado. A diretiva suporta os seguintes parâmetros: Permite que o guest acesse um diretório no host.
O parâmetro pode ser especificado múltiplas vezes para diferentes diretórios. Restringe explicitamente a lista de APIs permitidas para o módulo listando-as.
Se o módulo tentar usar APIs indisponíveis (não listadas aqui),
um erro "API not found" é retornado. Por padrão, todas as APIs estão disponíveis para o módulo. Controla o ciclo de vida do módulo carregado. No modo No modo Uma diretiva de nível superior que fornece o contexto do arquivo de configuração
no qual as diretivas WASM devem ser especificadas.
Pode conter comandos para carregar módulos WASM e configurar parâmetros
específicos para um runtime particular.angie-module-wasm
.Exemplo de Configuração#
# Essas diretivas carregam a funcionalidade principal
load_module modules/ngx_wasm_module.so;
load_module modules/ngx_wasm_core_module.so;
load_module modules/ngx_wasmtime_module.so;
# Disponível aqui: 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";
}
}
}
Diretivas#
load#
load
arquivo id=
identificador [fs=
caminho_host:caminho_guest]... [api=
api]... [type=
command
| reactor
]fs
api
type
command
, a máquina executa uma vez
e seu estado é destruído após a execução.reactor
, a máquina efetivamente roda indefinidamente,
permitindo que o código seja executado múltiplas vezes.
Isso requer gerenciamento cuidadoso de memória:
se os recursos não forem liberados, vazamentos de memória podem ocorrer.wasm_modules#