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

Maxim Dounin mdounin на mdounin.ru
Вс Ноя 29 16:35:42 MSK 2009


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 приводит регулярное выражение к нижнему 
регистру, что делает его невалидным.

Патч.

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
-------------- next part --------------
# 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