Even if HAProxy can do TCP proxying, it is often used in front of web application, exactly where we find Varnish .
They complete very well together: Varnish will make the website faster by offloading static object delivery to itself, while HAProxy can ensure a smooth load-balancing with smart persistence and DDOS mitigation.
Basically, HAProxy and Varnish completes very well, despite being “competitors” on a few features, each on them has its own domain of expertise where it performs very well:HAProxy is a reverse-proxy Load-Balancer and Varnish is a Reverse-proxy cache.
reference:http://blog.exceliance.fr/2012/07/04/haproxy-and-varnish-comparison/