ПРОЕКТЫ 


  АРХИВ 


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: Nginx, regex-домены , "root /your/app/$1/htdocs"



Hello!

On Fri, Nov 06, 2009 at 01:08:21PM +0300, Dmitry Koterov wrote:

> Похоже на баг.
> nginx/0.7.62
> 
> Я обнаружил, что связка вот таких директив не работает (fastcgi_php не
> срабатывает):
> 
> server_name ~^([a-z0-9]+)\.example\.com$
> root /your/app/$1/htdocs
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
> 
> А вот такие, по смыслу, казалось бы, идентичные, - работают:
> 
> server_name ~^([a-z0-9]+)\.example\.com$
> set $docroot /your/app/$1/htdocs;
> root $docroot;
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
> 
> Видимо, если в root содержатся regexp-маркеры (типа $1), они неправильно
> обрабатываются в $document_root, в итоге fastcgi_param не срабатывает.

$1 - это capture от последнего выполнившегося регекспа.  Если по 
дороге от матчинга server_name до fastcgi_pass случится хотя бы 
один regexp (e.g. regexp location, причём не обязательно 
совпавший) - первая конфигруация ожидаемо сломается.

А вторая конфигурация сломается если случится регексп и внутренний 
редирект с повторным поиском совпавшего location'а (e.g. regexp 
location + rewrite ... last).

Maxim Dounin



 




Copyright © Lexa Software, 1996-2009.