Running Apache behind an IIS server. .Net Solution

Yesterday I had the challenge to redirect – rewrite an url from my public IIS7 server to an internal Apache server. For instance a request to http://www.mysite.com/app handled by IIS should be redirected (using a reverse proxy) to ; http://127.0.0.1:8080/app where the internal Apache is listening.

Trying to configure it with the new Application Request Routing (ARR) module from Microsoft was a disappointing task. Once installed, my server stopped serving pages, and I could not find a way to make it work.

So I started googling for another solution, finding out that most of the internet articles tell you that is almost impossible to do the work the way ; I wanted, recommending to use Apache as your public server and then redirect – rewrite requests to an internal IIS server.

Finally I crossed my eyes over a page that talked about Managed Fusion URL Rewriter that was exactly what I was looking for: a simple, fast and easy to configure solution.

Managed Fusion URL Rewriter is a really small ASP.NET assembly based on Apache mod_rewrite which provides nice url rewrite and reverse proxy capabilities.

So to solve my issue I created an ASP.Net application to handle requests for http://www.mysite.com/app on my IIS server, following the examples provided with Managed Fusion URL Rewriter download, ; and changing the provided ManagedFusion.Rewriter.txt configuration file to:

1
2
3
4
5
6
RewriteEngine On
#RewriteLog c:log.txt ;
#RewriteLogLevel 9 
RewriteBase /app
RewriteRule ^(.*)$ ; ; ; http://127.0.0.1:8080/app$1 [QSA, P]

The configuration simply tells to the Managed Fusion URL Rewriter that any call to /app should be redirected to the internal Apache server.

Hope it helps!!!

Leave a Reply