Re: Сопоставление $query_string со строкой содержащей "$"
Иван
nginx на kinetiksoft.com
Пн Май 16 12:20:27 UTC 2016
Вы хотите анализировать именно $query_string или конкретные переменные из нее?
Для приведенного Вами примера с p= работает моя конструкция. Если надо
сравнивать p с несколькими подстроками, то будет
map $arg_p $block {
'anyqwery$' 1;
'otherqwery' 1;
'some$otherqwery' 1;
}
if ($block) {
return 403;
}
Если таких p не одна, а, например, есть еще q, то будет как-то так
map $arg_p $pblock {
default 0;
'anyqwery$' 1;
'otherqwery' 1;
'some$otherqwery' 1;
}
map $arg_q $qblock {
default 0;
'2qwery$' 1;
'newotherqwery' 1;
'3some$otherqwery$' 1;
}
map $pblock$qblock $block {
default 1;
00 0;
}
if ($block) {
return 403;
}
Если же переменных p,q много, то можно сделать регэкспом по всей $query_string:
map $query_string $block {
default 0;
~'p=anyqwery$' 1; #если $query_string содержит "p=anyqwery$"
или "zap=anyqwery$otherqwery", будет отлуп
~'otherqwery' 1;
~'$$$' 1;
}
if ($block) {
return 403;
}
Прочитайте документацию на map: http://nginx.org/r/map/ru.
В письме от 16 мая 2016 14:46:12 пользователь Sergey V. Sokolov написал:
> Мне нужно для одного из location заблокировать порядка 10-20 query_string, а
> остальные пропустить. Так вот, query_string может содержать символ $ и
> нужно это учесть.
> 16.05.2016, 14:07, "Иван" <nginx на kinetiksoft.com>:
> Мне кажется, что нет, не правильно понимаете. Опишите конкретнее, что хотите
> получить, пожалуйста.
>
> В письме от 16 мая 2016 14:05:52 пользователь Sergey V. Sokolov написал:
> > Я правильно понимаю, что на каждую такую операцию сравнения, будет две
> > директивы в конфиге map и if? Получается в две операции. Короче можно?
> > 16.05.2016, 02:57, "Иван" <nginx на kinetiksoft.com>:
> >
> > В письме от 16 мая 2016 01:47:12 пользователь Sergey V. Sokolov написал:
> > > $query_string
> >
> >
> > Здравствуйте!
> >
> > Наиболее правильно
> > map $arg_p $block {
> > 'anyqwery$' 1;
> > }
> >
> > if ($block) {
> > return 403;
> > }
> >
> > С уважением, Иван.
> > ,
> > _______________________________________________
> > nginx-ru mailing list
> > nginx-ru на nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> >
> >
> > --
> > С уважением, Сергей Соколов
> > Заместитель директора
> > Zavolga.Net (ООО "Горизонт"), г. Ярославль
> > Тел.: +7 4852 333-402
> > Сайт: http://zavolga.net
> >
> > Руководитель проекта
> > Региональный Интернет Дневник
> > Сайт: http://dnevnik76.ru
> >
> > Руководитель проекта
> > Ярославский Internet Exchange (YAR-IX)
> > Сайт: http://yar-ix.net
> >
> > nic-hdl: SVS141-RIPE
> > X-NCC-RegID: ru.gorizont
> >
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20160516/bd55a9d3/attachment.html>
Подробная информация о списке рассылки nginx-ru