eval_buffer_size
eval_buffer_size 指令设置 NGINX 的 eval 模块用于捕获响应正文的最大缓冲区大小,从而在进行代理或 memcached 响应时可以控制数据存储。
Evaluate memcached or proxy response into a variable
·
httpserverlocation
语法eval_buffer_size size;
默认值4k
上下文http, server, location
参数1
说明
eval_buffer_size 指令配置 NGINX eval 模块用于捕获来自配置中发起的子请求响应正文的缓冲区最大大小。应用此指令时,它限制被缓冲数据的大小,确保大于指定限制的响应会被截断。由于数据通常存储在内存中,这有助于在处理可能很大的响应时有效管理内存使用。
此指令在从后端服务或缓存获取响应并将其存储在变量中以便进一步处理或条件检查的场景中特别有用。通过定义合适的缓冲区大小,管理员可以在防止过度内存消耗的同时优化性能。该指令可在 http、server 或 location 上下文中指定,这使得根据需要灵活配置成为可能。如果未设置此指令,默认行为是使用默认缓冲区大小 4k。
应谨慎选择缓冲区大小,以适应预期的响应大小而不导致不必要的内存使用,超过限制的响应将无法被完整捕获,这可能在使用捕获的变量值进行评估和检查时导致数据丢失。
配置示例
location = /example {
eval_buffer_size 2k;
eval $response {
proxy_pass http://backend;
}
# Further processing can occur here using the $response variable.
}⚠
将缓冲区大小设置得太小可能导致响应被截断,如果捕获的响应超过此大小,会导致重要数据丢失。
⚠
更改 eval_buffer_size 可能需要重新加载 NGINX 服务器才能生效,具体取决于其使用的上下文。