server_name & location captures

Igor Sysoev is at rambler-co.ru
Wed Oct 21 21:09:03 MSD 2009


On Wed, Oct 21, 2009 at 08:00:29PM +0400, Sergey Skvortsov wrote:

> On 21.10.2009 19:32, Igor Sysoev wrote:
> > On Wed, Oct 21, 2009 at 07:04:58PM +0400, Sergey Skvortsov wrote:
> > 
> >> On 21.10.2009 18:17, Igor Sysoev wrote:
> >>> Есть идея для выделений в server_name и location использовать специальные
> >>> имена %N и @N:
> >>>
> >>>   server {
> >>>      server_name ~^(\w+)\.intrasearch\.(.+)$;
> >>>      root   /usr/local/www/intrasearch-dev/%1;
> >>>
> >>>   location ~ ^/~user(/[^/]+)(.+)$ {
> >>>      alias  /homes/@1/public_html at 2;
> >> А почему бы не использовать named captures? Которые есть в свежих
> >> версиях PCRE.
> >>
> >> Т.е. named capture вида (?<foobar>) сделать доступным через переменную
> >> вида $regex_foobar (или каноничным $+{foobar}).
> >>
> >> Скажем:
> >>
> >>   server {
> >>      server_name ~^(?<host_prefix>\w+)\.intrasearch\.(.+)$;
> >>      root   /usr/local/www/intrasearch-dev/$regex_host_prefix;
> >>
> >>   location ~ ^/~user(?<username>/[^/]+)(?<rest>.+)$ {
> >>      alias  /homes/$regex_username/public_html$regex_rest;
> > 
> > Хотя моё чувство прекрасного немного протестует против (?<foobar>),
> > а особенно против $+{foobar}, но вариант $regex_foobar мне нравится.
> > 
> > А в каком PCRE это появилось, не помнишь ?
> 
> http://www.pcre.org/changelog.txt
> 
> Собственно в 7.0 (19-Dec-06) была добавлена поддержка в виде
> аналогичному Perl 5.10 - т.е. (?<name>...) или (?'name'...), в
> дополнение к python-варианту (?P<name>...). Первые два варианта
> поддерживаются и в .NET.

Я думаю, что достачно будет просто $foobar, $host_prefix и т.д.


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





More information about the nginx-ru mailing list