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