Commit | Line | Data |
45b58a85 |
1 | =head1 NAME |
2 | |
3 | Catalyst::Manual::Deployment::nginx::FastCGI - Deploying Catalyst with nginx |
4 | |
0191b435 |
5 | =head1 nginx |
45b58a85 |
6 | |
7 | Catalyst runs under nginx via FastCGI in a similar fashion as the lighttpd |
5abded07 |
8 | standalone server. |
45b58a85 |
9 | |
10 | nginx does not have its own internal FastCGI process manager, so you must run |
11 | the FastCGI service separately. |
12 | |
0191b435 |
13 | =head2 Configuration |
45b58a85 |
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; |
48bee5f2 |
45 | |
45b58a85 |
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 | |
0191b435 |
55 | =head2 Non-root configuration |
45b58a85 |
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 | |
5abded07 |
69 | This behavior is somewhat different from Apache and lighttpd, but is still |
45b58a85 |
70 | functional. |
71 | |
48bee5f2 |
72 | =head2 SSL |
73 | |
74 | Make sure that nginx passes this to your fastcgi. To ensure this, you need |
75 | the following in your nginx config for the SSL vhost: |
76 | |
77 | fastcgi_param HTTPS on |
78 | |
79 | =head1 MORE INFO |
80 | |
45b58a85 |
81 | For more information on nginx, visit: |
82 | L<http://nginx.net> |
83 | |
84 | =head1 AUTHORS |
85 | |
86 | Catalyst Contributors, see Catalyst.pm |
87 | |
88 | =head1 COPYRIGHT |
89 | |
90 | This library is free software. You can redistribute it and/or modify it under |
91 | the same terms as Perl itself. |
92 | |
93 | =cut |