subs_filter

Директива `subs_filter` выполняет подстановку строк в теле ответа на HTTP-запросы.

Синтаксисsubs_filter source_str destination_str [gior];
По умолчаниюnone
Контекстhttp, server, location
Аргументы2+

Описание

Директива subs_filter в NGINX String Substitutions Module позволяет задавать требуемые подстановки непосредственно в теле ответа перед отправкой клиенту. Она поддерживает как замены фиксированных строк, так и замены по регулярным выражениям. Базовое использование предполагает определение исходной строки и строки-замены, где исходная представляет текст, который будет найден и заменён в ответе. Дополнительно директива принимает флаги, изменяющие её поведение; например, 'g' означает заменять все вхождения исходной строки, 'i' делает совпадение нечувствительным к регистру, а 'o' ограничивает подстановку первым вхождением. Флаг 'r' указывает, что исходная строка является регулярным выражением, а не фиксированной строкой, хотя при этом обработка переменных более ограничена по сравнению с режимом фиксированной строки.

Пользователи могут использовать несколько директив subs_filter в одном контексте, что позволяет реализовывать сложные сценарии подстановки. Важно учитывать, что subs_filter работает с не сжатыми текстовыми ответами, поскольку не может обрабатывать сжатый вывод. Для корректной работы необходимо указать соответствующие типы содержимого с помощью директивы subs_filter_types. В целом эта директива предоставляет значительную гибкость при изменении HTTP-ответов, аналогично возможностям, присутствующим в Apache mod_substitute module.

Пример конфига

location / {
    subs_filter_types text/html text/css;
    subs_filter st(\d*).example.com $1.example.com ir;
    subs_filter a.example.com s.example.com;
    subs_filter http://$host https://$host;
}

Убедитесь, что исходная строка в регулярных выражениях не содержит переменных, поскольку они доступны только в режиме фиксированной строки.

Подстановки не будут работать с сжатыми ответами, если явно не настроить, чтобы вывод не сжимался.

Проверьте, что соответствующие типы MIME настроены в subs_filter_types, иначе директива не сработает для неподдерживаемых типов содержимого.

← Ко всем директивам