Forum: Ruby on Rails Apache proxy to lighttpd leads to Rails routing error

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Aaron W. (Guest)
on 2006-04-28 19:20

I have an issue I am having trouble figuring out.  I have a Rails app
running through lighttpd which is accessed through an Apache proxy.

My apache config:

<location /rails/>
        ProxyPass http://localhost:81/
        ProxyPassReverse http://localhost:81/

RewriteEngine On
RewriteRule ^/rails/(.*) http://localhost:81/$1 [P]

So when apache sees /rails/ it sends the request over to lighty.

Lighttpd config for the rails app:

$HTTP["url"] =~ "^/feedback/" {
  server.document-root = "/var/www/webapps/feedback/public/"
  alias.url = ( "/feedback/" => "/var/www/webapps/feedback/public/" )
  server.error-handler-404 = "/feedback/dispatch.fcgi"
  index-file.names = ( "index.html", "dispatch.fcgi" )
  fastcgi.server = ( ".fcgi" =>
    (( "socket" => "/tmp/feedback.fastcgi.socket",
       "bin-path" =>  "/var/www/webapps/feedback/public/dispatch.fcgi",
       "bin-environment" => ( "RAILS_ENV" => "development"),
       "min-procs" => 1,
       "max-procs" => 1

And then I have this in routes.rb so it can generate the right URLs:
ActionController::AbstractRequest.relative_url_root = "/rails/feedback"

So this all works.  If I point my browser at
https://rd-webdev/rails/feedback/ I get the default page from my app.
But if I try to go to a URL with the controller/action specified I get a
routing error.

For example, using this URL:

Rails says:
Routing Error

Recognition failed for "t/product/tracker"

So it cuts off part of the url after rails gets it.  So I know rails is
getting it, but somewhere after that the URL is changed incorrectly.
My guess as to whats happening is that Rails takes the URL it gets
(which is feedback/submit/product/tracker after lighty gets it) and
removes the relative_url_root (/rails/feedback) from that.


Any way around this?  Sorry for the long post...  Thanks!

Aaron W. (Guest)
on 2006-04-28 23:50
Well, I'm not sure if there is any way to make what I did above work.
So I just changed it so the path is the same for apache and lighty.

so if i have this URL


it should work the same as


going straight to lighttpd without the proxy.  So it works fine now.

This topic is locked and can not be replied to.