Browser resolves server's host name.
Browser sends the request to the server.
Nginx gets the request and terminates HTTPS/SPDY.
Varnish handles HTTP caching.
HAProxy load balances the traffic.
Web server (thin/puma) receives the request and passes control to application code.
Application prepares a response.
Response goes through web server through HAProxy, Varnish and Nginx back to the browser.