sub_filter_once
Директива `sub_filter_once` контролирует, применяется ли замена только один раз в ответе или каждый раз, когда обнаруживается указанная подстрока. — NGINX HTTP Core
Описание
Директива `sub_filter_once` используется в контексте NGINX `http`, `server` или `location` для определения поведения замен подстрок, выполняемых директивой `sub_filter`. Если установлено 'on', замена затрагивает только первое вхождение указанной строки в теле ответа. Напротив, если установлено 'off', `sub_filter` обработает все случаи подстроки, изменяя их в итоговом выводе. Это особенно полезно, когда присутствует несколько одинаковых строк и достаточно одной замены без изменения каждого вхождения — таким образом избегаются непреднамеренные искажения контекста ответа. Эта директива принимает логическое значение ('on' или 'off'). По умолчанию обычно установлено `off`, что означает разрешение множественных замен, если не указано иное. Для работы `sub_filter_once` требуется включение модуля `sub` в NGINX, что критично для корректного функционирования директивы. Дополнительно необходимо правильно настроить `sub_filter`, чтобы заранее определить конкретные подстроки для замены перед применением одиночных или множественных замен в соответствии с настройкой `sub_filter_once`.
Пример конфига
sub_filter 'old_text' 'new_text'; sub_filter_once on;
Убедитесь, что директива sub_filter используется вместе с sub_filter_once; сама по себе она неэффективна.
Имейте в виду, что порядок директив может повлиять на итоговый результат, особенно в сложных телах ответа.
Использование sub_filter_once при высокой нагрузке может повлиять на производительность из-за дополнительных проверок наличия вхождений подстановки.