У меня есть nginx в качестве сервера reverse_proxy для нескольких приложений, работающих на разных серверах приложений. Я хочу вызвать конкретный html / script в ответ для заданных предварительно зарегистрированных URL-адресов. Эти URL-адреса могут принадлежать любому приложению, стоящему за nginx. Для этого я использую sub_filter для всех URL-адресов, и он работает нормально. Но когда я пытаюсь поместить «sub_filter» в блок «IF», он теперь позволяет.
Мне нужно что-то вроде ниже.
resolver 8.8.8.8;
proxy_pass http://www.example.com;
proxy_set_header Accept-Encoding *;
gunzip on;
if ( $induceScript = 1) {
sub_filter "</body>" "<div class='induced' <font color=red size=8>Induced Text </font></div></body>";
sub_filter_types *;
sub_filter_once off;
}
Когда я пытаюсь перезапустить nginx, отображается следующее сообщение об ошибке.
nginx: [emerg] "sub_filter" directive is not allowed here in /etc/openresty/openresty.conf
Из этого, если я правильно понимаю, директива "IF" не позволяет использовать "sub_fiter" внутри нее. Для этого существовала какая-то конкретная причина? Также укажите правильный / альтернативный способ решения этой проблемы.