server_name & location captures

Igor Sysoev is at rambler-co.ru
Wed Oct 21 19:32:31 MSD 2009


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://sysoev.ru





More information about the nginx-ru mailing list