NAME

Plack::Middleware::Proxy::ByHeader - choose remote host by header

SYNOPSIS

my $app = builder {
  enable "Proxy::ByHeader", 
      header  => [ 'X-Taz-Proxy-To', 'Host' ];
      allowed => [ 'example.com', 'www.example.com', 'www2.example.com' ];

  Plack::App::Proxy->new()->to_app;
}

DESCRIPTION

Plack::Middleware::Proxy::ByHeader examines the request header to set the special environment variable plack.proxy.url which is used by Plack::App::Proxy to proxy the request.

If any of the header field names set with the option header is present in the request and if its value matches one of the allowed values, plack.proxy.url is set to the request uri with the hostname changed to the value of the header field.

The first present header short circuits the check even its value is not allowed. In this case the request is left unchanged.

If multiple headers with the same field name are present, the last value is used.

ATTRIBUTES

An array reference of headers to check. Defaults to the HOST header.

allowed

An array reference of allowed remote hosts. The hosts has to match perfectly, subdomains or wildcards are not possible. Defaults to an empty array reference which has the special meaning of allowing every remote target.

SEE ALSO

Plack::App::Proxy

AUTHOR

Mario Domgoergen <mario@domgoergen.com>