Как отключить сжатие в Apache для какого-то заголовка ответа с прокси-сервера приложений mod_jk - PullRequest
2 голосов
/ 05 августа 2010

У меня есть сервер Tomcat, настроенный (по mod_jk) для работы через сервер Apache Httpd.

Сервер Apache Httpd сжимает (по mod_deflate) весь текст / html, отправленный в браузер.

Некоторые jspстраницы являются интерактивными и длительными, то есть отображают прогресс или журнал во время выполнения.Если сжатие включено, весь текст на этих страницах появляется в конце выполнения страницы.

Я хотел бы иметь возможность установить на странице JSP какой-нибудь заголовок ответа, например,

<% response.setHeader("X-Compress", "0"); %>

А в Apache Httpd это должно привести к отключению сжатия, например, установив no-gzip переменная окружения.

Может есть другие подходы?

Ответы [ 3 ]

2 голосов
/ 06 января 2012

Я использую mod_layout, чтобы добавить заголовок на страницу.Это имеет проблемы, когда страница приходит от tomcat через mod_jk.Он добавляет простой текстовый заголовок перед двоичным кодом gzip, повреждая файл gz.Кажется, у него очень плохая документация, но он отлично справляется с задачей, кроме проблемы сжатия.

К сожалению,

RewriteRule.- [E = no-gzip: 1]

не работал для меня.

Ни один не сделал:

AddOutputFilterByType DEFLATE text / html text /обычный текст / xml

Это сработало:

  1. включить mod_headers

  2. добавить строку в VirtualHost

    RequestHeader не установлен Accept-Encoding

Подробнее о mod_headers: http://httpd.apache.org/docs/2.0/mod/mod_headers.html

Мой mod_layout был получен из менеджера пакетов Ubuntu, ноэто также здесь: https: //download.tangent.org/

И вот страница, где я впервые прочитал о mod_layout: http://www.linuxjournal.com/article/4334

0 голосов
/ 06 сентября 2010

Проверено на недавней установке (Apache httpd 2.2.16, Tomcat 6.0.29, mod_jk 1.2.30, tcnative-1.dll).Нет такой проблемы (она все еще может существовать при использовании Apache httpd 2.0.x).

При использовании response.flushBuffer () или out.flush () в jsp, пакет сброса отправляется в Apache через mod_jk.Это, в свою очередь, создает очищенную область APR, полученную модулем deflate, и принудительно сбрасывает буфер сжатия в браузер.

Таким образом, ответ сжат и интерактивен.

PS Однако я создал соответствующий патч, который реагирует на заголовок X-nogzip с сервера приложений.Установите X-nogzip: 1, чтобы отключить сжатие.

http://huksley.sdot.ru/wp-content/uploads/2010/09/mod_jk-1.2.30-x-nogzip-patch.zip

0 голосов
/ 05 августа 2010

Я не думаю, что это возможно через HTTP-заголовок, поскольку этот заголовок используется только для сообщения клиенту, как себя вести. Однако вы должны сказать apache.

Но можно отключить его с помощью файла .htaccess, если это опция:

RewriteRule . - [E=no-gzip:1]
...