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 05:22:43PM +0300, Vladimir Sopot wrote:
> Увы,
>
> 2009/03/05 16:54:16 [error] 18720#0: *5440 open() "/wwwroot/site///e/
> ea/0/12720.jpg" failed (2: No such file or directory),
> client: 94.188.35.148, server: ~^(s)(\d)\.site, request: "GET /e/ea/
> 0/12720.jpg HTTP/1.1", host: "s0.site", referrer:
> "http://site/ea/12720.html"
>
> Тоесть сервер точно матчится, но вот $1-2 не устанавливаются :(
>
> Куда бы еще копнуть? Уж больно хочется и конфиг порезать и на
> регекспах сэкономить :)
А патч точно приложен ?
Что показывает nginx, если в конфиг добавить такое:
location ~ \.TXT$ {
alias /wwwroot/;
}
?
> # uname -a
> Linux site 2.6.27.7-9-default #1 SMP 2008-12-04 18:10:04 +0100 x86_64
> x86_64 x86_64 GNU/Linux
>
> # ./configure > --with-http_stub_status_module > --without-mail_pop3_module > --without-mail_imap_module > --without-mail_smtp_module > --without-http_access_module > --without-http_autoindex_module > --without-http_browser_module > --without-http_charset_module > --without-http_limit_zone_module > --without-http_map_module > --without-http_memcached_module > --without-http_referer_module > --without-http_ssi_module > --without-http_userid_module > --without-http_proxy_module > --without-http_proxy_module
> ...........
> checking for PCRE library ... found
> ...........
> Configuration summary
> + using system PCRE library
> ...........
> # pcre-config --version
> 7.8
>
> On Mar 5, 2009, at 4:14 PM, Igor Sysoev wrote:
>
> >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
> >
> >
>
--
Игорь Сысоев
http://sysoev.ru
|