ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: if нужен.


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: if нужен.
  • From: Валентин Бартенев <ne@xxxxxxxx>
  • Date: Wed, 15 Aug 2012 23:14:21 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=vbart.ru; s=mail; h=Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:In-Reply-To:References:Date:Subject:To:From; bh=9xT8PcKLdn+FeIF7xC6w1dj06/2QG+TdWAdrrEUOhLc=; b=gCDv8HqCVZQCx/LIcu/3YOtI69MvDrTqlXz24d1PtEaIudJqs9GhB3SA5LfGNZNnMVTF3UEL7a6eqqL007O5i2nEprkILH1acNGP1wvZfTE/y7zfiJI+qbG50g6fdNMniz2fQhIwPFilCPlBU5N1EK16ThHuYOuHO6ksagc9IXoON+Nq1lMiLDKOzVOpeOozK1OQ2YadZnZmA7NPE3h/1iM5274bmSSgK5hsBsB9Pvcw5ORVDicmpMtFYQs8lbtJaYgjBc/KutDDNxSW2IbVzxsRGT1EbSYNpqcmG1u16bIvkMT2Qle1deTXqfRoN4NBTEgZbAdj/747+1Xn+F0Ehg==;
  • In-reply-to: <49892572.20120815230114@softsearch.ru>
  • References: <321535191.20120815000520@softsearch.ru> <201208152037.05768.ne@vbart.ru> <49892572.20120815230114@softsearch.ru>

On Wednesday 15 August 2012 23:01:14 Михаил Монашёв wrote:
[...]
> Если в него вставить строчки
> 
> set $foo 'attachment; filename="$sitename$filename"';
> add_header Content-Disposition $disposition;
> 
> ,  то  в  $1  и $2 заносится мусор из map-ов, которые используются для
> расчёта переменных $foo, $sitename и $filename . Причём не важно, выше
> или  ниже  proxy_pass  написать  эти  строчки.  Это  как  бы совсем не
> очевидно  и  при  большом  конфиге  можно  долго искать причины такого
> поведения.
> 
> По  хорошему  у  $1  и  $2  могла  бы  быть область видимости, хотя их
> глобальность  тоже  чем-то  полезна.  Не  могу  придумать, как было бы
> правильно,  но  сейчас как-то не очень правильно. В том же перле, если
> $1 используется в одной функции, то мне не надо думать, что она затрёт
> $1  в  вызвавшей функции или сама затрётся функцией, которую вызывает.
> 
> Городить  именованные переменные в регэкспах конечно можно, но всё это
> костыли  какие-то  и  они  не  помогают,  ибо  $1  всёравно  почему-то
> портится.
> 

В nginx в принципе нет такого понятия как "область видимости", и принцип
конфигурации в основном декларативный. Не надо сравнивать его с языком 
программирования, более того, не надо пытаться программировать на нем.

С позиционными выделениями все просто: они относятся к последнему обработанному 
регулярному выражению, и должны быть использованы только в самых очевидных 
случаях, типа rewrite ~(reg)(exp) $1$2; и т.п.

Во всех остальных, где отношение установить не представляется возможным, 
следует 
пользоваться именованными выделениями.

--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.