sub_filter_once

`sub_filter_once` 指令控制是否在每个响应中仅应用一次替换,还是在每次找到指定子字符串时都应用替换。 — NGINX HTTP Core

sub_filter_once
httpserverlocation
语法sub_filter_once on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数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 可能会因为为检测替换出现所做的额外检查而带来性能影响。