proxy_wasm
`proxy_wasm` 指令将 WebAssembly 模块集成到 NGINX 的请求处理管道中。
Proxy-Wasm support for Nginx powered by wasmtime
·
httpserverlocation
语法proxy_wasm module_name [phase];
默认值none
上下文http, server, location
参数1-2
说明
proxy_wasm 指令允许开发者指定一个 WebAssembly (WASM) 模块,该模块将在 NGINX 的 HTTP 请求和响应处理阶段作为一部分执行。 这种集成通过 Proxy-Wasm ABI 实现,该 ABI 规范了 WASM 过滤器与 NGINX 底层服务器架构交互的方式。通过实现 WASM 模块,用户可以以高性能的方式扩展 NGINX 的功能,添加如认证、日志记录或请求修改等自定义处理逻辑,而无需修改 NGINX 的核心代码库。
proxy_wasm 指令可以接受一个或两个参数。第一个参数是要执行的 WASM 模块的名称,第二个参数(可选)可用于指定调用该模块的执行阶段。如果未提供阶段,则默认为 default 阶段。该设计提供了灵活性,允许开发者根据特定的应用需求自定义请求处理。WASM 模块的生命周期由 NGINX 严格控制,确保模块在每个 worker 进程中只加载一次,从而优化资源使用。
此外,将该指令与诸如 wasm_call 之类的其他配置结合使用,可以提高 WebAssembly 组件在 NGINX 配置中的模块化和可重用性。
配置示例
http {
server {
listen 9000;
location / {
proxy_wasm my_custom_filter;
proxy_pass http://upstream;
}
}
}⚠
确保指定的 WASM 模块路径已正确定义并可被 NGINX 进程访问。
⚠
检查 WASM 模块与所使用的 NGINX 版本的兼容性。
⚠
确保 WASM 模块运行的阶段适合预期的处理逻辑。