# Proxies

Some are excerpts from Grokking System Design

## The Concept

A **proxy** server is an intermediary piece of hardware/software that sits between the client and the back-end server. It **receives requests** from clients and **relays** them to the origin servers.

## Usage

Typically, proxies are used to **filter requests** or **log requests**, or sometimes **transform requests** (by adding/removing headers, encrypting/decrypting, or compression).

Another advantage of a proxy server is that its **cache** can serve a lot of requests.

**Coordinating requests** from multiple servers and can be used to optimize request traffic from a system-wide perspective. e.g. collapse the same (or similar) data access requests into one request and then return the single result to the user; this scheme is called **collapsed forwarding**.
