Т.е. $1 заменяется на значение не в тот момент, когда он встречается в переменной, а в самый последний, когда переменная вставляется в ту или иную директиву?<br><br>Я ожидал, что в конструкции<br><br>set $docroot /your/app/$1/htdocs;<br>
<br>в $docroot попадет уже ОКОНЧАТЕЛЬНАЯ строка, в которой нет упоминаний $1 и т.д... Аналогично, что в<br><br>root /your/app/$1/htdocs<br><br>директиве root будет скормлена уже интерполированная строка, без информации о $1.<br>
<br><br><div class="gmail_quote">2009/11/6 Maxim Dounin <span dir="ltr">&lt;<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello!<br>
<div><div></div><div class="h5"><br>
On Fri, Nov 06, 2009 at 01:08:21PM +0300, Dmitry Koterov wrote:<br>
<br>
&gt; Похоже на баг.<br>
&gt; nginx/0.7.62<br>
&gt;<br>
&gt; Я обнаружил, что связка вот таких директив не работает (fastcgi_php не<br>
&gt; срабатывает):<br>
&gt;<br>
&gt; server_name ~^([a-z0-9]+)\.example\.com$<br>
&gt; root /your/app/$1/htdocs<br>
&gt; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br>
&gt;<br>
&gt; А вот такие, по смыслу, казалось бы, идентичные, - работают:<br>
&gt;<br>
&gt; server_name ~^([a-z0-9]+)\.example\.com$<br>
&gt; set $docroot /your/app/$1/htdocs;<br>
&gt; root $docroot;<br>
&gt; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br>
&gt;<br>
&gt; Видимо, если в root содержатся regexp-маркеры (типа $1), они неправильно<br>
&gt; обрабатываются в $document_root, в итоге fastcgi_param не срабатывает.<br>
<br>
</div></div>$1 - это capture от последнего выполнившегося регекспа.  Если по<br>
дороге от матчинга server_name до fastcgi_pass случится хотя бы<br>
один regexp (e.g. regexp location, причём не обязательно<br>
совпавший) - первая конфигруация ожидаемо сломается.<br>
<br>
А вторая конфигурация сломается если случится регексп и внутренний<br>
редирект с повторным поиском совпавшего location&#39;а (e.g. regexp<br>
location + rewrite ... last).<br>
<font color="#888888"><br>
Maxim Dounin<br>
<br>
</font></blockquote></div><br>