Apache and mod_proxy are an excellen choice if you want to setup a proxy or reverse proxy server. As an alternative, if you already are running IIS7 or higher, you can configure IIS to proxy requests without the need to install/maintain an Apache instance.
You can even proxy requests to other technology stacks, for example if you are runnign rails or Java, etc., you can proxy requests to webspere and other app servers and have all requests go through the same server/url/IIS instance.
The following link provides an excellent overview of how to configure IIS to proxy requests.
http://www.iis.net/learn/extensions/url-rewrite-module/reverse-proxy-with-url-rewrite-v2-and-application-request-routing
If you are having issue getting an asp.net MVC web site running on a server with IIS 7 you should check your web.config settings. I tried a variety of things, searched around the net, and finally found what I was looking for.
After some trial and error, I found that in order for things to work in IIS7 you need the below entries in your web.config, in the system.Webserver section within modules and handlers (leave other items that may already be there).
<modules runAllManagedModulesForAllRequests="true" >
<remove name="UrlRoutingModule"/>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
<handlers>
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
I found the below articles to be very helpful in troubleshooting the issue I was having.
http://chriscavanagh.wordpress.com/2008/03/11/aspnet-routing-goodbye-url-rewriting/