Browse Source

* Added NGINX instructions

git-svn-id: trunk@22842 -
michael 12 years ago
parent
commit
1f3870cc84
1 changed files with 60 additions and 0 deletions
  1. 60 0
      packages/fcl-web/src/base/FCGI-README.txt

+ 60 - 0
packages/fcl-web/src/base/FCGI-README.txt

@@ -45,6 +45,8 @@ latter case.
 2. mod_fastcgi from fastcgi.com
 2.1 on Windows
 2.1 on Linux
+3. NGINX configuration
+
 ===============================================================================
 
 1. mod_fcgid from Apache:
@@ -400,3 +402,61 @@ http://127.0.0.1/myfcgi/webmodule1/func1call
 If there is any problem, you can try and check the Apache error.log for clues.
 
 ===============================================================================
+
+3. NGINX Configuration
+
+Full configuraion of FastCGI is discussed at:
+
+http://wiki.nginx.org/HttpFastcgiModule
+
+NGINX does not support managing the FastCGI process. The FastCGI process must be
+started outside of the NGINX engine, much like the FastCgiExternalServer
+mode of Apache. NGINX will just forward the requests to whatever port the
+FastCGI process is running on. Note that the fastcgi process does not need
+to be running on the same machine as the NGINX process.
+
+This means that in the FastCGI program, you must set the port on which the 
+FastCGI process is listening:
+
+Example:
+<...snip...>
+  Application.Initialize;
+  Application.Port:=1234;//Port the FCGI application is listening on 
+  Application.Run;
+<...snip...>
+
+And the FastCGI process must be started somehow separately. 
+On windows, a windows service application is most suitable.
+On Unices, a simple process can be put in the system startup scripts.
+
+Then, NGINX must be told to forward all requests to this address.
+
+The following is a sample of a NGINX configuration which sends all requests
+to a FastCGI process, listening on port 1234 on the same machine:
+
+{
+  include /etc/nginx/fastcgi_params;
+
+  location / { 
+     fastcgi_pass 127.0.0.1:1234
+     fastcgi_split_path_info ^((?U).+www.mysite.com)(/?.+)$; 
+     fastcgi_param  PATH_INFO          $fastcgi_path_info; 
+     fastcgi_param  PATH_TRANSLATED    $document_root$fastcgi_path_info; 
+     fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name; 
+  } 
+}
+
+The "fastcgi_split_path_info" and fastcgi_param directives are needed, 
+so that the FCL-Web environment gets enough information to act on the
+request. (PATH_INFO and SCRIPT_FILENAME are needed to work correctly)
+
+This is another example:
+
+location ~ /helloworld/.*) {
+  fastcgi_pass    127.0.0.1:1234
+  fastcgi_split_path_info ^((?U)./helloworld)(/?.+)$; 
+  fastcgi_param   PATH_INFO   $path_info;
+  fastcgi_param   SCRIPT_NAME "/helloworld";
+}
+
+All urls below 'helloworld' will be passed on to the FastCGI process.