Сжатие gzip с использованием mod_deflate apache с tomcat

Я пытаюсь включить сжатие gzip на моем сервере Apache, который запускает экземпляр Tomcat с помощью соединителя. Я попробовал несколько вариантов настроек конфигурации модуля в моем httpd.conf. Вот моя последняя попытка:

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

DeflateCompressionLevel 9
SetEnvIfNoCase Request_URI \.(?:gif|png|jpg|jpeg)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio

LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog "/var/output/logs/deflate_log" deflate
ErrorLog "/var/output/logs/deflate_error_log"
</IfModule>

Я проверяю заголовки ответа с помощью Firebug и проверяю, что заголовки запроса имеют Accept-Encoding: gzip deflate но каждый раз Content-Encoding заголовок отсутствует в ответе.

Я попытался добавить следующую строку в httpd.conf, но это дает ошибку, mod_deflate является встроенным модулем и не может быть загружен. Я подтвердил это apachectl -t и это показывает mod_deflate.c как скомпилированный модуль.

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

У меня есть экземпляр Tomcat, который подключен к Apache через разъем AJP. Когда я отлаживал свои сервлеты, я обнаружил, что ответ Content-Type Я получаю за мой тестовый скрипт application/javascript;charset=UTF-8, Я изначально использовала AddOutputFilterByType директива и думал, что дополнительный charset=UTF-8 часть может испортить MIME-тип для Apache, но тогда он не работает с SetOutputFilter DEFLATE также.

Мои пользовательские журналы для deflate показать следующую строку несколько раз:

GET /myservlet HTTP/1.1" -/- (-%)

Я не понимаю, почему это не работает. Моя версия Apache 2.0.63, Кто-нибудь сталкивался с подобной проблемой? В любом случае я могу отлаживать дальше и проверить, что происходит в Apache? Возможно, включить некоторые отладочные журналы?

Спасибо, Венкат.

1 ответ

Вы должны включить сжатие в Tomcat, а не в httpd для контента, обслуживаемого Tomcat.

Другие вопросы по тегам