X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FDeployment%2Fnginx%2FFastCGI.pod;h=53cd42cf7e25ac607f00b7c312d9b0122320eefb;hb=HEAD;hp=0987b461197787afb6660ed1c42d9f83ac81a7f7;hpb=45b58a85a818703c790e8c09786cc449bad3506c;p=catagits%2FCatalyst-Manual.git diff --git a/lib/Catalyst/Manual/Deployment/nginx/FastCGI.pod b/lib/Catalyst/Manual/Deployment/nginx/FastCGI.pod index 0987b46..53cd42c 100644 --- a/lib/Catalyst/Manual/Deployment/nginx/FastCGI.pod +++ b/lib/Catalyst/Manual/Deployment/nginx/FastCGI.pod @@ -2,15 +2,15 @@ Catalyst::Manual::Deployment::nginx::FastCGI - Deploying Catalyst with nginx -=head nginx +=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. -=head3 Configuration +=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 @@ -27,7 +27,7 @@ The server configuration block should look roughly like: 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; @@ -42,7 +42,7 @@ The server configuration block should look roughly like: 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; } @@ -52,7 +52,15 @@ It is the standard convention of nginx to include the fastcgi_params in a separate file (usually something like C) and simply include that file. -=head3 Non-root configuration +If you include the C 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 @@ -60,17 +68,35 @@ 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: - 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 +L =head1 AUTHORS