As a general rule, Reason needs to know the domain under which it is
being served up. While theoretically, urls et al. could be all
relative (and therefore domain agnostic), Reason also does a fair
amount of http redirection, for things like redirecting to an https
version of a page, or for sending you to the next step when you fill
out a form, etc. For these things Reason needs to build a fully
qualified URL, and all it knows about is the name of the host that
Reason is being hosted on, so that is what it uses.
I don't have a lot of experience with web proxies, but I know that
there are "smarter" and "dumber" proxies -- the smarter ones actually
inspect the content and headers as it passes through them and rewrites
URLs, while the dumber ones just pass the content and headers without
any modification. I suspect that using a smarter proxy -- I think
there is an apache module that smartens up the apache proxy, and there
are other proxies that are not apache based -- would solve the
problem.
Alternatively, if Reason is or could be 100% proxied through your www
domain, you could change the HTTP_HOST constant in Reason to be www.
rather than reason., which would make Reason think that it is actually
being served under www and act accordingly. (There may be some places
in Reason code where the server variable may be referenced rather than
the setting constant, but it would not be hard to identify those
places in the code and fix that.)
Matt