Мне НЕ нужна проверка по отдельным переменным $query_string, нужно проверка сопоставления со всей строкой $query_string.
 
16.05.2016, 15:20, "Иван" <[email protected]>:

Вы хотите анализировать именно $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, "Иван" <[email protected]>:

> Мне кажется, что нет, не правильно понимаете. Опишите конкретнее, что хотите

> получить, пожалуйста.

>

> В письме от 16 мая 2016 14:05:52 пользователь Sergey V. Sokolov написал:

> > Я правильно понимаю, что на каждую такую операцию сравнения, будет две

> > директивы в конфиге map и if? Получается в две операции. Короче можно?

> > 16.05.2016, 02:57, "Иван" <[email protected]>:

> >

> > В письме от 16 мая 2016 01:47:12 пользователь Sergey V. Sokolov написал:

> > > $query_string

> >

> >  

> > Здравствуйте!

> >  

> > Наиболее правильно

> > map $arg_p $block {

> > 'anyqwery$' 1;

> > }

> >  

> > if ($block) {

> > return 403;

> > }

> >  

> > С уважением, Иван.

> > ,

> > _______________________________________________

> > nginx-ru mailing list

> > [email protected]

> > 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

> >  

>

>  

> ,

> _______________________________________________

> nginx-ru mailing list

> [email protected]

> 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

>  

 

,

_______________________________________________
nginx-ru mailing list
[email protected]
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
 
_______________________________________________
nginx-ru mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить