NAME¶
Catalyst::Engine::PSGI - PSGI engine for Catalyst
SYNOPSIS¶
# app.psgi
use strict;
use MyApp;
MyApp->setup_engine('PSGI');
my $app = sub { MyApp->run(@_) };
DESCRIPTION¶
Catalyst::Engine::PSGI is a Catalyst Engine that adapts Catalyst into the PSGI
gateway protocol.
COMPATIBILITY¶
- •
- Currently this engine works with Catalyst 5.8 (Catamoose)
or newer.
- •
- Your application is supposed to work with any PSGI servers
without any code modifications, but if your application uses
"$c->res->write" to do streaming write, this engine will
buffer the output until your app finishes.
To do real streaming with this engine, you should implement an
IO::Handle-like object that responds to "getline" method that
returns chunk or undef when done, and set that object to
"$c->res->body".
Alternatively, it is possible to set the body to a code reference, which
will be used to stream content as documented in the PSGI spec.
- •
- When your application runs behind the frontend proxy like
nginx or lighttpd, this Catalyst engine doesn't automatically recognize
the incoming headers like "X-Forwarded-For", because respecting
these headers by default causes a potential security issue.
You have to enable Plack::Middleware::ReverseProxy or
Plack::Middleware::ForwardedHeaders to automatically promote those
forwarded headers into "REMOTE_ADDR" hence IP address of the
request.
ReverseProxy middleware is pretty simple and has no configuration while
ForwardedHeaders allows you to configure which upstream host to trust,
etc.
AUTHOR¶
Tatsuhiko Miyagawa <miyagawa@bulknews.net>
Most of the code is taken and modified from Catalyst::Engine::CGI.
LICENSE¶
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
SEE ALSO¶
Catalyst::Engine PSGI
Plack