ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Есть Аналог комбинирова нных RewriteCond Апача?



Прочитал вот здесь

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 mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.