Actually, I've just seen the following in the Django mailing lists:

http://www.mail-archive.com/[email protected]/msg33992.html

Looks like the option to select the last item is deliberate.

On Jun 25, 3:15 pm, delboy <[email protected]> wrote:
> Hi,
>
> We've an application that uses url_for in controllers and views. In
> views, url_for generates a relative url (as if :only_path where used).
> All is fine there.
>
> However, in controllers, url_for generates a full url, with the host
> name. This causes problems when we have a chain of Apache proxy
> servers:
>
> My Browser ---> Proxy 1 ----> Proxy 2 ----> Phusion Deployment Server.
>
> In this scenario, the request header item HTTP_X_FORWARDED_HOST
> contains the following:
>
> proxy1:81, proxy2
>
> Rails extracts the host by splitting this string and getting the last
> item:
>
> (actionpack-2.3.2\lib\action_controller\request.rb line 271)
>
>     def raw_host_with_port
>       if forwarded = env["HTTP_X_FORWARDED_HOST"]
>         forwarded.split(/,\s?/).last
>       else
>         env['HTTP_HOST'] || "#{env['SERVER_NAME'] || env
> ['SERVER_ADDR']}:#{env['SERVER_PORT']}"
>       end
>     end
>
> What happens is that we get proxy2 as the host.
>
> Shouldn't it be trying to get the first item instead -
>
>         forwarded.split(/,\s?/).first
>
> giving us proxy1:81 instead?
>
> Is this a bug? If not, is there reasoning behind this?
>
> Derek.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to