What are the differences between HAProxy and Nginx when it comes to their abilities as a reverse proxy?
HAProxy is really just a load balancer/reverse proxy. Nginx is a Webserver that can also function as a reverse proxy.
Here are some differences:
At Stack Overflow we mainly use HAProxy with nginx for SSL offloading so HAProxy is my recommendation.
I use nginx to frontend HAProxy, but only for SSL termination.
HAProxy is a much more tunable and manageable load balancer (in my experience).
I also incorporate Varnish for static object caching. (as a specific backend of HAProxy)
See this Server Fault question for more info. Ordering nginx/varnish/haproxy
If needed only for load balancing HA proxy is better. But combining both nginix and HA proxy can be more useful, as nginix is fast in providing static content, it will serve all request for static data and then send all request to HA proxy which serve as load balancer and send request to web server to serve request by balancing load.