I provide hosting facilities for a high traffic website that will receive a spike in traffic in the next 2 months. In order to allow more it to perform better, I want to prepare myself and put a frontend server acting as a reverse proxy and direct traffic through it.
What reverse proxy do you suggest I use?
I've used Apache mod_proxy in the past with some good results, but is there something more performant out there, something more specific for the job? I need it to be fast, to do caching of all it can, and avoid doing requests when not needed.
I thought about HAProxy, but it seems to be more directed to provide High availability (multiple backend webservers). On this setup, the whole website is hosted on a single server, running some LAMP stuff.
We've had very good experience with Varnish.
Redpill Linpro, the company behind it, states on the Varnish product site:
Our experience is that this is very much true. In addition to being written with performance as a reverse proxy in mind, the VCL domain language for configuration is very powerful and you can get very detailed information about what it does while it works (see question 3425).
Varnish is open source, and has a good community, while being actively developed by the company.
I can't really speak about the relative performance, or how it will perform under massive load, but I have used Squid for http acceleration in the past. It works pretty good.
If your web site has lots of dynamic content a cache may not be able to help you much. You may want to check that the web site is sending out useful cache control headers and not just immediately expiring everything.
Varnish appears to be a pretty popular reverse proxy.
Also, I believe you can run Nginx as a reverse proxy too (using memcached as an option, I think.)