Scalability and flexibility: Clients see only the reverse proxy’s IP
address. This is particularly useful in a load-balanced environment,
where you can scale the number of servers up and down to match
fluctuations in traffic volume.
Web acceleration: Acceleration in this case means reducing the time
it takes to generate a response and return it to the client. Some of the
techniques for web acceleration include the following:
Compression: Compressing server responses before returning
them to the client (for instance, with gzip) reduces the amount of
bandwidth they require, which speeds their transit over the
network.
SSL termination: Encrypting the traffic between clients and
servers protects it as it crosses a public network such as the
Internet. However, decryption and encryption can be
computationally expensive. By decrypting incoming requests and
encrypting server responses, the reverse proxy frees up resources
on backend servers, which the servers can then devote to their
primary purpose—serving content.
Caching: Before returning the backend server’s response to the
client, the reverse proxy stores a copy of it locally. When the client
(or any other client) makes the same request, the reverse proxy can
provide the response itself from the cache instead of forwarding
the request to the backend server. This both decreases response
time to the client and reduces the load on the backend server. This
works great for “static” content, but there are new techniques that
can be used for “dynamic” content as well.
Content filtering: This involves monitoring traffic to and from the
web server for potentially sensitive or inappropriate data and taking
action as necessary.
Authentication: The reverse proxy authenticates users via a variety of
mechanisms and controls access to URLs hosted on the web server.
Figure 14-14 shows how requests come in from various
clients. The reverse proxy can terminate an SSL
connection or even inspect incoming traffic.