You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Edward Moon <em...@mooned.org> on 2000/12/23 03:33:44 UTC

[Solved]: Apache::Compress + mod_proxy problem

Here's a patch for Apache::Compress that passes off proxied requests to
mod_proxy.

Without this patch Apache::Compress will return an internal server error
since it can't find the proxied URI on the local filesystem.

Much of the patch was lifted from chapter 7 of the Eagle book.

Right now the code requires you to write proxy settings twice (i.e. in the
FileMatch block for Apache::Compress and in the mod_proxy section):

<FilesMatch "\.(htm|html)$">
	SetHandler	perl-script
	PerlSetVar	PerlPassThru '/proxy/ =>
			http://private.company.com/,
			/other/ => http://www.someother.co.uk'
	PerlHandler	Apache::Compress
</FilesMatch>

ProxyRequests On
ProxyPass		/proxy		http://private.company.com/
ProxyPassReverse	/proxy		http://private.company.com/
ProxyPass		/other		http://www.someother.co.uk/
ProxyPassReverse	/other		http://www.someother.co.uk/

34a35,49
> 
>   if ($r->proxyreq) {
>       use Apache::Proxy;
>       my $uri = $r->uri();
> 
>       my %mappings = split /\s*(?:,|=>)\s*/, $r->dir_config('PerlPassThru');
> 
>       for my $src (keys %mappings) {
> 	  next unless $uri =~ s/^$src/$mappings{$src}/;
>       }
> 
>       my $status = Apache::Proxy->pass($r, $uri);
>       return $status;
>   }
>