Re: Есть Аналог комбинированных RewriteCond Апача?
anyhow2
nginx-forum на nginx.us
Чт Фев 18 13:12:55 MSK 2010
Прочитал вот здесь
http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#internals
Директивы модуля ngx_http_rewrite_module компилируется на стадии конфигурирования во внутренние коды, исполняемые во время запроса интерпретатором. Интерпретатор представляет из себя простую стековую виртуальную машину.
В молодости (лет 20 назад) был программистом и занимался обработкой статистической информации. Обрабатывались документы анкетного типа и по ним считались отчеты. Техника тогда у нас была СМ ЭВМ, на которых были в то время только два языка программирования: МакроАссемблер и ФОРТРАН IV. Выбор небольшой и я писал на ФОРТРАНЕ.
Выражения такого например вида
((p1='20'&p3<'400')&p5>'100')!(p104='23'!p104='30') (Где & - AND, ! - OR)
преобразовывались в обратную польскую запись в байт коде и интерпретировались затем при обработке.
То есть, если я правильно понял, делалось примерно то же самое, что делает ngx_http_rewrite_module.
И насколько я понимаю, тут главная трудность не в том, чтобы добавить обработчик операции AND (логическое И) в стековую виртуальную машину, а в том, чтобы добавить разбор логических операций и скобок в компилятор, который генерирует байт код. Но на мой взгляд и это не должно быть сильно трудным, зато сильно увеличит возможности модуля. Что касается быстродействия самой стековой машины, то скорость исполнения такого байт кода (где появится еще один оператор) должна будет увеличиться на скорость исполнения еще одного условного оператора, сравнивающего два целых числа. Не думаю, что это замедлит работу интерпретатора на более чем 0.0001%.
К сожалению, сейчас я уже давно работаю сисадмином и вряд ли смог бы быстро разобраться в чужих исходниках. Может быть все же найдется желающий добавить полезные возможности в nginx? :)
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,55036,55366#msg-55366
Подробная информация о списке рассылки nginx-ru