lighttpd 1.4.8 刚刚发布,除了大量错误修复外,我们还在 fastcgi.server 中添加了一个新选项,以允许在一个虚拟主机中简单地设置多个 Rails 应用。
除了 fastcgi.server 的常规设置之外,新的选项“strip-request-uri”会在将请求 URI 发送到后端之前移除其部分内容。
$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" ))) }
但为什么呢?
Rails 对 URL 到应用的映射非常严格
/controller/action/parameter
一旦您想在同一个虚拟主机上运行多个 Rails 应用,就会出现命名空间冲突。
/app1/controller/action/parameter /app2/controller/action/parameter
看起来更好,现在我们所要做的就是在将其交给 Rails 之前剥离 /appx。
稍后我们也会将此选项添加到 mod_scgi 和 mod_proxy,甚至在该级别添加重写规则。