Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
87 lines (61 sloc) 2.33 KB
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.