subs_filter
Директива `subs_filter` выполняет подстановку строк в теле ответа на HTTP-запросы.
Описание
Директива 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, иначе директива не сработает для неподдерживаемых типов содержимого.