title: Differentiate nginx, haproxy, varnish and uWSGI/Gunicorn
body: <p>I am really new to sys admin stuff, and have only provisioned a VPS with nginx(serving the static files) and gunicorn as the web server. </p>
  
  <p>I have lately been reading about different other stuff. I came to know about other tools:</p>
  
  <p><a href="http://wiki.nginx.org/Main">nginx</a> : high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server</p>
  
  <p><a href="http://haproxy.1wt.eu/">haproxy</a> : high performance load balancer</p>
  
  <p><a href="https://www.varnish-cache.org/">varnish</a> : caching HTTP reverse proxy</p>
  
  <p><a href="http://gunicorn.org/">gunicorn</a> : python WSGI http server</p>
  
  <p><a href="http://projects.unbit.it/uwsgi/">uwsgi</a> : another python WSGI server</p>
  
  <p>I have been reading about all the above 5 tools and I have confused myself as to which one is used for what purpose? Could someone please explain me in lay man terms what use is each of the tool put in, when used together and which specific concern do they address? </p>