20 марта 2001 г. в 2:35 Вы писали:
MZ> On Mon, Mar 19, 2001 at 16:40 +0200, Vladimir Shevchuk wrote:
>>
>> Hello apache-rus,
>>
>> Тут возникли грабли с mod_gzip и RA
>> при Get запросах тело запроса не перекодируется :(
>> а так-же в ситуациях когда gzip делает SEND AS IS и TOO_SMALL :(
>> может кто борол это дело.
MZ> Бороть mod_gzip затруднительно, поскольку его исходный текст представляет
MZ> из себя один файл на C из более чем 13000 строк. Вдобавок, добрая часть
MZ> этой глыбы посвящена реализации алгоритма, с которым прекрасно справляется
MZ> библиотека zlib. Видя такое, хочется юзать винтовку, а не отладчик.
MZ> Код обработки запросов в этом модуле, по моим впечатлениям - большой хак.
MZ> Чтобы без проблем сосуществовать с другим хаком, имя которому - Russian
MZ> Apache, хак должен быть элегантен, как, например, EAPI товарища
MZ> Engelschall'а. Забавно, в mod_ssl и mod_gzip решаются сходные задачи -
MZ> сделать "кодек" ввода-вывода незаметным для подсистемы обработки запросов
MZ> - а подходы разные, как божий дар и яичница.
Истинная правда. Поэтому mod_gzip не уживается не только с RA, но и с
mod_rewrite... Мы сейчас работаем таким образом: на 80-ом порту
влючен mod_gzip, сервер принимает запрос и через mod_proxy отправляет
запрос к себе же на порт 8090. Там уже mod_gzip не включен, зато
работает mod_rewrite, RA и т.д. и т.п. Результат пока вроде бы
нормален за исключением тех скриптов, которым нужен IP-адрес клиента
(для скрипта все запросы приходят через mod_proxy от самого сервера).
В конфиге это выглядит примерно так:
----------------------------------------
<VirtualHost ourhost:80>
...
mod_gzip_on Yes
...
RewriteEngine On
# картинки отдаем сразу
RewriteRule \.(gif|jpe?g)$ - [L]
mod_gzip_item_exclude url \.(gif|jpe?g)$
# остальное пробросим через mod_proxy
RewriteRule ^/(.*) http://%{SERVER_NAME}:8090/$1 [P]
</VirtualHost>
<VirtualHost ourhost:8090>
...
mod_gzip_on No
...
</VirtualHost>
-----------------------------------------
Естественно, это сильно упрощенный вариант, на самом деле у нас
используется перекодировка по портам, сложные правила mod_rewrite,
часть скриптов приходится запускать сразу по 80-ому порту (т.к. им
нужно знать REMOTE_ADDR клиента и т.д. и т.п. Но в общем и целом
такая схема (согласен, довольно кривая) работает. В действии можно
посмотреть на www.e1.ru и www.uralweb.ru
С уважением,
Сергей Герштейн
--
заместитель генерального директора по развитию
телекоммуникационная компания Урал Релком
тел. (3432) 776440, 598721, факс 594956
mailto:sg@xxxxxhttp://www.ur.ru
=============================================================================
= Apache-Rus@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-rus" to majordomo@xxxxxxxxxxxxx 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.