如何在mod_jk代理应用服务器的某些响应头中禁用Apache中的压缩

问题描述:

我有一台配置了(由mod_jk)通过Apache Httpd服务器工作的tomcat服务器。如何在mod_jk代理应用服务器的某些响应头中禁用Apache中的压缩

Apache Httpd服务器压缩(通过mod_deflate)发送给浏览器的所有文本/ html。

一些jsp页面是交互式的且长时间运行,即在执行期间显示进度或日志。 如果启用压缩,则这些页面上的所有文本都会出现在页面执行结束时。

我希望能够在JSP页面中设置一些响应头,例如

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

而在apache httpd的这必须导致通过设置无gzip的环境变量禁用压缩, 例如。

也许还有其他方法吗?

测试最近的设置(Apache的httpd的2.2.16下,Tomcat 6.0.29,mod_jk的1.2.30,tcnative- 1.DLL)。 没有这样的问题(它可能仍然存在使用Apache httpd 2.0.x)。

在jsp中使用response.flushBuffer()或out.flush()时,通过mod_jk将flush数据包发送到Apache 。这反过来创建了APR冲刷桶,通过收缩 模块接收并迫使它将压缩缓冲区刷新到浏览器。

所以响应是COMPRESSED AND INTERACTIVE。

P.S.但是,我已经创建了相关的补丁,它对来自应用服务器的X-nogzip头进行响应。设置为X-nogzip:1以禁用压缩。

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

我不认为这是可以通过HTTP头,因为这个头只用于告诉客户如何表现。你不得不告诉Apache。

但可以使用.htaccess文件,如果这是一个选项来禁用它:

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

.htaccess文件不能在Tomcat的Web应用程序中使用 – huksley 2010-08-05 11:47:39

我使用mod_layout的头添加到页面。当页面通过mod_jk从tomcat进入时它有问题。它在gzipped二进制代码之前添加纯文本标头,损坏gz文件。它似乎有非常差的文件,但除了压缩问题外,还做得很好。

不幸的是,

重写规则。 - [E = no-gzip:1]

对我不起作用。

也没有:

AddOutputFilterByType DEFLATE text/html的文本/纯文本/ 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的软件包管理器来了,但它也是在这里: HTT号码:// download.tangent.org/

这里是我第一次阅读mod_layout的页面: http://www.linuxjournal.com/article/4334