1#!/usr/bin/perl -w 2use HTTP::Proxy qw( :log ); 3use HTTP::Proxy::HeaderFilter::simple; 4use strict; 5 6# a very simple proxy 7my $proxy = HTTP::Proxy->new(@ARGV); 8 9# this filter redirects all requests to perlmonks.org 10my $filter = HTTP::Proxy::HeaderFilter::simple->new( 11 sub { 12 my ( $self, $headers, $message ) = @_; 13 14 # modify the host part of the request 15 $self->proxy()->log( ERROR, "FOO", $message->uri() ); 16 $message->uri()->host('perlmonks.org'); 17 18 # create a new redirect response 19 my $res = HTTP::Response->new( 20 301, 21 'Moved to perlmonks.org', 22 [ Location => $message->uri() ] 23 ); 24 25 # and make the proxy send it back to the client 26 $self->proxy()->response($res); 27 } 28); 29 30# put this filter on perlmonks.com and www.perlmonks.org 31$proxy->push_filter( host => 'perlmonks.com', request => $filter ); 32$proxy->push_filter( host => 'www.perlmonks.org', request => $filter ); 33 34$proxy->start(); 35