Hello Cyril,
понедельник, 6 сентября 1999 г., you wrote:
CAV> Суть проблемы - split httpd. Разнесенные в
CAV> разные сервера апачи с mod_perl, с mod_php и др.,
CAV> которые пашут через front-server с russian-apache,
CAV> mod_rewrite + mod_proxy. И все бы хорошо, но
CAV> перекодировка не делается на те запросы, что
CAV> через mod_proxy возвращаются.
Как конкретно запросы пробрасываются на backend-сервер? Дело в том,
что mod_proxy использует, насколько я помню, ap_bwrite, не
обрабатывающуюся русским апачем. Это значит, перекодировку надо
ставить на обоих httpd. Более того - на backend-сервере ее
_обязательно_ нужно делать по портам (или виртуальным хостам). Если ты
сделаешь перекодировку по Useragent, произойдет следующее: у тебя
приходит клиент в 1251, запрашивает документ. Документ ложится в кэш.
После чего приходит клиент в koi8, запрашивает этот же документ.
Поскольку URL тот же самый, ему отдадут из кэша документ в 1251. А
Vary mod_proxy обрабатывать не умеет - он HTTP/1.0 :(
Что касается frontend-сервера, там можно использовать любой способ
перекодировки, просто RewriteRule будет меняться соответственно. Если
у тебя, допустим, перекодировка по портам, то получится
RewriteRule /this/(.+) http://proxy.host:%{SERVER_PORT}/that/$1 [p]
А если по UserAgent, то
RewriteCond %{CHARSET} windows-1251
RewriteRule %/this/(.+) http://proxy.host:8080/that/$1 [p]
RewriteCond %{CHARSET} koi-8
RewriteRule %/this/(.+) http://proxy.host:8083/that/$1 [p]
....
Best regards,
Ilya mailto:ilya@zhurnal.ru
=============================================================================
= Apache-Rus@lists.lexa.ru mailing list =
Mail "unsubscribe apache-rus" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/mail-archive =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.