Rip the stuff out of Engine::FastCGI in master
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Deployment / nginx / FastCGI.pod
1 =head1 NAME
2
3 Catalyst::Manual::Deployment::nginx::FastCGI - Deploying Catalyst with nginx
4
5 =head nginx
6
7 Catalyst runs under nginx via FastCGI in a similar fashion as the lighttpd
8 standalone server as described above.
9
10 nginx does not have its own internal FastCGI process manager, so you must run
11 the FastCGI service separately.
12
13 =head3 Configuration
14
15 To configure nginx, you must configure the FastCGI parameters and also the
16 socket your FastCGI daemon is listening on.  It can be either a TCP socket
17 or a Unix file socket.
18
19 The server configuration block should look roughly like:
20
21     server {
22         listen $port;
23
24         location / {
25             fastcgi_param  QUERY_STRING       $query_string;
26             fastcgi_param  REQUEST_METHOD     $request_method;
27             fastcgi_param  CONTENT_TYPE       $content_type;
28             fastcgi_param  CONTENT_LENGTH     $content_length;
29
30             fastcgi_param  SCRIPT_NAME        /;
31             fastcgi_param  PATH_INFO          $fastcgi_script_name;
32             fastcgi_param  REQUEST_URI        $request_uri;
33             fastcgi_param  DOCUMENT_URI       $document_uri;
34             fastcgi_param  DOCUMENT_ROOT      $document_root;
35             fastcgi_param  SERVER_PROTOCOL    $server_protocol;
36
37             fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
38             fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
39
40             fastcgi_param  REMOTE_ADDR        $remote_addr;
41             fastcgi_param  REMOTE_PORT        $remote_port;
42             fastcgi_param  SERVER_ADDR        $server_addr;
43             fastcgi_param  SERVER_PORT        $server_port;
44             fastcgi_param  SERVER_NAME        $server_name;
45         
46             # Adjust the socket for your applications!
47             fastcgi_pass   unix:$docroot/myapp.socket;
48         }
49     }
50
51 It is the standard convention of nginx to include the fastcgi_params in a
52 separate file (usually something like C</etc/nginx/fastcgi_params>) and
53 simply include that file.
54
55 =head3  Non-root configuration
56
57 If you properly specify the PATH_INFO and SCRIPT_NAME parameters your
58 application will be accessible at any path. The SCRIPT_NAME variable is the
59 prefix of your application, and PATH_INFO would be everything in addition.
60
61 As an example, if your application is rooted at /myapp, you would configure:
62
63     fastcgi_param  SCRIPT_NAME /myapp/;
64     fastcgi_param  PATH_INFO   $fastcgi_script_name;
65
66 C<$fastcgi_script_name> would be "/myapp/path/of/the/action".  Catalyst will
67 process this accordingly and setup the application base as expected.
68
69 This behavior is somewhat different than Apache and Lighttpd, but is still
70 functional.
71
72 For more information on nginx, visit:
73 L<http://nginx.net>
74
75 =head1 AUTHORS
76
77 Catalyst Contributors, see Catalyst.pm
78
79 =head1 COPYRIGHT
80
81 This library is free software. You can redistribute it and/or modify it under
82 the same terms as Perl itself.
83
84 =cut