NAME
Plack::App::Proxy - proxy requests
SYNOPSIS
use Plack::Builder;
# proxy all requests for /static to 127.0.0.1:80
builder {
    mount "/static" => Plack::App::Proxy->new(remote => "http://127.0.0.1:80")->to_app;
};
# Call from other app
my $proxy = Plack::App::Proxy->new->to_app;
my $app = sub {
    my $env = shift;
    ...
    $env->{'plack.proxy.url'} = $url;
    $proxy->($env);
};
DESCRIPTION
Plack::App::Proxy is a middleware-aware proxy application for Plack.
OPTIONS
- remote
 - 
Plack::App::Proxy->new(remote => 'http://perl.org')->to_app;Specifies the base remote URL to proxy requests to.
builder { mount "/example", Plack::App::Proxy->new(remote => 'http://example.com/app/foo')->to_app; };This proxies incoming requests for
/example/barproxied tohttp://example.com/app/foo/bar. - preserve_host_header
 - 
Preserves the original Host header, which is useful when you do reverse proxying to the internal hosts.
 - backend
 - 
The HTTP backend to use. This dist comes with
LWPandAnyEvent::HTTPbackends.AnyEvent::HTTPis the default if no backend is specified. - options
 - 
The options for the HTTP backend instance.
 
MIDDLEWARE CONFIGURATIONS
This application is just like a normal PSGI application and is middleware aware, which means you can modify proxy requests (and responses) using Plack middleware stack.
It also supports the following special environment variables:
- plack.proxy.url
 - 
Overrides the proxy request URL.
 - plack.proxy.remote
 - 
Overrides the base URL path to proxy to.
 
For example, the following builder code allows you to proxy all GET requests for .png paths to the lolcat image (yes, a silly example) but proxies to the internal host otherwise.
my $mw = sub {
    my $app = shift;
    sub {
        my $env = shift;
        if ($env->{REQUEST_METHOD} eq 'GET' && $env->{PATH_INFO} =~ /\.png$/) {
            $env->{'plack.proxy.url'} = 'http://lolcat.example.com/lol.png';
        }
        $app->($env);
    };
};
use Plack::Builder;
builder {
    enable $mw;
    Plack::App::Proxy->new(remote => 'http://10.0.0.1:8080')->to_app;
};
AUTHOR
Lee Aylward
Masahiro Honma
Tatsuhiko Miyagawa
Jesse Luehrs
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.