sub_filter_once
`sub_filter_once` 指令控制是否在每个响应中仅应用一次替换,还是在每次找到指定子字符串时都应用替换。
NGINX HTTP Core
·
httpserverlocation
语法sub_filter_once on | off;
默认值off
上下文http, server, location
参数flag
说明
sub_filter_once 指令在 NGINX 的 http、server 或 location 上下文中使用,用于决定由 sub_filter 指令执行的子字符串替换的行为。当设置为 on 时,替换只会应用于响应正文中被指定字符串的第一次出现。相反,如果设置为 off,sub_filter 会处理该子字符串的所有实例,并在编译输出中对它们进行修改。这在处理存在多个相同字符串且只需一次替换而不想修改每个实例的场景中特别有用——从而避免对响应上下文造成意外更改。
该指令接受布尔值('on' 或 'off')。默认情况下通常设置为 off,即允许进行多次替换,除非另行指定。要启用 sub_filter_once,需要在 NGINX 中启用 sub 模块,这是该指令正常工作的关键。另一个需要注意的点是,还必须配置 sub_filter 以明确标识要替换的特定子字符串,然后再根据 sub_filter_once 的设置应用单次或多次替换。
配置示例
sub_filter 'old_text' 'new_text'; sub_filter_once on;
⚠
确保将 sub_filter 指令与 sub_filter_once 一起使用;单独使用时无效。
⚠
请注意,指令的顺序可能会影响最终输出,尤其是在复杂的响应体中。
⚠
在高流量场景中使用 sub_filter_once 可能会因为为检测替换出现所做的额外检查而带来性能影响。