ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


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


  ПРОГРАММЫ 



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














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

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

[apache-talk] =?koi8-r?B?UmU6IFthcGFjaGUtdGFsa10gUmU6IFthcGFjaGUtdGFsa10gUmU6IA==?==?koi8-r?B?W2FwYWNoZS10YWxrXSD+1M8t1M8gzsXIz9LP28XFINTXz9LJ1NPRIA==?==?koi8-r?B?W21vZF9yZXdyaXRlICsgbW9kX2FjY2VsXQ==?=



> > Вот тестовая схема, которая работает на mod_proxy и не работает на
> > mod_accel - проверено.
> >
> > httpd.conf
> > ------------------
> > <VirtualHost>
> >    ServerName test_server
> >    DocumentRoot /usr/web/test_server/data
> >    <IfModule mod_dir.c>
> >      DirectoryIndex index.html index.asp
> >    </IfModule>
> >    <IfModule !mod_perl.c>
> >      RewriteEngine On
> >      RewriteRule ^(.*\.asp)$ http://test_server:81$1 [P,L]
> >    </IfModule>
> >    <IfModule mod_perl.c>
> >     PerlModule Apache::Test
> >     <Location /index.asp>
> >      SetHandler perl-script
> >      PerlHandler Apache::Test
> >     </Location>
> >    </IfModule>
> > </VirtualHost>
>
> Эта схема работает следующим образом. mod_dir пытается найти индекс
для "/"
> и последовательно делает сабреквесты для index.html (опаньки) и
> index.asp (файл с таким именем нашёлся). Как я уже писал,
стандартный
> mod_rewrite игнорирует прокированные правила для сабреквестов.
>
> Найдя индекс, mod_dir делает внутренний редирект на /index.asp.
> Так как это уже не сабреквест, то он обрабатывается mod_rewrite'ом
> и в результате уходит к бэкенду.
>
> Я считаю эту схему неправильной, так как работает она только тогда,
когда
> DocumentRoot фронтенда и бэкенда совпадают. Если же их разнести, то
> на фронтенде придётся дублировать ирерахию пустых каталогов бэкенда
> и в каждый из них помещать пустой index.asp.
>
> > Когда index.asp отсутвует - действительно не срабатывает, но как
> > только мы его туда кладем сервер на запрос "/" выдает "Hello from
> > backend!" на mod_proxy и продолжает говорить Forbidden на
mod_accel.
>
> Что подтверждает мои слова выше.
> На мой взгляд, лучше добавить правило, которое бы прокидывало
запросы,
> кончающиеся на "/", на бэкенд, и уже бэкенд искал бы для них
индексы.
> Или же сразу же прокидывать их на индексы.
>
> > А если поведение непатченного mod_rewrite отличается достаточно
> > сильным образом от патченного, то это скорее баг чем фича...
>
> mod_accel патчит mod_rewrite на предмет проксирования сабреквестов,
> но это не необходимость, а бонус. То есть, для mod_accel это
> непринципиально. Если это не нужно, то достаточно убрать
#ifndef/#endif
> из mod_rewrite:
>
>         if (r->main != NULL &&
>             (p->flags & RULEFLAG_IGNOREONSUBREQ ||
> #ifndef MOD_ACCEL
>              p->flags & RULEFLAG_PROXY          ||
> #endif
>              p->flags & RULEFLAG_FORCEREDIRECT    )) {
>             continue;
>         }

Ok, все эти штучки-дрючки с index.asp и вообще с Apache::ASP для нас
пройденный этап (сейчас мы просто используем чистые Apache perl
handler, где таких проблем нет), но у нас куча сайтов написанных с
использованием этой технологии (штук 20) и
переделывать-пересматривать-тестировать старый shit, который
работает - не хочется, да и бонус этот с редиректом подзапросов нам,
видимо, не нужен.
Может в mod_accel сделать опцию при компиляции - включать эту фичу или
не включать. Каждый раз патчить патч к mod_rewrite при выходе нового
mod_accel не хочется :)

> Игорь Сысоев
> http://sysoev.ru
>
>
======================================================================
=======
> =               Apache-Talk@lists.lexa.ru mailing list
=
> Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you
want to quit.
> =       Archive avaliable at http://www.lexa.ru/apache-talk
=
>

=============================================================================
=               Apache-Talk@lists.lexa.ru mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =



 




Copyright © Lexa Software, 1996-2009.