mod_proxy.xml revision b842b65e0618c5535233b197f03dc917d184adb3
0b152383e04dbeb10dba29bcdfaa0981e4d9df27Simon Ulbricht<!DOCTYPE modulesynopsis SYSTEM "/style/modulesynopsis.dtd">
0b152383e04dbeb10dba29bcdfaa0981e4d9df27Simon Ulbricht<?xml-stylesheet type="text/xsl" href="/style/manual.en.xsl"?>
0b152383e04dbeb10dba29bcdfaa0981e4d9df27Simon Ulbricht<!-- $LastChangedRevision$ -->
0b152383e04dbeb10dba29bcdfaa0981e4d9df27Simon Ulbricht Licensed to the Apache Software Foundation (ASF) under one or more
0b152383e04dbeb10dba29bcdfaa0981e4d9df27Simon Ulbricht contributor license agreements. See the NOTICE file distributed with
0b152383e04dbeb10dba29bcdfaa0981e4d9df27Simon Ulbricht this work for additional information regarding copyright ownership.
0b152383e04dbeb10dba29bcdfaa0981e4d9df27Simon Ulbricht The ASF licenses this file to You under the Apache License, Version 2.0
0b152383e04dbeb10dba29bcdfaa0981e4d9df27Simon Ulbricht (the "License"); you may not use this file except in compliance with
0b152383e04dbeb10dba29bcdfaa0981e4d9df27Simon Ulbricht the License. You may obtain a copy of the License at
2643008447e30b6025f742eb6a661f38be756b1eSimon Ulbricht Unless required by applicable law or agreed to in writing, software
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht distributed under the License is distributed on an "AS IS" BASIS,
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
d815d2b83e945875100ceca322ebd50d96714206Simon Ulbricht See the License for the specific language governing permissions and
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht limitations under the License.
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht<modulesynopsis metafile="mod_proxy.xml.meta">
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht<description>HTTP/1.1 proxy/gateway server</description>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <p>Do not enable proxying with <directive module="mod_proxy"
2643008447e30b6025f742eb6a661f38be756b1eSimon Ulbricht >ProxyRequests</directive> until you have <a href="#access"
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht >secured your server</a>. Open proxy servers are dangerous both to your
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht network and to the Internet at large.</p>
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder <p>This module implements a proxy/gateway for Apache. It implements
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder proxying capability for <code>AJP13</code> (Apache JServe Protocol
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder version 1.3), <code>FTP</code>, <code>CONNECT</code> (for SSL),
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder <code>HTTP/0.9</code>, <code>HTTP/1.0</code>, and <code>HTTP/1.1</code>.
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder The module can be configured to connect to other proxy modules for these
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder and other protocols.</p>
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder <p>Apache's proxy features are divided into several modules in
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder <module>mod_proxy_http</module>, <module>mod_proxy_ftp</module>,
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder <module>mod_proxy_ajp</module>, <module>mod_proxy_balancer</module>,
9da6e0cb2ea6e43f5b09dcd2a9af5468a5d0fcf4Christian Maeder and <module>mod_proxy_connect</module>. Thus, if you want to use
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht one or more of the particular proxy functions, load
6150196e8d99f7161a622fdc1a872fecd378195fSimon Ulbricht <module>mod_proxy</module> <em>and</em> the appropriate module(s)
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht into the server (either statically at compile-time or dynamically
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht via the <directive module="mod_so">LoadModule</directive>
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht directive).</p>
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht <p>In addition, extended features are provided by other modules.
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht Caching is provided by <module>mod_cache</module> and related
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht modules. The ability to contact remote servers using the SSL/TLS
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht protocol is provided by the <code>SSLProxy*</code> directives of
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht <module>mod_ssl</module>. These additional modules will need
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht to be loaded and configured to take advantage of these features.</p>
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht<seealso><module>mod_proxy_http</module></seealso>
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht<seealso><module>mod_proxy_ftp</module></seealso>
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht<seealso><module>mod_proxy_connect</module></seealso>
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht<seealso><module>mod_proxy_balancer</module></seealso>
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht <section id="forwardreverse"><title>Forward and Reverse Proxies</title>
6a26171b5bc5b6ec3e1b02ae30dcfb6f03d7ffefSimon Ulbricht <p>Apache can be configured in both a <dfn>forward</dfn> and
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht <p>An ordinary <dfn>forward proxy</dfn> is an intermediate
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht server that sits between the client and the <em>origin
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht server</em>. In order to get content from the origin server,
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht the client sends a request to the proxy naming the origin server
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht as the target and the proxy then requests the content from the
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht origin server and returns it to the client. The client must be
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht specially configured to use the forward proxy to access other
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht <p>A typical usage of a forward proxy is to provide Internet
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht access to internal clients that are otherwise restricted by a
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht firewall. The forward proxy can also use caching (as provided
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht by <module>mod_cache</module>) to reduce network usage.</p>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <p>The forward proxy is activated using the <directive
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht module="mod_proxy">ProxyRequests</directive> directive. Because
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht forward proxies allow clients to access arbitrary sites through
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht your server and to hide their true origin, it is essential that
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht you <a href="#access">secure your server</a> so that only
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht authorized clients can access the proxy before activating a
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht forward proxy.</p>
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht <p>A <dfn>reverse proxy</dfn>, by contrast, appears to the
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht client just like an ordinary web server. No special
432ac7c08e2592af0660e026051ffb052e88a100Simon Ulbricht configuration on the client is necessary. The client makes
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht ordinary requests for content in the name-space of the reverse
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht proxy. The reverse proxy then decides where to send those
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht requests, and returns the content as if it was itself the
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht <p>A typical usage of a reverse proxy is to provide Internet
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht users access to a server that is behind a firewall. Reverse
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht proxies can also be used to balance load among several back-end
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht servers, or to provide caching for a slower back-end server.
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht In addition, reverse proxies can be used simply to bring
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht several servers into the same URL space.</p>
6a26171b5bc5b6ec3e1b02ae30dcfb6f03d7ffefSimon Ulbricht <p>A reverse proxy is activated using the <directive
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht module="mod_proxy">ProxyPass</directive> directive or the
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht module="mod_rewrite">RewriteRule</directive> directive. It is
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht <strong>not</strong> necessary to turn <directive
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht module="mod_proxy">ProxyRequests</directive> on in order to
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht configure a reverse proxy.</p>
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht <section id="examples"><title>Basic Examples</title>
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht <p>The examples below are only a very basic idea to help you
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht get started. Please read the documentation on the individual
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht directives.</p>
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht <p>In addition, if you wish to have caching enabled, consult
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht the documentation from <module>mod_cache</module>.</p>
abea93ed557b22ea833e1524ee5ca11afc12208aSimon Ulbricht ProxyRequests On<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht ProxyVia On<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <Proxy *><br />
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht Order deny,allow<br />
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht Deny from all<br />
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht </Proxy>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht ProxyRequests Off<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <Proxy *><br />
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht Order deny,allow<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht Allow from all<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht </Proxy><br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht ProxyPass /foo http://foo.example.com/bar<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht ProxyPassReverse /foo http://foo.example.com/bar
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <section id="access"><title>Controlling access to your proxy</title>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <p>You can control who can access your proxy via the <directive
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht module="mod_proxy" type="section">Proxy</directive> control block as in
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht the following example:</p>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <Proxy *><br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht Order Deny,Allow<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht Deny from all<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht Allow from 192.168.0<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht </Proxy>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <p>For more information on access control directives, see
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <p>Strictly limiting access is essential if you are using a
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht forward proxy (using the <directive
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht module="mod_proxy">ProxyRequests</directive> directive).
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht Otherwise, your server can be used by any client to access
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht arbitrary hosts while hiding his or her true identity. This is
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht dangerous both for your network and for the Internet at large.
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht When using a reverse proxy (using the <directive
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht module="mod_proxy">ProxyPass</directive> directive with
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <code>ProxyRequests Off</code>), access control is less
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht critical because clients can only contact the hosts that you
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht have specifically configured.</p>
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht <p><strong>See Also</strong> the <a href="mod_proxy_http.html#env"
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht >Proxy-Chain-Auth</a> environment variable.</p>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <section id="startup"><title>Slow Startup</title>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <p>If you're using the <directive module="mod_proxy"
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht >ProxyBlock</directive> directive, hostnames' IP addresses are looked up
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht and cached during startup for later match test. This may take a few
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht seconds (or more) depending on the speed with which the hostname lookups
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <section id="intranet"><title>Intranet Proxy</title>
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht <p>An Apache proxy server situated in an intranet needs to forward
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht external requests through the company's firewall (for this, configure
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht the <directive module="mod_proxy">ProxyRemote</directive> directive
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht to forward the respective <var>scheme</var> to the firewall proxy).
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht However, when it has to
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht access resources within the intranet, it can bypass the firewall when
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht accessing hosts. The <directive module="mod_proxy">NoProxy</directive>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht directive is useful for specifying which hosts belong to the intranet and
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht should be accessed directly.</p>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <p>Users within an intranet tend to omit the local domain name from their
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht WWW requests, thus requesting "http://somehost/" instead of
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht <code>http://somehost.example.com/</code>. Some commercial proxy servers
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht let them get away with this and simply serve the request, implying a
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht configured local domain. When the <directive module="mod_proxy"
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht >ProxyDomain</directive> directive is used and the server is <a
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht href="#proxyrequests">configured for proxy service</a>, Apache can return
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht a redirect response and send the client to the correct, fully qualified,
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht server address. This is the preferred method since the user's bookmark
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht files will then contain fully qualified hosts.</p>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <section id="envsettings"><title>Protocol Adjustments</title>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <p>For circumstances where <module>mod_proxy</module> is sending
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht requests to an origin server that doesn't properly implement
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht href="/env.html">environment variables</a> that can force the
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht request to use HTTP/1.0 with no keepalive. These are set via the
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <directive module="mod_env">SetEnv</directive> directive.</p>
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht <p>These are the <code>force-proxy-request-1.0</code> and
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <Location /buggyappserver/><br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht ProxyPass http://buggyappserver:7001/foo/<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht SetEnv force-proxy-request-1.0 1<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht SetEnv proxy-nokeepalive 1<br />
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht </Location>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <section id="request-bodies"><title>Request Bodies</title>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <p>Some request methods such as POST include a request body.
987c9ee1092c7fd8b53242abefe4f3cf8e9a1011Simon Ulbricht The HTTP protocol requires that requests which include a body
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht either use chunked transfer encoding or send a
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht <code>Content-Length</code> request header. When passing these
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht requests on to the origin server, <module>mod_proxy_http</module>
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht will always attempt to send the <code>Content-Length</code>. But
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht if the body is large and the original request used chunked
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht encoding, then chunked encoding may also be used in the upstream
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht request. You can control this selection using <a
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht href="/env.html">environment variables</a>. Setting
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht <code>proxy-sendcl</code> ensures maximum compatibility with
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht upstream servers by always sending the
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht <code>proxy-sendchunked</code> minimizes resource usage by using
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht chunked encoding.</p>
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht <section id="x-headers"><title>Reverse Proxy Request Headers</title>
53d3b5d18cae658f0e54872ade90ab5259b52b95Simon Ulbricht <p>When acting in a reverse-proxy mode (using the <directive
53d3b5d18cae658f0e54872ade90ab5259b52b95Simon Ulbricht module="mod_proxy">ProxyPass</directive> directive, for example),
53d3b5d18cae658f0e54872ade90ab5259b52b95Simon Ulbricht <module>mod_proxy_http</module> adds several request headers in
987c9ee1092c7fd8b53242abefe4f3cf8e9a1011Simon Ulbricht order to pass information to the origin server. These headers
53d3b5d18cae658f0e54872ade90ab5259b52b95Simon Ulbricht <dd>The original host requested by the client in the <code>Host</code>
53d3b5d18cae658f0e54872ade90ab5259b52b95Simon Ulbricht HTTP request header.</dd>
53d3b5d18cae658f0e54872ade90ab5259b52b95Simon Ulbricht <p>Be careful when using these headers on the origin server, since
a210c2e5add831cd438183c8602ed8e610922beaSimon Ulbricht they will contain more than one (comma-separated) value if the
1651c7f5055453e18a8c34f96c333e2aa702a34eSimon Ulbricht original request already contained one of these headers. For
369771f5d48a40eda134026b1f45f63b2c00bdb8Simon Ulbricht example, you can use <code>%{X-Forwarded-For}i</code> in the log
987c9ee1092c7fd8b53242abefe4f3cf8e9a1011Simon Ulbricht format string of the origin server to log the original clients IP
ProxyRemote ftp http://ftpproxy.mydomain.com:8080
ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300
<description>Maps remote servers into the local server URL-space using regular expressions</description>
ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com$1
.com .apache.org.
ProxyDomain .mycompany.com