Running IIS and Apache on the same Windows Server

I have a Windows 2003 server and I run IIS on it. I want to run php on the server so I can host a drupal site. I wish to host the site using apache so that I can have clean URLs. Is it possible to run IIS and Apache? Would there be any tips that you would recommend?


Solution 1:

You can have IIS and Apache living on the same port - if they are on different IP addresses. There is some special configuration you need to do for IIS though, as it typically binds all ports to all IPs. Here is documentation for how to configure IIS to only listen on certain ports/IPs: http://support.microsoft.com/kb/813368/EN-US/

Solution 2:

If you want to run them both, and have them both appear respond to requests on the same port, then you can use a thing called a Reverse Proxy.

Let's say you want everything to run through Apache, with the exception of a few url's you want to run through IIS.

You would set up Apache to listen on :80 (normal HTTP traffic) and set up IIS to listen on something else (say, :81).

Everything except, say, /myIISApp/ would run through Apache, and /myIISApp/ would run through IIS.

Then, you would set up your Reverse Proxy to catch any URL matching /myIISApp/ and forward it to :81/myIISApp/ (or whatever the URL for the IIS machine is).

Note that having your IIS as your :80 server and Apache as your :81 server can be more difficult to configure. See this SF post here for a basic how-to.