my %env;
my $error = \*STDERR; # send STDERR to the web server
$error = \*STDOUT # send STDERR to stdout (a logfile)
- if $options->{keep_stderr}; # (if asked to)
+ if $options->{keep_stderr}; # (if asked to)
my $request =
FCGI::Request( \*STDIN, \*STDOUT, $error, \%env, $sock,
$self->prepare_write($c);
$self->{_prepared_write} = 1;
}
+
+ # XXX: We can't use Engine's write() method because syswrite
+ # appears to return bogus values instead of the number of bytes
+ # written: http://www.fastcgi.com/om_archive/mail-archive/0128.html
+
+ # Prepend the headers if they have not yet been sent
+ if ( my $headers = delete $self->{_header_buf} ) {
+ $buffer = $headers . $buffer;
+ }
# FastCGI does not stream data properly if using 'print $handle',
# but a syswrite appears to work properly.
For more information on using FastCGI under Apache, visit
L<http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html>
+=head3 Authorization header with mod_fastcgi or mod_cgi
+
+By default, mod_fastcgi/mod_cgi do not pass along the Authorization header,
+so modules like C<Catalyst::Plugin::Authentication::Credential::HTTP> will
+not work. To enable pass-through of this header, add the following
+mod_rewrite directives:
+
+ RewriteCond %{HTTP:Authorization} ^(.+)
+ RewriteRule ^(.*)$ $1 [E=HTTP_AUTHORIZATION:%1,PT]
+
=head2 Lighttpd
These configurations were tested with Lighttpd 1.4.7.
=head3 Non-root configuration
You can also run your application at any non-root location with either of the
-above modes.
+above modes. Note the required mod_rewrite rule.
+ url.rewrite = ( "myapp\$" => "myapp/" )
fastcgi.server = (
"/myapp" => (
"MyApp" => (