Все переменные (и $1 не исключение) подставляются в тот момент,
когда строка содержащая переменные реально используется.
ИМХО для $1, $2 и т.д. такое поведение как раз не очень логично... но, наверное, по-другому сделать архитектурно сложнее.
> Я ожидал, что в конструкции
>
> set $docroot /your/app/$1/htdocs;
>
> в $docroot попадет уже ОКОНЧАТЕЛЬНАЯ строка, в которой нет упоминаний $1 и
> т.д... Аналогично, что в
Да, попадёт. Когда отработает соответствующий set. Это случится
где-то в районе фазы серверных rewrite'ов (если set на уровне
server{}).
Шутка состоит в том, что эта самая фаза - выполняется повторно при
очередном поиске совпадения между uri и location (после rewrite ...
last). И там снова отрабатывает set. И заново ставит $docroot,
но на этот раз в $1 уже может быть совсем не то что ожидалось.
Спасибо, примерно понятно. Можно ли (для истории) попросить Вас привести пример конфига, иллюстрирующий этот эффект?