Fixed wrong app name for socket in non-root config
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Deployment / nginx / FastCGI.pod
index 0987b46..2cd9269 100644 (file)
@@ -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
@@ -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,7 @@ 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.
 
-=head3  Non-root configuration
+=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,15 +60,33 @@ 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<http://nginx.net>