Client and Proxy are in the same network. If a client wants to communicate with a resource outside of the network, it does not do so directly, but instead asks the proxy to do that. Reasons why that is beneficial:
- Security: Proxy acts as a firewall and hides client’s identity through encryption
- Management: Proxy can receive requests from many clients simultaneously, so it acts as a central managed gateway to the outside network
- Performance: Proxy caches and compresses responses
Similar to a proxy a reverse proxy sits between clients and servers, but this time the reverse proxy is part of the internal network of the servers and it forwards ‘outside client requests’ to the internal servers. This way you get the same benefits as with a normal proxy (security, management, performance).
A load balancer is a reverse proxy, and so forwards incoming client requests from an outside network to internals servers. A load balancer has the main task of prioritizing servers that can handle the processing of the request best, in other words, it balances the load of computation amongst several servers to achieve a better overall performance when serving the client’s request.