I am
running an apache server 2.2.3 on CentOS 5.2. I have turned on the proxy
with the following lines from my apache.conf:
<IfModule mod_proxy.c>
ProxyRequests
On
<Proxy *>
Order
deny,allow
Deny from all
Allow from
all
</Proxy>
</IfModule>
I would
like to add a header field to all requests going through the
proxy. After doing a bunch of reading it seemed that setting
up a PerlInputFilterHandler was the right thing to do. I added the
following lines to the apache.conf
PerlModule company::AddHeader
PerlInputFilterHandler
company::AddHeader
and I wrote the following example
handler
package
company::AddHeader;
use
strict;
use warnings;
use
Apache2::Filter ();
use Apache2::RequestRec ();
use APR::Table
();
use
Apache2::Const -compile => qw(OK DECLINED);
my $debug =
1;
sub handler
{
my $f = shift;
# if we
have already seen this do nothing
return Apache2::Const::DECLINED if
$f->ctx;
# get
headers
my $headers_in =
$f->r->headers_in();
# add
header field
$headers_in->set("Message","Hi Mom");
$f->r->headers_in($headers_in);
if($debug)
{
open FILE, ">>/tmp/out.log"
or die $!;
foreach my $key (keys
%{$headers_in})
{
print
FILE "$key = $headers_in->{$key}\n";
}
close FILE;
}
$f->ctx(1);
return
Apache2::Const::OK;
}
1;
As you can
see, if debugging is turned on the headers are written to the file
/tmp/out.log. The contents of out.log contains the new header, but the
requests being forwarded by the proxy don't seem to be altered. Why is the
new header not being sent?
I am pretty
sure I am missing something very simple, but have spent a day trying to figure
out what it is. Any ideas?
cheers,
Brandon