substitutions: Модуль строковых замен для nginx
Установка
Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-substitutions
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-substitutions
Включите модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:
load_module modules/ngx_http_subs_filter_module.so;
Этот документ описывает nginx-module-substitutions v0.6.6, выпущенный 30 декабря 2021 года.
nginx_substitutions_filter Примечание: этот модуль не распространяется вместе с исходным кодом Nginx. Инструкции по установке можно найти ниже.
Описание nginx_substitutions_filter — это фильтрующий модуль, который может выполнять как регулярные выражения, так и фиксированные строковые замены в телах ответов. Этот модуль значительно отличается от родного модуля замены Nginx. Он сканирует буфер выходных цепочек и сопоставляет строки построчно, как это делает модуль Apache mod_substitute (http://httpd.apache.org/docs/trunk/mod/mod_substitute.html).
Пример location / {
subs_filter_types text/html text/css text/xml;
subs_filter st(\d*).example.com $1.example.com ir;
subs_filter a.example.com s.example.com;
subs_filter http://$host https://$host;
}
Директивы * subs_filter_types
* subs_filter
subs_filter_types синтаксис: *subs_filter_types mime-type [mime-types] *
по умолчанию: *subs_filter_types text/html*
контекст: *http, server, location*
*subs_filter_types* используется для указания, какие типы контента должны проверяться на наличие *subs_filter*, в дополнение к *text/html*. По умолчанию это только *text/html*.
Этот модуль работает только с обычным текстом. Если ответ сжат, он не может разжать ответ и проигнорирует его. Этот модуль может быть совместим с модулем фильтрации gzip. Но он не будет работать с сжатыми ответами прокси. Вы можете отключить сжатый ответ следующим образом:
proxy_set_header Accept-Encoding "";
subs_filter синтаксис: *subs_filter source_str destination_str [gior] *
по умолчанию: *нет*
контекст: *http, server, location*
*subs_filter* позволяет заменять исходную строку (регулярное выражение или фиксированную) в ответе nginx на целевую строку. Переменные в сопоставляемом тексте доступны только в режиме фиксированной строки, что означает, что сопоставляемый текст не может содержать переменные, если это регулярное выражение. Текст замены может содержать переменные. Поддерживается более одного правила замены на местоположение. Значение третьего флага:
* *g* (по умолчанию): Заменить все совпадающие строки.
* *i*: Выполнить нечувствительное к регистру сопоставление.
* *o*: Заменить только первое совпадение.
* *r*: Шаблон рассматривается как регулярное выражение, по умолчанию — фиксированная строка.
subs_filter_bypass синтаксис: subs_filter_bypass $variable1 ...
по умолчанию: *нет*
контекст: *http, server, location*
Вы можете указать несколько переменных с помощью этой директивы. Если хотя бы одна из переменных не пуста и не равна '0', этот фильтр замены будет отключен.
Установка Чтобы установить, получите исходный код с помощью subversion:
git clone
git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
а затем скомпилируйте nginx с помощью следующей опции:
./configure --add-module=/path/to/module
Известная проблема * Невозможно заменить заголовок ответа.
ИЗМЕНЕНИЯ Изменения в nginx_substitutions_filter 0.6.4 2014-02-15
* Теперь не-200 ответ будет работать
* добавлена директива subs_filter_bypass
Изменения в nginx_substitutions_filter 0.6.2 2012-08-26
* исправлена ошибка перекрытия буфера
* исправлена ошибка с последним нулевым буфером
Изменения в nginx_substitutions_filter 0.6.0 2012-06-30
* рефакторинг этого модуля
Изменения в nginx_substitutions_filter 0.5.2 2010-08-11
* проведена оптимизация этого модуля
* исправлена ошибка перекрытия буфера
* исправлена ошибка сегментации, когда выходная цепочка возвращает NGX_AGAIN.
* исправлена ошибка с последним буфером без перевода строки. Это может вызвать ошибку сегментации. Спасибо Йозефу Фрёле
Изменения в nginx_substitutions_filter 0.5 2010-04-15
* рефакторинг структуры исходного кода, создание веток разработки
* исправлена ошибка с небольшими кусками буферов, вызывающими потерю контента
* исправлена ошибка с last_buf и совместимостью nginx выше 0.8.25
* исправлена ошибка с нежелательной конфигурацией захвата в фиксированной строке
* добавлена функция захвата регулярных выражений
Изменения в nginx_substitutions_filter 0.4 2009-12-23
* исправлено множество ошибок
Изменения в nginx_substitutions_filter 0.3 2009-02-04
* Первоначальный публичный релиз
Сообщение об ошибке Вопросы/патчи можно направлять Вэйбину Яо, yaoweibin@gmail.com.
Авторские права и лицензия Этот модуль лицензирован под лицензией BSD.
Авторские права (C) 2014 Вэйбин Яо <[email protected]>.
Все права защищены.
Распространение и использование в исходной и двоичной формах, с изменениями или без, разрешены при условии выполнения следующих условий:
*
Распространение исходного кода должно сохранять вышеуказанное уведомление об авторских правах,
этот список условий и следующий отказ от ответственности.
*
Распространение в двоичной форме должно воспроизводить вышеуказанное уведомление об авторских правах,
этот список условий и следующий отказ от ответственности в документации и/или других материалах, предоставляемых с дистрибутивом.
ЭТО ПОКОЛЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ДЕРЖАТЕЛЯМИ АВТОРСКИХ ПРАВ И УЧАСТНИКАМИ "КАК ЕСТЬ" И ЛЮБЫЕ ЯВНЫЕ ИЛИ НЕЯВНЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, НЕЯВНЫМИ ГАРАНТИЯМИ ТОРГОВОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, ОТКЛОНЯЮТСЯ. В НИКАКОМ СЛУЧАЕ ДЕРЖАТЕЛЬ АВТОРСКИХ ПРАВ ИЛИ УЧАСТНИКИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, ОСОБЫЕ, ПРИМЕРНЫЕ ИЛИ ПОСЛЕДСТВЕННЫЕ УЩЕРБЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ЗАКУПКУ ЗАМЕНЯЮЩИХ ТОВАРОВ И УСЛУГ; ПОТЕРЮ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРЕРВАНИЕ БИЗНЕСА) ЛЮБЫМ ОБРАЗОМ И ПО ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, БУДЬ ТО В ДОГОВОРЕ, СТРОГОЙ ОТВЕТСТВЕННОСТИ ИЛИ ДЕЛИКТЕ (ВКЛЮЧАЯ НЕДОБРОСОВЕСТНОСТЬ ИЛИ ИНЫЕ) В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ЭТОГО ПО, ДАЖЕ ЕСЛИ БЫЛИ УВЕДОМЛЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-substitutions.