=head1 nginx
Catalyst runs under nginx via FastCGI in a similar fashion as the lighttpd
-standalone server as described above.
+standalone server.
nginx does not have its own internal FastCGI process manager, so you must run
the FastCGI service separately.
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
- fastcgi_param SCRIPT_NAME /;
+ 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 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;
}
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
As an example, if your application is rooted at /myapp, you would configure:
- fastcgi_param SCRIPT_NAME /myapp/;
- fastcgi_param PATH_INFO $fastcgi_script_name;
+ 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 than Apache and Lighttpd, but is still
+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>