Notes and References
Aspect | Proxy | Reverse Proxy |
---|---|---|
Definition | Acts as an intermediary between client and server, forwarding client requests to the server and relaying server responses back to the client. | Serves as an intermediary between clients and multiple backend servers, distributing client requests to the appropriate server and relaying server responses back to clients. |
Use Cases | 1. Access control and filtering. 2. Anonymity and privacy. 3. Caching and load balancing. |
1. Load balancing for high availability. 2. SSL termination (handling encryption). 3. Security and protection for backend servers. 4. Caching and compression. |
Technical Details | - Clients connect to the proxy. - Proxy forwards client requests to the server. - Server responds to proxy. - Proxy relays server response to the client. |
- Clients connect to the reverse proxy. - Reverse proxy decides which backend server to forward the request to. - Backend server processes the request and sends the response to the reverse proxy. - Reverse proxy sends the response back to the client. |
Client Perception | Clients are usually aware of the proxy’s existence and intentionally route their traffic through it. | Clients are often unaware of the reverse proxy’s presence, as they connect to it directly, and the reverse proxy forwards their requests to backend servers. |
Load Balancing | Typically doesn’t involve load balancing across multiple servers. | Primarily used for load balancing to distribute incoming requests across multiple backend servers. |
SSL Handling | May or may not handle SSL encryption/decryption. | Often handles SSL termination (decrypting SSL traffic and forwarding it unencrypted to backend servers). |
Security | Can provide some security by filtering and blocking content. | Provides security by shielding backend servers from direct exposure to the internet, preventing direct attacks on them. |
Caching | Can implement caching to store and serve frequently requested content. | Can cache content to reduce server load and improve response times. |
Examples | - Web proxies. - Content filtering proxies. - Transparent proxies. |
- Nginx. - Apache HTTP Server (with mod_proxy). - HAProxy. |