You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Fred Zhang <ya...@gmail.com> on 2010/11/30 14:20:53 UTC

[users@httpd] mod_deflate does not work for zipped incoming soap request

Hi there,

I'm trying to make mod_deflate work to decompress zipped incoming soap
requests.

The system is something like this:
webservice client --> httpd -->mod_jk --> Webservice exposed by Jboss
server.

httpd version is 2.2.3

Since the SOAP messages are somehow big, I want the webservice client to
send zipped soap message. And the HTTPD should de-compress it with
mod_deflate and then pass the de-compressed soap requests to the application
server via mod-jk.

I added the following config into httpd.conf:
#---------------------------------
SetOutputFilter DEFLATE
SetInputFilter DEFLATE

DeflateFilterNote input
DeflateFilterNote output
DeflateFilterNote ratio
LogFormat '%h %t "%r" %{output}n/%{input}n (%{ratio}n%%)' deflate

CustomLog logs/deflate_log.log deflate
#---------------------------------

I expect that httpd should decompress all the incoming http request with
"Content-Encoding=gzip" with this configuration. But when I check the debug
logging of mod_jk, I found that the requests passed to mod_jk were NOT
DECOMPRESSED.

Here is the access log of an incoming request (LogFormat: LogFormat "%h %l
%u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"
\"%{Content-Length}i\" \"%{Content-Type}i\" \"%{Content-Encoding}i\""
combined):

172.18.50.17 - - [30/Nov/2010:20:31:58 +0800] "POST /ws/TestService
HTTP/1.1" 400 - "-" "Jakarta Commons-HttpClient/3.1" "806"
"text/xml;charset=UTF-8" "gzip"

We can see that the incoming message is a gzipped message.


and in deflate_log.log:
172.18.50.17 [30/Nov/2010:20:31:58 +0800] "POST /ws/TestService HTTP/1.1"
-/- (-%)

172.18.50.17 [30/Nov/2010:20:46:51 +0800] "GET / HTTP/1.1" -/- (43%)

According to the first line it seems that the mod_deflate does NOT work for
incoming requests(?), since input/output/ratio are all empty.
According to the second line it seems that the mod_defalte does work for
outcoming response...because at least ratio is not empty...(so that we can
be sure that mod_deflate is loaded properly)

I googled a lot and went over mod_deflate source code but found no hints.

Is there anyone has make some similiar system work?  or is there any further
config I should add to make deflate work for the incoming requests? and is
there further debugging methods? (I put LogLevel to debug, but there is no
related logs..)

Thanks!