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

Я разрабатываю веб-приложение локально в моей системе, служа ему с помощью 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 I видят, что тип пантомимы возвращенных из 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 и поскольку у меня также есть типы пантомимы без UTF-8, и я также попробовал просто SetOutputFilter, я думаю, что эти директивы не управляют ответом Tomcat вообще.

Таким образом, мои вопросы:

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

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

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

Спасибо!

5
задан 23 May 2017 в 15:41
1 ответ

Блама,

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

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

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

Теги

Похожие вопросы