The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mojolicious::Plugin::RequestBase - Support setting base in frontend proxy

SYNOPSIS

Frontend proxy

The "X-Request-Base" header must be set in the frontend proxy.

  # nxinx
  proxy_set_header X-Request-Base "https://example.com/myapp";
  # or
  proxy_set_header X-Request-Base "/myapp";

Application

This plugin will read the "X-Request-Base" header.

  # Mojolicious
  $app->plugin("RequestBase");

  # Mojolicious::Lite
  plugin "RequestBase";

Controller

URL generating helpers, such as url_for will create the correct URL using the base URL from X-Request-Base.

Here are example with X-Request-Base set to https://example.com/myapp and a request sent to Request to https://example.com/myapp/foo:

  # /myapp/foo
  $c->url_for;

  # https://example.com/myapp/foo
  $c->url_for->to_abs;

  # https://example.com/myapp/some/path
  $c->url_for("/some/path")->to_abs;

  # https://example.com/foo (Probably not what you want)
  $c->req->url->to_abs;

Hooks

before_dispatch

In a before_dispatch the router has not yet started, so you need to pass in the request path to get the expected result:

  hook before_dispatch => sub {
    my $c = shift;

    # https://example.com/myapp/foo
    $c->url_for($c->req->url->path)->to_abs;

    # https://example.com/foo (Probably not what you want)
    $c->url_for->to_abs;
  };

DESCRIPTION

Simple plugin to support Request Base header. Just load it and set X-Request-Base in your Frontend Proxy. For instance, if you are using nginx you could use it like this:

  proxy_set_header X-Request-Base 'https://example.com/myapp';

Note that you can also pass a relative URL to retain the original hostname provided by the proxy.

METHODS

Mojolicious::Plugin::RequestBase inherits all methods from Mojolicious::Plugin and implements the following new ones.

register

  $plugin->register;

Register plugin in Mojolicious application.

SEE ALSO

Catalyst::TraitFor::Request::ProxyBase, Mojolicious, Mojolicious::Guides, http://mojolicio.us.

COPYRIGHT AND LICENSE

Copyright (C) 2011, Marcus Ramberg.

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.