代码之家  ›  专栏  ›  技术社区  ›  huksley

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

  •  2
  • huksley  · 技术社区  · 15 年前

    apachehttpd服务器压缩(由mod_deflate)发送到浏览器的所有文本/html。

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

    我想有能力在JSP页面中设置一些响应头,例如。

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

    例如通过设置 没有gzip 环境变量。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Peter SachinJose    14 年前

    我正在使用mod\u布局向页面添加标题。当这个页面从tomcat到mod_jk时会出现问题。它在gzip二进制代码之前添加纯文本头,从而损坏gz文件。它的文档似乎很差,但除了压缩问题之外,它做得很好。

    不幸的是,

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

    不适合我。

    也没有:

    这确实奏效了:

    1. 启用Modu标头

    2. 向虚拟主机添加一行

      RequestHeader未设置接受编码

    http://httpd.apache.org/docs/2.0/mod/mod_headers.html

    我的mod\u布局来自Ubuntu的包管理器,但它也在这里: http://download.tangent.org/

    这是我第一次读到关于mod\u布局的页面: http://www.linuxjournal.com/article/4334

        2
  •  0
  •   JochenJung    15 年前

    我不认为通过HTTP头是可能的,因为这个头只是用来告诉客户端如何行为。但是你必须告诉阿帕奇。

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

    RewriteRule . - [E=no-gzip:1]
    
        3
  •  0
  •   huksley    15 年前

    在最近的安装程序(Apache httpd 2.2.16、Tomcat 6.0.29、mod \u jk 1.2.30、tcnative-1.dll)上进行了测试。 没有这样的问题(使用apachehttpd2.0.x可能仍然存在)。

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

    所以响应是压缩的和交互的。

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