My original impression was that it sat inbetween the server (apache) and app (i.e. rails app). I envisioned the relationship chain to be like this client (browser) ---request --> server (apache) ----> rack -----> app (rails) and the response would be in the same order but in reverse. But I just read the following form the rubylearning rack tutorial http://gallery.mailchimp.com/e49655551a5bb47498310c7de/files/RackIntro.pdf Remember: The fundamental idea behind Rack middleware is - come between the calling client and the server, process the HTTP request before sending it to the server, and processing the HTTP response before returning it to the client. Is that right?