wasm_postpone_access
`wasm_postpone_access` 指令会延迟在访问阶段执行 WebAssembly 过滤器,直到请求体可用之后。
Proxy-Wasm support for Nginx powered by wasmtime
·
httpserverlocation
语法wasm_postpone_access on | off;
默认值off
上下文http, server, location
参数1
说明
wasm_postpone_access 指令是 ngx_wasm 模块的一部分,该模块使 NGINX 能够在其处理阶段内直接运行 WebAssembly (Wasm) 代码。通过使用此指令,NGINX 服务器可以优化那些在应用由 Wasm 模块定义的特定应用级逻辑之前需要访问 HTTP 请求体的请求。这在需要验证依赖于请求体的数据格式或内容的用例中尤其有用,因为典型的访问阶段操作可能无法获得这些数据。
设置后,wasm_postpone_access 会告诉 NGINX 延迟执行已配置的 Wasm 过滤器,直到请求体被接收为止。这允许对请求流进行更细粒度的控制,确保特定的访问检查或修改逻辑仅在确有必要时才执行。该指令可以在包括 http、server 或 location 在内的多种上下文中配置。
该指令接受一个参数,通常为布尔值,用以指示是否应应用此延迟。此简化的配置方式使管理员能够在无需深入复杂设置的情况下,通过 Wasm 功能增强 NGINX 配置并轻松上手。
配置示例
http {
server {
listen 80;
location / {
wasm_postpone_access on;
proxy_wasm my_filter;
proxy_pass http://backend;
}
}
}⚠
确保指令的正确顺序;wasm_postpone_access 必须在相同上下文中位于任何 proxy_wasm 指令之前定义。
⚠
在没有相应需要请求体的 Wasm 过滤器的情况下使用此指令,可能会导致不必要的复杂性。
⚠
如果默认情况下请求体不可用,并非所有过滤器都能支持相关操作,这可能导致运行时问题。