I should have dug a little deeper into the archives.

Go to this URL:  http://www.apache.org/mail/modproxy-dev/200204.gz
And search for:  proxy for HTTP 1.0 clients


Graham Leggett wrote:  (on 05/03/2002)
> 
> This problem is fixed in v1.3.25-dev in CVS - I've asked that a new
> release of Apache be made, which should be ready in about a week or so
> (according to the release manager...).
> 
> In the mean time, the latest CVS version of apache will solve the
> problem.

And:  (on 04/10/2002)
> The 1.3.24 proxy did not know how to dechunk incoming responses from
> HTTP/1.1 servers, which meant the chunked encoding was being sent as is
> to the client. If the client was HTTP/1.1 it didn't complain, but
> obviously HTTP/1.0 clients have a problem. Now the proxy dechunks
> incoming chunked responses as required by RFC2616.


"Michael E. Lewis" wrote:
> 
> While preparing to upgrade our production servers, I encountered
> a problem that may involve mod_proxy code.  When html code is
> generated and printed by our mod_perl handler initiated directly
> from the back end the output is correct.  When the same operation
> is initiated via the front end proxy server the output is corrupted
> by extraneous numbers.  I have set up a test scenario to isolate
> the problem.  Our new server configurations include this software:
> 
>         Front End                       Back End
>         ---------                       --------
>         kernel-2.4.9-31                 kernel-2.4.9-31
>         apache_1.3.24                   apache_1.3.24
>         mod_ssl-2.8.8-1.3.24            mod_perl-1.26
>         openssl-0.9.6c
>         mm-1.1.3
> 
> The front end apache configuration includes:
> 
>     <VirtualHost 192.168.20.111:80>
>         ServerName gelco5.yvod.com
>         DocumentRoot /www/gelcompany/html
> 
>         RewriteEngine On
>         RewriteLogLevel 9
>         RewriteOptions 'inherit'
> 
>         RewriteRule ^/$ http://192.168.20.111:8089/ [proxy,last]
> 
>         RewriteRule ^/(.+)$ /www/gelcompany/html/$1 [last]
>     </VirtualHost>
> 
> The back end apache configuration includes:
> 
>     NameVirtualHost 192.168.20.111:8089
>     Listen 8089
>     <VirtualHost 192.168.20.111:8089>
>         ServerName gelco5.yvod.com
>         DocumentRoot /www/gelcompany/html
> 
>         Alias / /www/gelcompany/modperl
> 
>         <Location />
>             SetHandler perl-script
>             PerlHandler YVOD::welcome
>         </Location>
>     </VirtualHost>
> 
> The test handler code looks like this:
> 
>     #!/usr/bin/perl -w -d
>     package YVOD::welcome;
>     use strict;
> 
>     sub handler{
>         my $r = shift;
>         $r->send_http_header('text/html');
>         print qq|<html><body bgcolor="#FFFFFF">\n|;
>         print "You are Welcome at ", $r->get_remote_host, "<BR><BR>\n";
>         while (my ($key, $val) = each %ENV) {
>             print "$key = $val<BR>\n"; }
>         print "</body></html>";
>         return 1;
>     }
>     1;
> 
> The output source looks like this when initiated directly from the
> back end (http://192.168.20.111:8089/):
> 
>     <html><body bgcolor="#FFFFFF">
>     You are Welcome at 192.168.20.98<BR><BR>
>     QUERY_STRING = <BR>
>     HTTP_ACCEPT_LANGUAGE = en<BR>
>     TZ = PST8PDT<BR>
>     REMOTE_PORT = 3201<BR>
>     HTTP_USER_AGENT = Mozilla/4.76 [en] (X11; U; Linux 2.2.14-5.0 i686)<BR>
>     HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
> image/png, */*<BR>
>     HTTP_HOST = 192.168.20.111:8089<BR>
>     GATEWAY_INTERFACE = CGI-Perl/1.1<BR>
>     SCRIPT_NAME = /<BR>
>     SERVER_NAME = gelco5.yvod.com<BR>
>     HTTP_ACCEPT_ENCODING = gzip<BR>
>     MOD_PERL = mod_perl/1.26<BR>
>     HTTP_ACCEPT_CHARSET = iso-8859-1,*,utf-8<BR>
>     HTTP_COOKIE = YVOD_SESSION_ID=2e4046b477f9374f<BR>
>     SCRIPT_FILENAME = /www/gelcompany/modperl<BR>
>     PATH = /bin:/usr/bin<BR>
>     SERVER_ADDR = 192.168.20.111<BR>
>     MOD_PERL_TRACE = all<BR>
>     SERVER_PROTOCOL = HTTP/1.0<BR>
>     HTTP_CONNECTION = Keep-Alive<BR>
>     SERVER_SIGNATURE = <ADDRESS>Apache/1.3.24 Server at gelco5.yvod.com Port
> 8089</ADDRESS>
>     <BR>
>     SERVER_SOFTWARE = Apache/1.3.24 (Unix) mod_perl/1.26<BR>
>     SERVER_ADMIN = [EMAIL PROTECTED]<BR>
>     REMOTE_ADDR = 192.168.20.98<BR>
>     DOCUMENT_ROOT = /www/gelcompany/html<BR>
>     REQUEST_URI = /<BR>
>     REQUEST_METHOD = GET<BR>
>     SERVER_PORT = 8089<BR>
>     </body></html>
> 
> The output source looks like this when initiated via the front end
> proxy server (http://gelco5.yvod.com/):
> 
>     49a
>     <html><body bgcolor="#FFFFFF">
>     You are Welcome at 192.168.20.111<BR><BR>
>     QUERY_STRING = <BR>
>     HTTP_ACCEPT_LANGUAGE = en<BR>
>     TZ = PST8PDT<BR>
>     REMOTE_PORT = 2462<BR>
>     HTTP_USER_AGENT = Mozilla/4.76 [en] (X11; U; Linux 2.2.14-5.0 i686)<BR>
>     HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
> image/png, */*<BR>
>     HTTP_HOST = 192.168.20.111:8089<BR>
>     GATEWAY_INTERFACE = CGI-Perl/1.1<BR>
>     SCRIPT_NAME = /<BR>
>     SERVER_NAME = gelco5.yvod.com<BR>
>     HTTP_ACCEPT_ENCODING = gzip<BR>
>     MOD_PERL = mod_perl/1.26<BR>
>     HTTP_ACCEPT_CHARSET = iso-8859-1,*,utf-8<BR>
>     HTTP_VIA = 1.0 gelco5.yvod.com (Apache/1.3.24)<BR>
>     SCRIPT_FILENAME = /www/gelcompany/modperl<BR>
>     PATH = /bin:/usr/bin<BR>
>     HTTP_X_FORWARDED_FOR = 192.168.20.96<BR>
>     SERVER_ADDR = 192.168.20.111<BR>
>     MOD_PERL_TRACE = all<BR>
>     SERVER_PROTOCOL = HTTP/1.1<BR>
>     HTTP_CONNECTION = close<BR>
>     SERVER_SIGNATURE = <ADDRESS>Apache/1.3.24 Server at gelco5.yvod.com Port
> 8089</ADDRESS>
>     <BR>
>     SERVER_SOFTWARE = Apache/1.3.24 (Unix) mod_perl/1.26<BR>
>     SERVER_ADMIN = [EMAIL PROTECTED]<BR>
>     REMOTE_ADDR = 192.168.20.111<BR>
>     DOCUMENT_ROOT = /www/gelcompany/html<BR>
>     REQUEST_URI = /<BR>
>     REQUEST_METHOD = GET<BR>
>     SERVER_PORT = 8089<BR>
>     </body></html>
>     0
> 
> In the second case, there is about a 15 second delay before the '0'
> prints at the bottom of the display and 'Document Done.' is indicated.
> The number that prints at the beginning changes depending upon the
> content (it may be a length value), but the number at the end is
> always '0'.  Also, the following messages are written to error_log:
> 
>     [Fri May  3 03:42:39 2002] [debug] proxy_cache.c(1026):
>       Request for http://192.168.20.111:8089/, pragma_req=no-cache, ims=0
>     [Fri May  3 03:42:39 2002] [debug] proxy_util.c(1401):
>       File /opt1/httpd_docs/proxy/A/a/R/8dpIO_pSaxiSOa1CyWg not found
>     [Fri May  3 03:42:39 2002] [debug] proxy_cache.c(1280):
>       Local copy not present or expired. Declining.
>     [Fri May  3 03:42:49 2002] [debug] proxy_cache.c(1391):
>       Response is not cacheable,
>         unlinking /opt1/httpd_docs/proxy/A/a/R/8dpIO_pSaxiSOa1CyWg
>     [Fri May  3 03:42:49 2002] [debug] proxy_http.c(583):
>       Content-Type: text/html
> 
> Although I've abbreviated it for testing, the basic configuration
> is the same as I've been using in production for over two years,
> but it's quite possible that the source of the problem is in the
> configuration.  It's also possible that the problem has nothing to
> do with mod_proxy - it could be related to Apache::PRINT.  If you
> can provide any help I would be very grateful as I've been pounding
> at this for several days now.  And if there is any other info I can
> get for you please let me know.
> 
> Thanks, Michael...

-- 
Michael E. Lewis         YVOD, LLC / Comprehend.Com    Phone: 510-655-3974
[EMAIL PROTECTED]    5816 Ocean View Drive         Cell:  510-435-3180
[EMAIL PROTECTED]         Oakland, CA  94618-1535       Fax:   419-781-9206

Reply via email to