A reverse proxy (or gateway) is a proxy that is configured to appear to the client just like an ordinary web server.
Traffic from the internet at large enters system through reverse proxy, which then routes it to the service.
The client makes ordinary http requests that are going to the proxy. The proxy then decides (based on several routing criterion) where to send internally those requests and returns the content as if it were itself the origin.
The proxy configuration that do the inverse (ie receives internal request and routes them to external service such as a website) is called a forward proxy. To be honest a gateway also forward request to internal service.
A typical usage of a reverse proxy is:
See HTTP - Proxy
An HTTP reverse proxy uses non-standard headers to inform the upstream server about the user’s IP address and other request properties.
See IP in HTTP
The below application may cache HTTP response