Re: Сопоставление $query_string со строкой содержащей "$"

Paul <sejo> Sin sejo412 на gmail.com
Сб Июн 11 17:55:48 UTC 2016


>> судя по документации map можно применять только в контексте http, а
хотелось бы в контексте server, а лучше location

непонятна ваша боль. значения переменных вычисляются в момент доступа к
ним. к этим переменным можно обратиться и на уровне сервера и на уровне
локейшена.

17 мая 2016 г., 0:49 пользователь Sergey V. Sokolov <sokol на zavolga.net>
написал:

> Суть с map понятна, спасибо за ликбез, хорошая конструкция. Есть один
> ньюанс, судя по документации map можно применять только в контексте http, а
> хотелось бы в контексте server, а лучше location :(
>
> 16.05.2016, 17:57, "Sergey V. Sokolov" <sokol на zavolga.net>:
>
> Мне НЕ нужна проверка по отдельным переменным $query_string, нужно
> проверка сопоставления со всей строкой $query_string.
>
> 16.05.2016, 15:20, "Иван" <nginx на kinetiksoft.com>:
>
> Вы хотите анализировать именно $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
>
> > >
>
> >
>
> >
>
> > ,
>
> > _______________________________________________
>
> > 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
>
> >
>
>
> ,
>
> _______________________________________________
> 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
>
> ,
>
> _______________________________________________
> 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
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 

best reguards
Paul <sejo> Sin
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20160611/666f741f/attachment.html>


Подробная информация о списке рассылки nginx-ru