/usr/share/perl5/Catalyst/Manual/Deployment/nginx/FastCGI.pod is in libcatalyst-manual-perl 5.9009-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | =head1 NAME
Catalyst::Manual::Deployment::nginx::FastCGI - Deploying Catalyst with nginx
=head1 nginx
Catalyst runs under nginx via FastCGI in a similar fashion as the lighttpd
standalone server.
nginx does not have its own internal FastCGI process manager, so you must run
the FastCGI service separately.
=head2 Configuration
To configure nginx, you must configure the FastCGI parameters and also the
socket your FastCGI daemon is listening on. It can be either a TCP socket
or a Unix file socket.
The server configuration block should look roughly like:
server {
listen $port;
location / {
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME '';
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# Adjust the socket for your applications!
fastcgi_pass unix:$docroot/myapp.socket;
}
}
It is the standard convention of nginx to include the fastcgi_params in a
separate file (usually something like C</etc/nginx/fastcgi_params>) and
simply include that file.
If you include the C</etc/nginx/fastcgi_params> that comes with your
distribution, e.g. Debian, you need to adjust a couple of parameters for PSGI
compatibility, use something like this:
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_NAME '';
fastcgi_param PATH_INFO $fastcgi_script_name;
=head2 Non-root configuration
If you properly specify the PATH_INFO and SCRIPT_NAME parameters your
application will be accessible at any path. The SCRIPT_NAME variable is the
prefix of your application, and PATH_INFO would be everything in addition.
As an example, if your application is rooted at /myapp, you would configure:
rewrite ^/myapp$ /myapp/ permanent;
location /myapp/ {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_NAME /myapp/;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_pass unix:/tmp/myapp.socket;
}
C<$fastcgi_script_name> would be "/myapp/path/of/the/action". Catalyst will
process this accordingly and setup the application base as expected.
This behavior is somewhat different from Apache and lighttpd, but is still
functional.
Note that the rewrite may not be needed with newer versions of nginx,
and the paths must be exactly as specified - the trailing slash in the
location block and the SCRIPT_NAME are important.
=head2 SSL
Make sure that nginx passes this to your fastcgi. To ensure this, you need
the following in your nginx config for the SSL vhost:
fastcgi_param HTTPS on
=head1 MORE INFO
For more information on nginx, visit:
L<http://nginx.net>
=head1 AUTHORS
Catalyst Contributors, see Catalyst.pm
=head1 COPYRIGHT
This library is free software. You can redistribute it and/or modify it under
the same terms as Perl itself.
=cut
|