A compactação dos resultados do mod_jk do Tomcat no httpd Apache

5

Estou desenvolvendo um aplicativo da web localmente no meu sistema, servindo-o usando o Tomcat (tomcat-7.0.52). Na produção, quero fazer frente ao Tomcat com um Apache httpd (Apache / 2.2.15).

Isso funciona e consegui configurar o armazenamento em cache conforme necessário. Agora eu quero configurar a compressão, mas parece que não é possível obter o Apache httpd para modificar a resposta que obteve do Tomcat.

Mas como eu li aqui, esta é a maneira preferida de fazer. A compactação mod_jk é apenas entre o httpd e o Tomcat e, se eu quiser configurar a compactação diretamente no Tomcat, precisaria de um servlet extra para isso.

Eu tenho a seguinte linha no meu arquivo vhost para ativar a compactação de conteúdo estático e servido pelo httpd:

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

Ativar a primeira linha não mudou nada para mim.

Eu passo essas solicitações para o Tomcat usando 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>

Usando o Firebug, posso ver que o tipo mime das solicitações retornadas pelo 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)

Por causa dos espaços que não posso adicionar ao AddOutputFilterByType e como também tenho os tipos MIME sem o UTF-8 e também tentei com apenas SetOutputFilter , Eu acho que essas diretivas não manipulam a resposta do Tomcat.

Então, minhas perguntas são:

  1. Qual é a melhor solução sugerida? Compactação do Tomcat ou Apache Compressão httpd? (De acordo com compactação gzip usando mod_deflate apache com tomcat (que redireciona aqui: link ) deve ser feito em httpd)

  2. Como habilitar a compactação httpd do Apache para resultados mod_jk (talvez do JBoss e não do Tomcat)?

  3. Talvez relacionado: Como modifico cabeçalhos de cache a partir de resultados de mod_jk no Apache httpd?

Obrigado!

    
por Blama 03.04.2014 / 14:34

1 resposta

1

Blama,

Concordo com o número 1 na medida em que a compactação pode ser tratada com o apache ou outro servidor da web.

Aqui estão meus pensamentos:

  1. Eu uso o mod_proxy ou nginx do apache na frente do tomcat. Isso me permite lidar com SSL, compactação e conteúdo estático, se necessário. Eu comecei a migrar para o nginx para substituir o apache no front end.
  2. mod_deflate para o apache ou nginx ngx_http_gzip_module
  3. Você pode manipular todas as regras de cache no tomcat ou apache. Depende de quais regras você quer.
por 31.10.2015 / 04:59