captures in regex location

Igor Sysoev is at rambler-co.ru
Thu Mar 5 14:43:00 MSK 2009


On Thu, Mar 05, 2009 at 01:57:49PM +0300, Vladimir Sopot wrote:

> Спасибо, но что-то оно не того
> 
>     server {
>         server_name ~^([b|o])(\d)z\.site;
> 
> #        if ($host ~* (.)(\d)) {
>             set $store_type $1;
>             set $store_id $2;
> #            }
> 
>         root    /wwwroot/site/$store_id/$store_type/;
>         }
> 
> В таком виде не работает (404), если убрать комментарии - все  
> становится на свои места. Забрать root внутрь location / { } тоже  
> ничего не дает. root  /wwwroot/site/$2/$1/ тоже не работает

Скорее всего, regex вообще не исполняется, потому что сервер один -
проверять нечего. Нужно добавить пустой сервер, чтобы nginx начал проверять
server_name:

       server { server_name _; }

> On Mar 5, 2009, at 1:17 PM, Igor Sysoev wrote:
> 
> >On Thu, Mar 05, 2009 at 12:14:55PM +0200, Andrew Sitnikov wrote:
> >
> >>>>А можно такое же ещё и для server_name?
> >>IS> Новый патч с поддержкой server_name.
> >>можно пример ?
> >
> >Наверное, как-то так:
> >
> >    server {
> >        listen  8000;
> >        server_name  ~^(?:www\.)?(.+)$;
> >
> >        location / {
> >            root   /path/to/$1;
> >        }
> >    }
> >
> >
> >-- 
> >Игорь Сысоев
> >http://sysoev.ru
> >
> >
> 

-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list