NAME
Catalyst::Engine::PSGI - PSGI engine for Catalyst
SYNOPSIS
# app.psgiuse 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 <[email protected]>
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