I am interested in widening my knowledge in designing large scale distributed systems. I have come across the topics Cache and Proxy servers. For Proxy servers we are using Nginx for example, and Nginx also has it's own Cache. Now, what is the major difference between the cache inside Nginx and Redis ? Particularly I read many articles regarding Proxy servers. I am not completely getting the point of these proxy servers. Some articles do mention that load balancers, proxy and cache are done in Nginx itself, and some have separate servers for each. Could any one please elaborate these in a better way ? Thanks in advance.