From 4fb2d6409eda6b19539a02300d18a8e853161a95 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Wed, 10 Feb 2016 14:54:58 +0000 Subject: [PATCH] Start of guide... git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1729611 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/howto/reverse_proxy.xml | 105 ++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 docs/manual/howto/reverse_proxy.xml diff --git a/docs/manual/howto/reverse_proxy.xml b/docs/manual/howto/reverse_proxy.xml new file mode 100644 index 0000000000..b9dda74c1a --- /dev/null +++ b/docs/manual/howto/reverse_proxy.xml @@ -0,0 +1,105 @@ + + + + + + + + +How-To / Tutorials + + Reverse Proxy Guide + + +

In addition to being a "basic" web server, and providing static and + dynamic content to end-users, Apache httpd (as well as most other web + servers) can also act as a reverse proxy server, also-known-as a + "gateway" server.

+ +

In such scenarios, httpd itself does not generate or host the data, + but rather the content is obtained by one or several backend servers, + which normally have no direct connection to the external network. As + httpd receives a request from a client, the request itself is proxied + to one of these backend servers, which then handles the request, generates + the content and then sends this content back to httpd, which then + generates the actual HTTP response back to the client.

+ +

There are numerous reasons for such an implementation, but generally + the typical rationales are due to security, high-availability, load-balancing + and centralized authentication/authorization. It is critical in these + implementations that the layout, design and architecture of the backend + infrastructure (those servers which actually handle the requests) are + insulated and protected from the outside; as far as the client is concerned, + the reverse proxy server is the sole source of all content.

+ +

A typical implementation is below:

+ reverse-proxy-arch +
+ + + + +
+ Simple reverse proxying + +

The ProxyPass + directive specifies the mapping of incoming requests to the backend + server (or a cluster of servers known as a Balancer + group). The simpliest example proxies all requests ("/") + to a single backend:

+ + + ProxyPass "/" "http://www.example.com" + + +

To ensure that and Location: headers generated from + the backend are modified to point to the reverse proxy, instead of + back to itself, the ProxyPassReverse + directive is most often required:

+ + + ProxyPass "/" "http://www.example.com" + ProxyPassReverse "/" "http://www.example.com" + + +

Only specific URIs can be proxied, as shown in this example:

+ + + ProxyPass "/images" "http://www.example.com" + ProxyPassReverse "/images" "http://www.example.com" + + +

In the above, any requests which start with the /images + path with be proxied to the specified backend, otherwise it will be handled + locally.

+
+ +
-- 2.40.0