7575<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #proxymatch" >< ProxyMatch> </a ></li >
7676<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #proxymaxforwards" >ProxyMaxForwards</a ></li >
7777<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #proxypass" >ProxyPass</a ></li >
78+ <li ><img alt =" " src =" ../images/down.gif" /> <a href =" #proxypassinterpolateenv" >ProxyPassInterpolateEnv</a ></li >
7879<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #proxypassmatch" >ProxyPassMatch</a ></li >
7980<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #proxypassreverse" >ProxyPassReverse</a ></li >
8081<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #proxypassreversecookiedomain" >ProxyPassReverseCookieDomain</a ></li >
@@ -730,7 +731,8 @@ through</td></tr>
730731<div class =" directive-section" ><h2 ><a name =" ProxyPass" id =" ProxyPass" >ProxyPass</a > <a name =" proxypass" id =" proxypass" >Directive</a ></h2 >
731732<table class =" directive" >
732733<tr ><th ><a href =" directive-dict.html#Description" >Description:</a ></th ><td >Maps remote servers into the local server URL-space</td ></tr >
733- <tr ><th ><a href =" directive-dict.html#Syntax" >Syntax:</a ></th ><td ><code >ProxyPass [<var >path</var >] !|<var >url</var > [<var >key=value</var > <var >key=value</var > ...]] [nocanon]</code ></td ></tr >
734+ <tr ><th ><a href =" directive-dict.html#Syntax" >Syntax:</a ></th ><td ><code >ProxyPass [<var >path</var >] !|<var >url</var > [<var >key=value</var >
735+ <var >key=value</var > ...]] [nocanon] [interpolate]</code ></td ></tr >
734736<tr ><th ><a href =" directive-dict.html#Context" >Context:</a ></th ><td >server config, virtual host, directory</td ></tr >
735737<tr ><th ><a href =" directive-dict.html#Status" >Status:</a ></th ><td >Extension</td ></tr >
736738<tr ><th ><a href =" directive-dict.html#Module" >Module:</a ></th ><td >mod_proxy</td ></tr >
@@ -1014,13 +1016,50 @@ through</td></tr>
10141016 removes the normal limited protection against URL-based attacks
10151017 provided by the proxy.</p >
10161018
1019+ <p >The optional <var >interpolate</var > keyword (available in
1020+ httpd 2.2.9 and later), in combination with
1021+ <code class =" directive" >ProxyPassInterpolateEnv</code > causes the ProxyPass
1022+ to interpolate environment variables, using the syntax
1023+ <var >${VARNAME}</var >. Note that many of the standard CGI-derived
1024+ environment variables will not exist when this interpolation happens,
1025+ so you may still have to resort to <code class =" module" ><a href =" ../mod/mod_rewrite.html" >mod_rewrite</a ></code >
1026+ for complex rules.</p >
1027+
10171028 <p >When used inside a <code class =" directive" ><a href =" ../mod/core.html#location" >< Location> </a ></code > section, the first argument is omitted and the local
10181029 directory is obtained from the <code class =" directive" ><a href =" ../mod/core.html#location" >< Location> </a ></code >.</p >
10191030
10201031 <p >If you require a more flexible reverse-proxy configuration, see the
10211032 <code class =" directive" ><a href =" ../mod/mod_rewrite.html#rewriterule" >RewriteRule</a ></code > directive with the
10221033 <code >[P]</code > flag.</p >
10231034
1035+ </div >
1036+ <div class =" top" ><a href =" #page-header" ><img alt =" top" src =" ../images/up.gif" /></a ></div >
1037+ <div class =" directive-section" ><h2 ><a name =" ProxyPassInterpolateEnv" id =" ProxyPassInterpolateEnv" >ProxyPassInterpolateEnv</a > <a name =" proxypassinterpolateenv" id =" proxypassinterpolateenv" >Directive</a ></h2 >
1038+ <table class =" directive" >
1039+ <tr ><th ><a href =" directive-dict.html#Description" >Description:</a ></th ><td >Enable Environment Variable interpolation in Reverse Proxy configurations</td ></tr >
1040+ <tr ><th ><a href =" directive-dict.html#Syntax" >Syntax:</a ></th ><td ><code >ProxyPassInterpolateEnv On|Off</code ></td ></tr >
1041+ <tr ><th ><a href =" directive-dict.html#Default" >Default:</a ></th ><td ><code >ProxyPassInterpolateEnv Off</code ></td ></tr >
1042+ <tr ><th ><a href =" directive-dict.html#Context" >Context:</a ></th ><td >server config, virtual host, directory</td ></tr >
1043+ <tr ><th ><a href =" directive-dict.html#Status" >Status:</a ></th ><td >Extension</td ></tr >
1044+ <tr ><th ><a href =" directive-dict.html#Module" >Module:</a ></th ><td >mod_proxy</td ></tr >
1045+ <tr ><th ><a href =" directive-dict.html#Compatibility" >Compatibility:</a ></th ><td >Available in httpd 2.2.9 and later</td ></tr >
1046+ </table >
1047+ <p >This directive, together with the <var >interpolate</var > argument to
1048+ <code class =" directive" >ProxyPass</code >, <code class =" directive" >ProxyPassReverse</code >,
1049+ <code class =" directive" >ProxyPassReverseCookieDomain</code > and
1050+ <code class =" directive" >ProxyPassReverseCookiePath</code >
1051+ enables reverse proxies to be dynamically
1052+ configured using environment variables, which may be set by
1053+ another module such as <code class =" module" ><a href =" ../mod/mod_rewrite.html" >mod_rewrite</a ></code >.
1054+ It affects the <code class =" directive" >ProxyPass</code >,
1055+ <code class =" directive" >ProxyPassReverse</code >,
1056+ <code class =" directive" >ProxyPassReverseCookieDomain</code >, and
1057+ <code class =" directive" >ProxyPassReverseCookiePath</code > directives,
1058+ and causes them to substitute the value of an environment
1059+ variable <code >varname</code > for the string <code >${varname}</code >
1060+ in configuration directives.</p >
1061+ <p >Keep this turned off (for server performance) unless you need it!</p >
1062+
10241063</div >
10251064<div class =" top" ><a href =" #page-header" ><img alt =" top" src =" ../images/up.gif" /></a ></div >
10261065<div class =" directive-section" ><h2 ><a name =" ProxyPassMatch" id =" ProxyPassMatch" >ProxyPassMatch</a > <a name =" proxypassmatch" id =" proxypassmatch" >Directive</a ></h2 >
@@ -1059,7 +1098,8 @@ through</td></tr>
10591098<table class =" directive" >
10601099<tr ><th ><a href =" directive-dict.html#Description" >Description:</a ></th ><td >Adjusts the URL in HTTP response headers sent from a reverse
10611100proxied server</td ></tr >
1062- <tr ><th ><a href =" directive-dict.html#Syntax" >Syntax:</a ></th ><td ><code >ProxyPassReverse [<var >path</var >] <var >url</var ></code ></td ></tr >
1101+ <tr ><th ><a href =" directive-dict.html#Syntax" >Syntax:</a ></th ><td ><code >ProxyPassReverse [<var >path</var >] <var >url</var >
1102+ [<var >interpolate</var >]</code ></td ></tr >
10631103<tr ><th ><a href =" directive-dict.html#Context" >Context:</a ></th ><td >server config, virtual host, directory</td ></tr >
10641104<tr ><th ><a href =" directive-dict.html#Status" >Status:</a ></th ><td >Extension</td ></tr >
10651105<tr ><th ><a href =" directive-dict.html#Module" >Module:</a ></th ><td >mod_proxy</td ></tr >
@@ -1109,6 +1149,12 @@ proxied server</td></tr>
11091149 (<code >RewriteRule ... [P]</code >) from <code class =" module" ><a href =" ../mod/mod_rewrite.html" >mod_rewrite</a ></code >
11101150 because it doesn't depend on a corresponding <code class =" directive" ><a href =" #proxypass" >ProxyPass</a ></code > directive.</p >
11111151
1152+ <p >The optional <var >interpolate</var > keyword (available in
1153+ httpd 2.2.9 and later), used together with
1154+ <code class =" directive" >ProxyPassInterpolateEnv</code >, enables interpolation
1155+ of environment variables specified using the format <var >${VARNAME}</var >.
1156+ </p >
1157+
11121158 <p >When used inside a <code class =" directive" ><a href =" ../mod/core.html#location" >< Location> </a ></code > section, the first argument is omitted and the local
11131159 directory is obtained from the <code class =" directive" ><a href =" ../mod/core.html#location" >< Location> </a ></code >.</p >
11141160
@@ -1118,7 +1164,8 @@ proxied server</td></tr>
11181164<table class =" directive" >
11191165<tr ><th ><a href =" directive-dict.html#Description" >Description:</a ></th ><td >Adjusts the Domain string in Set-Cookie headers from a reverse-
11201166proxied server</td ></tr >
1121- <tr ><th ><a href =" directive-dict.html#Syntax" >Syntax:</a ></th ><td ><code >ProxyPassReverseCookieDomain <var >internal-domain</var > <var >public-domain</var ></code ></td ></tr >
1167+ <tr ><th ><a href =" directive-dict.html#Syntax" >Syntax:</a ></th ><td ><code >ProxyPassReverseCookieDomain <var >internal-domain</var >
1168+ <var >public-domain</var > [<var >interpolate</var >]</code ></td ></tr >
11221169<tr ><th ><a href =" directive-dict.html#Context" >Context:</a ></th ><td >server config, virtual host, directory</td ></tr >
11231170<tr ><th ><a href =" directive-dict.html#Status" >Status:</a ></th ><td >Extension</td ></tr >
11241171<tr ><th ><a href =" directive-dict.html#Module" >Module:</a ></th ><td >mod_proxy</td ></tr >
@@ -1134,7 +1181,8 @@ string in <code>Set-Cookie</code> headers.</p>
11341181<table class =" directive" >
11351182<tr ><th ><a href =" directive-dict.html#Description" >Description:</a ></th ><td >Adjusts the Path string in Set-Cookie headers from a reverse-
11361183proxied server</td ></tr >
1137- <tr ><th ><a href =" directive-dict.html#Syntax" >Syntax:</a ></th ><td ><code >ProxyPassReverseCookiePath <var >internal-path</var > <var >public-path</var ></code ></td ></tr >
1184+ <tr ><th ><a href =" directive-dict.html#Syntax" >Syntax:</a ></th ><td ><code >ProxyPassReverseCookiePath <var >internal-path</var >
1185+ <var >public-path</var > [<var >interpolate</var >]</code ></td ></tr >
11381186<tr ><th ><a href =" directive-dict.html#Context" >Context:</a ></th ><td >server config, virtual host, directory</td ></tr >
11391187<tr ><th ><a href =" directive-dict.html#Status" >Status:</a ></th ><td >Extension</td ></tr >
11401188<tr ><th ><a href =" directive-dict.html#Module" >Module:</a ></th ><td >mod_proxy</td ></tr >
0 commit comments