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