> > > > Как мы видим в логах, все нормально и запрос ушел на бекенд,
но на
> > > > бекенде этот запрос даже не появляется в логах, а в ответ
броузеру
> > > > приходит Forbidden...
> > >
> > > Я наблюдаю то же самое - то есть, проброса нет.
> > > Forbidden, видимо, потому что на фронтенде на "/" нет ни одного
> > > реального файла.
> >
> > Реальные файлы есть (index.asp), но насколько я понимаю это никак
не
> > должно влиять на процесс.
>
> Влияют. См. ниже.
Проверил, действительно влияют, но сути это не меняет.
Я сразу сказал что файлы в каталоге есть и обрабытаваются они бекендом
и работало это уже 2 года без проблем на mod_proxy (Ниже
доказательства).
> > Там вроде так должно быть...
> > Есть ли какой либо хендлер который определяется по Location, на
"/"
> > такого нет.
> > Подставляем DirectoryIndex, получаем варианты, которые мы
_сначала_
> > опять прогоняем на тесты по Location и если ничего не находим, то
уже
> > на уровне Files... В нашем случае они должны были уйти на бекенд
уже
> > на тестах по Location, что было зафиксировано в логах.
> >
> > > > На точно таком же конфиге на старом серваке тоже с
apache-1.3.26
> > все
> > > > это работает без глюков.
> > >
> > > Я правильно понимаю, что на старом сервере на фронтенде в корне
нет
> > > ни одного индексного файла и mod_rewrite/mod_proxy успешно
> > прокидывают
> > > "/" на "backend:/index.asp" ?
> >
> > Есть они в корне, но я уверяю, если бы я этот файл стер, а на
бекенде
> > повесил
> > <Location /index.asp>
> > И тут нормальный хенлер
> > </Location>
> > То работал бы этот хендлер.
>
> В общем, научные исследования показали следующее.
>
> 1. стандартный mod_rewrite для subreq не разрешает проксирование и
> /index.asp берётся с фронтенда.
Он не может браться фронтендом и не берется, потому что фронтенд не
знает что делать с этим асп!
> 2. подпатченный mod_rewrite переписывает /index.asp в
proxy:тра-ля-ля...,
> но Апач на это почему-то не обращает внимание и пытается отдать
"/".
>
> 3. в всех случаяx дело до mod_proxy/mod_accel просто не доходит.
доходит, доходит в случае с mod_proxy...
> Править Апача для того, что бы это доходило до mod_accel не хочу по
двум
> причинам:
>
> 1. с mod_proxy это никогда не работало и, следовательно, проблем с
переходом
> быть не должно.
>
> 2. вместо набора RewriteRule лучше использовать AccelNoPass.
> Если же без mod_rewrite не обойтись, то лечиться это, очевидно,
> таким рулезом:
>
> RewriteRule ^(.*/)$ http://localhost:9000$1 [P,L]
Вот тестовая схема, которая работает на 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>
------------------
Apache::Test
------------------
package Apache::Test;
use strict;
use Apache::Constants qw(:common);
sub new {
my $class = shift;
bless {@_}, $class;
}
sub handler {
my $self = Apache::Test->new();
$self->{r} = shift();
$self->{r}->send_http_header('text/html');
$self->{r}->print("Hello from backend!");
return OK;
}
1;
------------------
index.asp
------------------
Hello from frontend, although you'll not see me anyway :(
------------------
Когда index.asp отсутвует - действительно не срабатывает, но как
только мы его туда кладем сервер на запрос "/" выдает "Hello from
backend!" на mod_proxy и продолжает говорить Forbidden на mod_accel.
А если поведение непатченного mod_rewrite отличается достаточно
сильным образом от патченного, то это скорее баг чем фича...
--------------------------------------------
Sergey Polyakov aka "BeerBong"
Chief of WebZavod http://www.webzavod.ru
Tel. +7 (8462) 43-93-85 | +7 (8462) 43-93-86
mailto:alexei@samara.net
=============================================================================
= 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 =