ПРОЕКТЫ 


  АРХИВ 


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: captures in regex location



On Thu, Mar 05, 2009 at 03:46:55PM +0300, Vladimir Sopot wrote:

> Помимо описанного сервера есть еще секции
> 
> server {
>         server_name ~^([b|o])(\d)\.site;
>       .......
>       }
> 
> server {
>         listen *:80 default bind sndbuf=64k;
>         server_name site
>       ..........
>       }
> 
> и добавление пустого сервера не исправило ситуацию.

У меня для

    server {
        listen  8000;
        server_name ~^([b|o])(\d)z\.site;

        root    /wwwroot/site/$1/$2/;
    }

в логах такая ошибка:

[error] 58504#0: *1 open() "/wwwroot/site/b/1/dir/index.html" failed (2: No 
such file or directory), client: 127.0.0.1, server: ~^([b|o])(\d)z\.site, 
request: "GET /dir/index.html HTTP/1.0", host: "b1z.site"

То есть, путь "/wwwroot/site/b/1/dir/index.html" формиурется правильно.

Кстати, "|" в "([b|o])" - лишняя.

> On Mar 5, 2009, at 2:43 PM, Igor Sysoev wrote:
> 
> >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
> >
> >
> 

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



 




Copyright © Lexa Software, 1996-2009.