wasm_postpone_access

`wasm_postpone_access` 指令会延迟在访问阶段执行 WebAssembly 过滤器,直到请求体可用之后。

语法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 过滤器,直到请求体被接收为止。这允许对请求流进行更细粒度的控制,确保特定的访问检查或修改逻辑仅在确有必要时才执行。该指令可以在包括 httpserverlocation 在内的多种上下文中配置。

该指令接受一个参数,通常为布尔值,用以指示是否应应用此延迟。此简化的配置方式使管理员能够在无需深入复杂设置的情况下,通过 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 过滤器的情况下使用此指令,可能会导致不必要的复杂性。

如果默认情况下请求体不可用,并非所有过滤器都能支持相关操作,这可能导致运行时问题。

← 返回所有指令