substitutions: Модуль строковых замен для nginx
Установка в Debian/Ubuntu
Эти документы применимы к пакету APT nginx-module-substitutions, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте репозиторий APT, как описано в настройке репозитория APT.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-substitutions
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|--------------------|-------------|----------------|
| debian | bookworm | main | amd64, arm64 |
| debian | bookworm-mainline | main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| debian | trixie-mainline | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | focal-mainline | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | jammy-mainline | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
| ubuntu | noble-mainline | main | amd64, arm64 |
nginx_substitutions_filter Примечание: этот модуль не распространяется вместе с исходным кодом Nginx. Инструкции по установке можно найти ниже.
Описание nginx_substitutions_filter — это фильтровый модуль, который может выполнять как регулярные выражения, так и фиксированные строковые замены в телах ответов. Этот модуль значительно отличается от родного модуля замены Nginx. Он сканирует выходные буферы цепей и сравнивает строки построчно, так же как модуль substitute в Apache (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
-
Теперь некорректный ответ будет работать
-
добавлена директива 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 Вейбин Яо yaoweibin@gmail.com.
Все права защищены.
Распространение и использование в исходных и двоичных формах, с изменениями или без, разрешено при условии выполнения следующих условий:
* Распространение исходного кода должно сохранять вышеуказанные авторские
права, этот список условий и следующий отказ от ответственности.
* Распространение в бинарной форме должно воспроизводить вышеуказанные авторские
права, этот список условий и следующий отказ от ответственности в
документации и/или других материалах, прилагаемых к распространению.
ЭТО ПОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ ГАРАНТИЙ ИЛИ УСЛОВИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ ТОРГОВЛИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. В НИКАКОМ СЛУЧАЕ АВТОРСКИЕ ПРАВА ИЛИ УЧАСТНИКИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, ОСОБЫЕ, ПРИМЕРНЫЕ ИЛИ ПОСЛЕДУЮЩИЕ УЩЕРБЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОКУПКА ЗАМЕНЯЮЩИХ ТОВАРОВ И УСЛУГ; УТЕРЮ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРЕРВАНИЕ ДЕЯТЕЛЬНОСТИ) ЛЮБЫМ СПОСОБОМ И ПО ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, БУДЬ ТО В ДОМЕНЕ ДОГОВОРА, СТРОГОЙ ОТВЕТСТВЕННОСТИ ИЛИ ДЕЛИКТЕ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ОПУЩЕНИЯМИ ИЛИ ИНЫМИ УКРЫТИЯМИ), ВОЗНИКАЮЩИХ ЛЮБЫМ ОБРАЗОМ ИЗ ИСПОЛЬЗОВАНИЯ ЭТОГО ПО, ДАЖЕ ЕСЛИ БЫЛИ ПРЕДУПРЕЖДЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.