我正在将经过 gzip 压缩的数据从客户端发送到 Apache 服务器,并在 Apache 层对其进行压缩(使用https://httpd.apache.org/docs/2.4/mod/mod_deflate.html#input)。然后数据从 Apache 发送到 Tomcat,但是在 Tomcat 中我收到的是被截断的数据。
查找了这个并发现针对 Apache 服务器出现的以下错误。 https://bz.apache.org/bugzilla/show_bug.cgi?id=34526
根据上述链接中提到的解决方案,我需要添加 Apache 环境变量“JK_IGNORE_CL”。我尝试设置此变量,但无法使其工作。
下面是我用来设置此属性的指令(在 .htaccess 文件中)。我仅当请求的 Content-Encoding 为 gzip 时才尝试设置此变量。
SetEnvIf 内容编码 gzip JK_IGNORE_CL
我也尝试过为其提供一些值,例如 JK_IGNORE_CL=true 或 JK_IGNORE_CL=1,但是没有奏效。我不确定启用此功能的预期方法是什么。任何帮助都非常感谢。
答案1
听起来你需要为 apache 设置环境变量。据我所知,现在这已经完成了,/etc/systemd/system/httpd.service.d/override.conf
而你正在追求类似这样的内容
[Service]
Environment=JK_IGNORE_CL=true
你没有指定JK_IGNORE_CL
应该设置为什么,所以我假设true
答案2
好的。事实证明,上述设置确实有效,但是,由于没有 Content-Length,mod_jk 最多只能发送 8kb 的未压缩数据到 Tomcat(它可以增加到最大 64kb,“max_packet_size”)并且在某些情况下我发送的数据比这个要多。
所以我想这就是我们必须承受的极限。