Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Catalyst Request trait which allows you to set the URI base with a HTTP header

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 t
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Changes
Octocat-spinner-32 MANIFEST.SKIP
Octocat-spinner-32 Makefile.PL
Octocat-spinner-32 README
README
NAME
    Catalyst::TraitFor::Request::ProxyBase - Replace request base with value
    passed by HTTP proxy

SYNOPSIS
        package MyApp;
        use Moose;
        use namespace::autoclean;

        use Catalyst;
        use CatalystX::RoleApplicator;

        extends 'Catalyst';

        __PACKAGE__->apply_request_class_roles(qw/
            Catalyst::TraitFor::Request::ProxyBase
        /);

        __PACKAGE__->setup;

DESCRIPTION
    This module is a Moose::Role which allows you more flexibility in your
    application's deployment configurations when deployed behind a proxy.

    The problem is that there is no standard way for a proxy to tell a
    backend server what the original URI for the request was, or if the
    request was initially SSL. (Yes, I do know about "X-Forwarded-Host", but
    they don't do enough)

    This creates an issue for someone wanting to deploy the same cluster of
    application servers behind various URI endpoints.

    Using this module, the request base ("$c->req->base") is replaced with
    the contents of the "X-Request-Base" header, which is expected to be a
    full URI, for example:

        http://example.com
        https://example.com
        http://other.example.com:81/foo/bar/yourapp

    This value will then be used as the base for uris constructed by
    "$c->uri_for".

    In addition the request uri ("$c->req->uri") will reflect the scheme and
    path specifed in the header.

REQUIRED METHODS
    base
    secure

WRAPPED METHODS
    base
    secure

APACHE SETUP
    On the frontend Proxy Apache, you would want to enable a Virtualhost
    config somewhat like this. The backend apache config stays unchanged.

        <Virtualhost *:80>
            ProxyRequests Off

            <Location /preview>
                # You must have mod_headers enabled for that
                # RequestHeader set X-Request-Base /preview
                RequestHeader set X-Request-Base http://www.example.com/preview
            </Location>

            ProxyPass /preview http://my.vpn.host/
            ProxyPassReverse /preview http://my.vpn.host/
        </Virtualhost>

BUGS
    Probably. Patches welcome, please fork from:

        http://github.com/bobtfish/catalyst-traitfor-request-proxybase

    and send a pull request.

AUTHOR
    Tomas Doran (t0m) "<bobtfish@bobtfish.net>"

CONTRIBUTORS
    Klaus Ita (koki) "<klaus@worstofall.com>"

COPYRIGHT
    This module is Copyright (c) 2009 Tomas Doran and is licensed under the
    same terms as perl itself.

Something went wrong with that request. Please try again.