1. Problem Description: I am running Apache/2.0.48 (Win32) mod_perl/1.99_13 Perl/v5.8.0 on Windows XP. I've downloaded the Apache binary from http://hunter.campbus.com/, and have tried IBM httpd 2.047 as well. mod perl and Apache::Clean I have installed using perl ppm. My perl is from ActivePerl. I have written a OutputFilter that finds a string in a response and replaces the string with another. It works fine with static files, but not on response from a reverse proxy, and that is just what I want to achieve. I'm trying to run my Outlook Web Access backend behind an Apache frontend. Running Apache::Clean for instance does work on reverse proxied content, it seems. In my error log I see: [Mon Mar 22 15:33:31 2004] [info] Mike:filter.pm(43): mapping for /index.html (an HTML document) [Mon Mar 22 15:33:31 2004] [info] Exiting Mike:filter.pm [Mon Mar 22 15:33:31 2004] [info] Mike:filter.pm(29): skipping request to /rowan.jpg (not an HTML document) [Mon Mar 22 15:33:31 2004] [info] Exiting Mike:filter.pm [Mon Mar 22 15:33:48 2004] [info] Mike:filter.pm(43): mapping for /index.html (an HTML document) [Mon Mar 22 15:33:48 2004] [info] Exiting Mike:filter.pm [Mon Mar 22 15:33:48 2004] [info] Mike:filter.pm(29): skipping request to /rowan.jpg (not an HTML document) [Mon Mar 22 15:33:48 2004] [info] Exiting Mike:filter.pm [Mon Mar 22 15:33:53 2004] [debug] proxy_http.c(109): proxy: HTTP: canonicalising URL //mda.demon.nl:86/exchange/ [Mon Mar 22 15:33:53 2004] [debug] mod_proxy.c(459): Trying to run scheme_handler [Mon Mar 22 15:33:54 2004] [debug] proxy_http.c(1076): proxy: HTTP: serving URL http://mda.demon.nl:86/exchange/ [Mon Mar 22 15:33:54 2004] [debug] proxy_http.c(221): proxy: HTTP connecting http://mda.demon.nl:86/exchange/ to mda.demon.nl:86 [Mon Mar 22 15:33:54 2004] [debug] proxy_util.c(1203): proxy: HTTP: fam 2 socket created to connect to mda.demon.nl [Mon Mar 22 15:33:54 2004] [debug] proxy_http.c(370): proxy: socket is connected [Mon Mar 22 15:33:54 2004] [debug] proxy_http.c(404): proxy: connection complete to 212.238.156.229:86 (mda.demon.nl) [Mon Mar 22 15:33:54 2004] [debug] proxy_http.c(917): proxy: start body send [Mon Mar 22 15:33:54 2004] [info] Mike:filter.pm(43): mapping for /exchange/ (an HTML document) [Mon Mar 22 15:33:54 2004] [info] Exiting Mike:filter.pm Free to wrong pool 81a5a0 not 8f5cb0. [Mon Mar 22 15:33:59 2004] [notice] Parent: child process exited with status 3221225477 -- Restarting. [Mon Mar 22 15:34:00 2004] [notice] Parent: Created child process 4496 [Mon Mar 22 15:34:00 2004] [debug] mpm_winnt.c(505): Parent: Sent the scoreboard to the child [Mon Mar 22 15:34:00 2004] [notice] Child 4496: Child process is running [Mon Mar 22 15:34:00 2004] [debug] mpm_winnt.c(426): Child 4496: Retrieved our scoreboard from the parent. [Mon Mar 22 15:34:00 2004] [info] Parent: Duplicating socket 184 and sending it to child process 4496 [Mon Mar 22 15:34:00 2004] [debug] mpm_winnt.c(623): Parent: Sent 1 listeners to child 4496 [Mon Mar 22 15:34:00 2004] [debug] mpm_winnt.c(582): Child 4496: retrieved 1 listeners from parent [Mon Mar 22 15:34:00 2004] [notice] Child 4496: Acquired the start mutex. [Mon Mar 22 15:34:00 2004] [notice] Child 4496: Starting 25 worker threads. [Mon Mar 22 15:34:00 2004] [debug] child.c(695): Child 4496: Worker thread 0 starting. [Mon Mar 22 15:34:00 2004] [debug] child.c(695): Child 4496: Worker thread 1 starting. [Mon Mar 22 15:34:00 2004] [debug] child.c(695): Child 4496: Worker thread 2 starting. httpd.conf contains: <VirtualHost *:81> ServerName mail.franken.ws DocumentRoot e:/www/docs/rowan.kueper.org/ ProxyPass /exchange http://backend:86/exchange ProxyPassReverse /exchange http://backend:86/exchange ProxyPass /exchweb http://backend:86/ExchWeb ProxyPassReverse /exchweb http://backend:86/ExchWeb ProxyPass /public http://backend:86/public ProxyPassReverse /public http://backend:86/public PerlModule Apache2 PerlModule Mike::Filter <Location /> SetHandler modperl PerlOutputFilterHandler Mike::Filter PerlSetVar FilterSource backend:86 PerlAddVar FilterDestination frontend:81 </Location> </VirtualHost> Filter: package Mike::Filter; #inspired by Apache::Clean filter use 5.008; use Apache::Filter (); # $f use Apache::RequestRec (); # $r use Apache::RequestUtil (); # $r->dir_config() use Apache::Log (); # $log->info() use APR::Table (); # dir_config->get() and headers_out->get() use Apache::Const -compile => qw(OK DECLINED); use strict; use constant BUFF_LEN => 1024; sub handler { my $f = shift; my $r = $f->r; my $log = $r->server->log; # only process HTML documents unless ($r->content_type =~ m!text/html!i) { $log->info('Mike:filter.pm(29): skipping request to ', $r->uri, ' (not an HTML document)'); $log->info('Exiting Mike:filter.pm'); return Apache::DECLINED; } my $src = "" my $dst = $r->dir_config->get('FilterDestination'); # unset Content-Length since we're probably changing the length unless ($f->ctx) { $r->headers_out->unset('Content-Length'); $f->ctx(1); } $log->info('Mike:filter.pm(43): mapping for ', $r->uri, ' (an HTML document)'); while ($f->read(my $buffer, BUFF_LEN)) { $buffer =~ s/$src/$dst/ig; $f->print($buffer); } $log->info('Exiting Mike:filter.pm'); return Apache::OK; } 1; 2. Used Components and their Configuration: *** mod_perl version 1.9913 *** using d:/Perl/site/lib/Apache2/Apache/BuildConfig.pm *** Makefile.PL options: MP_AP_PREFIX => D:\Apache2 MP_COMPAT_1X => 1 MP_GENERATE_XS => 1 MP_INST_APACHE2 => 1 MP_LIBNAME => mod_perl MP_USE_DSO => 1 MP_USE_STATIC => 1 *** The httpd binary was not found $ ./Apache -V Server version: Apache/2.0.48 Server built: Mar 19 2004 00:05:49 Server's Module Magic Number: 20020903:4 Architecture: 32-bit Server compiled with.... -D APACHE_MPM_DIR="server/mpm/winnt" -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D HTTPD_ROOT="/apache" -D SUEXEC_BIN="/apache/bin/suexec" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error.log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf" $ ./Apache -l Compiled in modules: core.c mod_win32.c mpm_winnt.c http_core.c mod_so.c *** D:\Perl\bin\perl.exe -V Summary of my perl5 (revision 5 version 8 subversion 0) configuration: Platform: osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread uname='' config_args='undef' hint=recommended, useposix=true, d_sigaction=undef usethreads=undef use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cl', ccflags ='-nologo -Gf -W3 -MD -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX', optimize='-MD -DNDEBUG -O1', cppflags='-DWIN32' ccversion='', gccversion='', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='link', ldflags ='-nologo -nodefaultlib -release -libpath:"D:\Perl\lib\CORE" -machine:x86' libpth="D:\Perl\lib\CORE" libs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib perllibs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib libc=msvcrt.lib, so=dll, useshrplib=yes, libperl=perl58.lib gnulibc_version='undef' Dynamic Linking: dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -release -libpath:"D:\Perl\lib\CORE" -machine:x86' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS Locally applied patches: ActivePerl Build 804 Built under MSWin32 Compiled at Dec 1 2002 23:15:13 %ENV: PERL_LWP_USE_HTTP_10="1" @INC: D:/Perl/lib D:/Perl/site/lib . 3. This is the core dump trace: (if you get a core dump): [CORE TRACE COMES HERE] This report was generated by -e on Mon Mar 22 15:21:35 2004 GMT. --
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html
Thanks a lot, Michael Franken |
- [mp2] my filter crashes on reverse proxied content Michael Franken
- [mp2] my filter crashes on reverse proxied content Michael Franken
- Re: [mp2] my filter crashes on reverse proxied co... Michael Franken
- Re: [mp2] my filter crashes on reverse proxie... Randy Kobes
- Re: [mp2] my filter crashes on reverse pr... Michael Franken
- Re: [mp2] my filter crashes on reverse proxied co... Geoffrey Young
- Re: [mp2] my filter crashes on reverse proxie... Michael Franken
- Re: [mp2] my filter crashes on reverse proxie... Stas Bekman
- Re: [mp2] my filter crashes on reverse pr... Michael Franken
- Re: [mp2] my filter crashes on rever... Stas Bekman
- Re: [mp2] my filter crashes on r... Michael Franken