Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Отдача большого контент а через fast_cgi
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@xxxxxxxxxx>
> > написал:
> > > 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@xxxxxxxxx>
> > >> написал:
> > >> > 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@xxxxxxxxx
> > >> > http://nginx.org/mailman/listinfo/nginx-ru
> > >> >
> > >>
> > >>
> > >>
> > >> --
> > >> Пётр Шевцов
> > >> _______________________________________________
> > >> nginx-ru mailing list
> > >> nginx-ru@xxxxxxxxx
> > >> http://nginx.org/mailman/listinfo/nginx-ru
> > >
> > > _______________________________________________
> > > nginx-ru mailing list
> > > nginx-ru@xxxxxxxxx
> > > http://nginx.org/mailman/listinfo/nginx-ru
> > >
> >
> >
> >
> > --
> > Пётр Шевцов
> >
> > _______________________________________________
> > nginx-ru mailing list
> > nginx-ru@xxxxxxxxx
> > http://nginx.org/mailman/listinfo/nginx-ru
> # HG changeset patch
> # User Maxim Dounin <mdounin@xxxxxxxxxx>
> # 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@xxxxxxxxx
> http://nginx.org/mailman/listinfo/nginx-ru
--
Игорь Сысоев
http://sysoev.ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|