ПРОЕКТЫ 


  АРХИВ 


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?UmU6IFthcGFjaGUtdGFsa10gUmU6IFthcGFjaGUtdGFsa10g/tTPLQ==?==?koi8-r?B?1M8gzsXIz9LP28XFINTXz9LJ1NPRIFttb2RfcmV3cml0ZSArIG1vZA==?==?koi8-r?B?X2FjY2VsXQ==?=



> > > > Как мы видим в логах, все нормально и запрос ушел на бекенд,
но на
> > > > бекенде этот запрос даже не появляется в логах, а в ответ
броузеру
> > > > приходит 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                 =



 




Copyright © Lexa Software, 1996-2009.