2010-08-05 27 views
2

J'ai un serveur Tomcat configuré (par mod_jk) pour fonctionner via le serveur Apache Httpd.Comment désactiver la compression dans Apache sur un en-tête de réponse du serveur d'applications mod_jk proxy

Le serveur Apache Httpd compresse (par mod_deflate) tout le texte/html envoyé au navigateur. Certaines pages jsp sont interactives et de longue durée, c'est-à-dire qu'elles affichent une progression ou un journal pendant l'exécution. Si la compression est activée, tout le texte de ces pages arrive à la fin de l'exécution de la page.

Je voudrais avoir la possibilité de définir dans la page JSP un en-tête de réponse, par ex.

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

Et Apache cela doit entraîner la désactivation de la compression, par exemple en fixant sans gzip variable d'environnement.

Peut-être qu'il y a d'autres approches?

Répondre

0

Testé sur l'installation récente (Apache httpd 2.2.16, Tomcat 6.0.29, 1.2.30 mod_jk, tcnative- 1.dll). Ce problème n'existe pas (il peut toujours exister avec Apache httpd 2.0.x).

Lors de l'utilisation de response.flushBuffer() ou out.flush() dans jsp, le paquet de vidage est envoyé à Apache via mod_jk . Cela crée à son tour le seau de vidage APR qui est reçu par le module de dégonfler et l'oblige à vider le tampon de compression au navigateur.

Donc la réponse est COMPRESSÉE ET INTERACTIVE.

P.S. Cependant, j'ai créé un patch pertinent qui réagit sur l'en-tête X-nogzip du serveur d'application. Défini sur X-nogzip: 1 pour désactiver la compression.

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

0

Je ne pense pas que ce soit possible via l'en-tête HTTP, car cet en-tête est seulement utilisé pour dire au client comment se comporter. Vous devez cependant dire à Apache.

Mais peut le désactiver à l'aide d'un fichier .htaccess, si cela est une option:

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

Le fichier .htaccess ne peut pas être utilisé dans une application Web sur Tomcat – huksley

2

J'utilise mod_layout pour ajouter un en-tête à la page. Il y a des problèmes lorsque la page provient de Tomcat via mod_jk. Il ajoute l'en-tête de texte brut avant le code binaire gzippé, corrompant le fichier gz. Il semble avoir une documentation très pauvre, mais fait un bon travail autre que le problème de compression.

Malheureusement,

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

n'a pas fonctionné pour moi.

Moi non plus:

AddOutputFilterByType texte DEFLATE/html text/texte brut/xml

Ce travail a fait:

  1. permettent mod_headers

  2. ajouter un ligne à votre VirtualHost

    RequestHeader unset Accept-Encoding

En savoir plus sur mod_headers: http://httpd.apache.org/docs/2.0/mod/mod_headers.html

Mon mod_layout est venue du gestionnaire de paquets d'Ubuntu, mais il est aussi ici: htt p: // download.tangent.org/

Et voici la première page à propos de mod_layout: http://www.linuxjournal.com/article/4334