subs_filter invalid variable name
Maxim Dounin
mdounin at mdounin.ru
Thu Jul 19 12:35:13 UTC 2012
Hello!
On Wed, Jul 18, 2012 at 05:43:22AM -0400, InventOR wrote:
> есть такая подстановка:
>
> subs_filter '</body>' '<script
> type=\"text/javascript\">\n$(\"body\").attr(\"onclick\",
> \"location=\'http://yandex.ru\'\");\n</script>\n</body>';
>
> ругается "nginx: [emerg] invalid variable name in
> конфиг:строка"
> убираю символ $ - все работает. пробовал
> экранировать - не помогает. если же
> заменить на \x24 - код не работает.
>
> Если кто-то сталкивался - подскажите
> как захардкодить данное решение.
> (Вынести во внешний скрипт и подгружать
> его не предлагать)
Это известный баг. В тех местах, где nginx пытается раскрывать
перменные, использовать $ сейчас нельзя. В качестве workaround'а
можно воспользоваться любым из имеющихся способов установить
переменную без раскрытия переменных в устанавливаемом значении,
e.g. должно сработать с помощью map так:
map $pid $bodytext {
default '<script type=\"text/javascript\">\n$(\"body\").attr(\"onclick\", \"location=\'http://yandex.ru\'\");\n</script>\n</body>';
}
subs_filter '</body>' $bodytext;
Maxim Dounin
Подробная информация о списке рассылки nginx-ru