sub_filter
Директива sub_filter используется для изменения тела ответа путем подстановки одних строк другими. — NGINX HTTP Core
Описание
Директива sub_filter позволяет динамически заменять строки в теле ответа HTTP-трафика, обслуживаемого NGINX. Это может быть особенно полезно для изменения содержимого на лету, например, адаптации ссылок или текста в зависимости от окружения или для целей локализации. Директива принимает два параметра: первый — это строка, которую необходимо найти в теле ответа, а второй — строка, которой её заменить. Каждый раз, когда NGINX обрабатывает ответ, он сканирует вывод на предмет вхождений указанной строки поиска и заменяет их на указанную строку замены перед отправкой ответа клиенту. Важно отметить, что директива sub_filter работает только если размер тела ответа меньше настроенного размера буфера и когда код ответа находится в диапазоне 200-299. Кроме того, директива поддерживает регулярные выражения для сопоставления строк, если директива 'sub_filter_types' правильно настроена. Это может помочь реализовать более сложные замен, но необходимо соблюдать осторожность и убедиться, что шаблоны регулярных выражений правильно экранированы и составлены, чтобы избежать непреднамеренных совпадений или ухудшения производительности из-за чрезмерного бэктрекинга в сложных шаблонах.
Пример конфига
location /example {
sub_filter "example.com" "example.org";
sub_filter_once off;
}Убедитесь, что директива 'sub_filter_types' включает MIME-типы ответов, в которых необходимы подстановки, иначе директива может работать не так, как ожидается.
Подстановка происходит только если Content-Type ответа соответствует тем, что указаны в 'sub_filter_types', и код статуса ответа находится в диапазоне 200-299.
Если используются регулярные выражения, убедитесь, что шаблоны правильно сформатированы, чтобы избежать некорректных совпадений.