Re: Отдача большого контента через fast_cgi

Igor Sysoev igor на sysoev.ru
Вс Ноя 29 16:51:51 MSK 2009


On Sun, Nov 29, 2009 at 04:35:42PM +0300, Maxim Dounin wrote:

> Hello!
> 
> On Sun, Nov 29, 2009 at 05:50:06PM +0600, Peter A. Shevtsov wrote:
> 
> > Увы!
> > [emerg]: pcre_compile() failed: unrecognized character after (? in
> > "^www\.(?p<name>.+)$" at "p<name>.+)$" in
> > /etc/nginx/conf.d/virtual.conf:7
> 
> А вот это уже бага - nginx приводит регулярное выражение к нижнему 
> регистру, что делает его невалидным.
> 
> Патч.

Я думаю, лучше проверять "?P<" на стадии конфигурации, чем гонять caseless
в run-time. Вроде, кроме "?P<", больше таких конструкций нет ?

> Maxim Dounin
> 
> > 
> > 27 ноября 2009 г. 19:09 пользователь Maxim Dounin <mdounin at mdounin.ru> написал:
> > > Hello!
> > >
> > > On Fri, Nov 27, 2009 at 06:28:41PM +0600, Peter A. Shevtsov wrote:
> > >
> > >> # pcre-config --version
> > >> 6.6
> > >
> > > В 6.6 должно сработать в виде (?P<name>...).
> > >
> > > Maxim Dounin
> > >
> > >>
> > >> 27 ноября 2009 г. 17:41 пользователь Igor Sysoev <igor at sysoev.ru> написал:
> > >> > On Fri, Nov 27, 2009 at 03:58:18PM +0600, Peter A. Shevtsov wrote:
> > >> >
> > >> >> Ругается на строчку server_name  ~^www\.(?<name>.+)$;
> > >> >> [emerg]: pcre_compile() failed: unrecognized character after (?< in
> > >> >> "^www\.(?<name>.+)$" at "name>.+)$" in
> > >> >> /etc/nginx/conf.d/virtual.conf:7
> > >> >> configuration file /etc/nginx/nginx.conf test failed
> > >> >
> > >> > А что показывает
> > >> > pcre-config --version
> > >> >
> > >> >
> > >> > --
> > >> > Игорь Сысоев
> > >> > http://sysoev.ru
> > >> >
> > >> > _______________________________________________
> > >> > nginx-ru mailing list
> > >> > nginx-ru at nginx.org
> > >> > http://nginx.org/mailman/listinfo/nginx-ru
> > >> >
> > >>
> > >>
> > >>
> > >> --
> > >> Пётр Шевцов
> > >> _______________________________________________
> > >> nginx-ru mailing list
> > >> nginx-ru at nginx.org
> > >> http://nginx.org/mailman/listinfo/nginx-ru
> > >
> > > _______________________________________________
> > > nginx-ru mailing list
> > > nginx-ru at nginx.org
> > > http://nginx.org/mailman/listinfo/nginx-ru
> > >
> > 
> > 
> > 
> > -- 
> > Пётр Шевцов
> > 
> > _______________________________________________
> > nginx-ru mailing list
> > nginx-ru at nginx.org
> > http://nginx.org/mailman/listinfo/nginx-ru

> # HG changeset patch
> # User Maxim Dounin <mdounin at mdounin.ru>
> # Date 1259501547 -10800
> # Node ID a0e6218f6fb73a62ba126a6a55118ade60ca9950
> # Parent  63dde5a94756ec3f5080f078b1b333f66cf433e6
> Core: don't convert regex to lower case, use caseless flag instead.
> 
> Converting to lowercase is wrong as it breaks regular expressions like
> "(?P<name>...)".
> 
> diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
> --- a/src/http/ngx_http_core_module.c
> +++ b/src/http/ngx_http_core_module.c
> @@ -3507,9 +3507,8 @@ ngx_http_core_server_name(ngx_conf_t *cf
>          sn->server = cscf;
>          sn->name = value[i];
>  
> -        ngx_strlow(sn->name.data, sn->name.data, sn->name.len);
> -
>          if (value[i].data[0] != '~') {
> +            ngx_strlow(sn->name.data, sn->name.data, sn->name.len);
>              continue;
>          }
>  
> @@ -3530,6 +3529,7 @@ ngx_http_core_server_name(ngx_conf_t *cf
>          ngx_memzero(&rc, sizeof(ngx_regex_compile_t));
>  
>          rc.pattern = value[i];
> +        rc.options = NGX_REGEX_CASELESS;
>          rc.err.len = NGX_MAX_CONF_ERRSTR;
>          rc.err.data = errstr;
>  

> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru


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



Подробная информация о списке рассылки nginx-ru