Why use Apache in front of another web server?

Solution 1:

Web application servers are good at hosting their application (Ruby, Java, etc), but not as good as Apache at hosting static files, or providing load balancing/failover (mod_proxy), security/filtering (mod_security), rewriting (mod_rewrite) etc. Therefore it's quite common to use Apache as the front end, possibly serving all the static content, and then proxying requests to the application server (mongrel, tomcat, etc).

Apache is a well-audited piece of code that has "been around the block" somewhat more than the newer servers, so it makes sense to have it as the server that faces the untrusted Internet. It also means you can put your application servers inside your network, and your Apache servers in your DMZ.