Назад | Перейти на главную страницу

Сжатие Tomcat mod_jk приводит к Apache httpd

Я разрабатываю веб-приложение локально в своей системе, обслуживая его с помощью Tomcat (tomcat-7.0.52). В производстве я хочу установить Tomcat с Apache httpd (Apache / 2.2.15).

Это работает, и мне удалось настроить кеширование по мере необходимости. Теперь я хочу настроить сжатие, но мне кажется, что Apache httpd не может изменить ответ, полученный от Tomcat.

Но, как я читал здесь, это предпочтительный способ сделать это. Сжатие mod_jk осуществляется только между httpd и Tomcat, и если я хочу настроить сжатие непосредственно в Tomcat, мне понадобится дополнительный сервлет для этого.

У меня есть следующая строка в моем vhost-файле, чтобы включить сжатие статического и httpd-контента:

 #SetOutputFilter DEFLATE
 AddOutputFilterByType DEFLATE text/plain text/html application/json text/xml text/css text/javascript

Включение 1-й строки для меня ничего не изменило.

Я передаю эти запросы Tomcat с помощью mod_jk:

<IfModule mod_jk.c>
 JkMount /myapp/j_security_check worker1
 JkMount /myapp/*.jsp worker1
 JkMount /myapp/DataSourceLoader worker1
 JkMount /myapp/ServletLogin worker1
</IfModule>

Используя Firebug, я вижу, что mime-тип запросов, возвращаемых Tomcat, равен

/myapp/j_security_check: "text/plain; charset=UTF-8" (with the space)
/myapp/*.jsp: "text/plain; charset=UTF-8" (with the space)
/myapp/DataSourceLoader: "application/json;charset=UTF-8"  (without space)

Из-за пробелов я не могу добавить AddOutputFilterByType и поскольку у меня также есть mime-типы без UTF-8, я также пробовал просто SetOutputFilter, Я думаю, что эти директивы вообще не управляют ответом Tomcat.

Итак, мои вопросы:

  1. Какое лучшее предлагаемое решение? Сжатие Tomcat или сжатие Apache httpd? (В соответствии с сжатие gzip с использованием mod_deflate apache с tomcat (который перенаправляется сюда: https://stackoverflow.com/questions/16653642/tomcat-7-gzip-compression-not-working) это надо делать в httpd)

  2. Как включить httpd-сжатие Apache для результатов mod_jk (возможно, от JBoss, а не Tomcat)?

  3. Возможно связанные: Как изменить заголовки кеширования из результатов mod_jk в Apache httpd?

Спасибо!

Блама,

Я согласен с №1 в том, что сжатие можно обрабатывать с помощью apache или другого веб-сервера.

Вот мои мысли:

  1. Я использую apache mod_proxy или nginx перед tomcat. Это позволяет мне при необходимости обрабатывать SSL, сжатие и статический контент. Я начал переходить на nginx, чтобы заменить apache в интерфейсе.
  2. mod_deflate для apache или nginx ngx_http_gzip_module
  3. Вы можете обрабатывать все правила кеширования в tomcat или apache. Это зависит от того, какие правила вы хотите.