lighttpd 1.4.8 and multiple rails-apps

Posted by jan Wed, 23 Nov 2005 15:15:00 GMT

lighttpd 1.4.8 was just released and next to a pile of bugfixes we added a new option to fastcgi.server to allow a simple setup of multiple rails app in one virtual host.

Next to the usual setup with fastcgi.server the new option ‘strip-request-uri’ removes parts of the request-uri before they are sent to the backend:

$HTTP["url"] =~ "^/app1/" {
  server.document-root = "/home/jan/rails/app1/public/" 
  alias.url = ( "/app1/" => "/home/jan/rails/app1/public/" )
  server.error-handler-404 = "/app1/dispatch.fcgi" 
  fastcgi.server = ( "/app1/dispatch.fcgi" =>
    (( "socket" => "/tmp/app1.socket1",
       "bin-path" =>  "/home/jan/rails/app1/public/dispatch.fcgi",
       "strip-request-uri" => "/app1/" 
  )))
}

$HTTP["url"] =~ "^/app2/" {
  server.document-root = "/home/jan/rails/app2/public/" 
  alias.url = ( "/app2/" => "/home/jan/rails/app2/public/" )
  server.error-handler-404 = "/app2/dispatch.fcgi" 
  fastcgi.server = ( "/app2/dispatch.fcgi" =>
    (( "socket" => "/tmp/app2.socket1",
       "bin-path" =>  "/home/jan/rails/app2/public/dispatch.fcgi",
       "strip-request-uri" => "/app2" 
  )))
}

But why ?

Rails has a strict mapping of URLs to the application:
/controller/action/parameter
and as soon as you want to run multiple rails apps at the same virtual host you will get the namespace-clashs.
/app1/controller/action/parameter
/app2/controller/action/parameter
looks better and all we have do now is stripping the /appx before we hand it over to rails.

Later we will add this option to mod_scgi and mod_proxy too or even add a rewrite at that level.

Trackbacks

Use the following link to trackback from your own site:
http://blog.lighttpd.net/articles/trackback/35

Comments

Leave a response

Comments