Jon, it's the responsibility of your proxy to set X-Forwarded-For, and of the Application to check :port if it cares about the real port, or the X-Forwarded-For list in the case that you acknowledge the request might be proxied.
Hi there,
I have encountered a problem with redirects with Sinatra proxied by
Apache. Basically, the port number of the backend application server
(Mongrel or whatever) will appear in the Location header.
I've done a fairly extensive investigation here: https://github.com/jonleighton/redirect_test
If you read README.md it basically explains everything in detail, but
what it boils down to is this: Rack::Request#port is incorrect, in
that it uses SERVER_PORT when no explicit port is given by
host_with_port.
Rails is not affected, since it implements its own
ActionDispatch::Request#port method. I believe the Rails
implementation is correct and should be implemented in Rack.
If people agree with this analysis then I'm happy to produce a patch
against Rack.
Cheers,
Jon
--
http://jonathanleighton.com/