how does request.host get set?

how does request.host get set? Is there a way to manually set the value in request.host? I have several application servers running rails, each has its own internal address in the request.host, so when calling redirect_to or url_for function, it uses the internal address which is not accessible to the user.

what I want is to set request.host to return mysite.com, no matter which application server it's running on.

- reynard

how does request.host get set? Is there a way to manually set the value in request.host?

Probably based on environment variables passed through by whatever is
sitting in front of mongrel (assuming that's the setup you're using). In something like nginx you can tell it to pass though various headers
eg: proxy_set_header Host $http_host;

Fred

Thanks for the hints. I'm using apache & mongrel. I think I found where it gets set, in the cgi_process.rb, apparently env["HTTP_X_FORWARDED_HOST"] is used to get the host, in my case there are 2 values, the public and the private address, it happens to take the latter. now I need to find where HTTP_X_FORWARDED_HOST gets set. it seems that it should be apache conf thing right?

- reynard

Thanks for the hints. I'm using apache & mongrel. I think I found where it gets set, in the cgi_process.rb, apparently env["HTTP_X_FORWARDED_HOST"] is used to get the host, in my case there are 2 values, the public and the private address, it happens to take the latter. now I need to find where HTTP_X_FORWARDED_HOST gets set. it seems that it should be apache conf thing right?

Yup, that should be an apache thing

Fred

interesting finding: you have to set ProxyPreserveHost On in Apache, so it does not append the local server name.

- reynard