eval_subrequest_in_memory
指令 `eval_subrequest_in_memory` 决定经评估的子请求的响应是存储在内存中还是直接流式传输到客户端。
Evaluate memcached or proxy response into a variable
·
httpserverlocation
语法eval_subrequest_in_memory on | off;
默认值off
上下文http, server, location
参数flag
说明
指令 eval_subrequest_in_memory 用于 NGINX 服务器配置中处理子请求(在使用 evaluate 模块时)。当设置为 'on' 时,指示 NGINX 将子请求响应的内容完全保存在内存中,使其在同一请求上下文中可供后续处理。对于需要根据子请求结果对响应进行操作或有条件呈现的场景,这尤其有用。
当该指令设置为 'off' 时,NGINX 不会将整个响应存入内存。相反,它会在接收到数据块时将这些数据直接传递给客户端。这种行为可能会降低内存使用,但可能限制在将子请求数据发送给客户端之前可执行的操作。
该指令在 HTTP 上下文中调用,包括 global、server 和 location 配置,允许基于特定路由或条件对响应处理进行细粒度控制。该标志的类型为整数,使用二进制值(0 或 1)表示是否启用内存中行为。
配置示例
location /example {
eval_subrequest_in_memory on;
eval $result {
proxy_pass http://backend;
}
if ($result ~ 'some_condition') {
return 200 'Success';
}
return 404 'Not Found';
}⚠
如果响应超过定义的缓冲区大小,不将大型响应存储在内存中可能会导致意想不到的行为。
⚠
将此指令与过滤模块一起使用可能需要小心安排模块配置的顺序,以确保期望的输出按预期正确流动。
⚠
在服务器内存不足的情况下将此指令设置为 'on' 会因内存使用增加而导致显著的性能下降。