📄 mod_proxy.html.en
字号:
then</p>
<div class="example"><p><code>
ProxyPass /mirror/foo/ http://backend.example.com/
</code></p></div>
<p>will cause a local request for
<code>http://example.com/mirror/foo/bar</code> to be internally converted
into a proxy request to <code>http://backend.example.com/bar</code>.</p>
<p>The <code>!</code> directive is useful in situations where you don't want
to reverse-proxy a subdirectory, <em>e.g.</em></p>
<div class="example"><p><code>
ProxyPass /mirror/foo/i !<br />
ProxyPass /mirror/foo http://backend.example.com
</code></p></div>
<p>will proxy all requests to <code>/mirror/foo</code> to
<code>backend.example.com</code> <em>except</em> requests made to
<code>/mirror/foo/i</code>.</p>
<div class="note"><h3>Note</h3>
<p>Order is important. you need to put the exclusions <em>before</em> the
general <code class="directive">ProxyPass</code> directive.</p>
</div>
<p>As of Apache 2.1, the ability to use pooled connections to a backend
server is available. Using the <code>key=value</code> parameters it is
possible to tune this connection pooling. The default for a <code>Hard
Maximum</code> for the number of connections is the number of threads per
process in the active MPM. In the Prefork MPM, this is always 1, while with
the Worker MPM it is controlled by the
<code class="directive">ThreadsPerChild</code>.</p>
<p>Setting <code>min</code> will determine how many connections will always
be open to the backend server. Upto the Soft Maximum or <code>smax</code>
number of connections will be created on demand. Any connections above
<code>smax</code> are subject to a time to live or <code>ttl</code>. Apache
will never create more than the Hard Maximum or <code>max</code> connections
to the backend server.</p>
<div class="example"><p><code>
ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300
</code></p></div>
<table>
<tr><th>Parameter</th>
<th>Default</th>
<th>Description</th></tr>
<tr><td>min</td>
<td>0</td>
<td>Minumum number of connections that will always
be open to the backend server.</td></tr>
<tr><td>max</td>
<td>1...n</td>
<td>Hard Maximum number of connections that will be
allowed to the backend server. The default for a Hard Maximum
for the number of connections is the number of threads per process in the
active MPM. In the Prefork MPM, this is always 1, while with the Worker MPM
it is controlled by the <code class="directive">ThreadsPerChild</code>.
Apache will never create more than the Hard Maximum connections
to the backend server.</td></tr>
<tr><td>smax</td>
<td>max</td>
<td>Upto the Soft Maximum
number of connections will be created on demand. Any connections above
<code>smax</code> are subject to a time to live or <code>ttl</code>.
</td></tr>
<tr><td>acquire</td>
<td>-</td>
<td>If set this will be the maximum time to wait for a free
connection in the connection pool. If there are no free connections
in the pool the Apache will return <code>SERVER_BUSY</code> status to
the client.
</td></tr>
<tr><td>flushpackets</td>
<td>off</td>
<td>Determines whether the proxy module will auto-flush the output
brigade after each "chunk" of data. 'off' means that it will flush
only when needed, 'on' means after each chunk is sent and
'auto' means poll/wait for a period of time and flush if
no input has been received for 'flushwait' milliseconds.
Currently this is in effect only for AJP.
</td></tr>
<tr><td>flushwait</td>
<td>10</td>
<td>The time to wait for additional input, in milliseconds, before
flushing the output brigade if 'flushpackets' is 'auto'.
</td></tr>
<tr><td>keepalive</td>
<td>Off</td>
<td>This parameter should be used when you have a firewall between your
Apache and the backend server, who tend to drop inactive connections.
This flag will tell the Operating System to send <code>KEEP_ALIVE</code>
messages on inactive connections (interval depends on global OS settings,
generally 120ms), and thus prevent the firewall to drop the connection.
To enable keepalive set this property value to <code>On</code>.
</td></tr>
<tr><td>lbset</td>
<td>0</td>
<td>Sets the load balancer cluster set that the worker is a member
of. The load balancer will try all members of a lower numbered
lbset before trying higher numbered ones.
</td></tr>
<tr><td>loadfactor</td>
<td>1</td>
<td>Worker load factor. Used with BalancerMember.
It is a number between 1 and 100 and defines the normalized weighted
load applied to the worker.
</td></tr>
<tr><td>redirect</td>
<td>-</td>
<td>Redirection Route of the worker. This value is usually
set dynamically to enable safe removal of the node from
the cluster. If set all requests without session id will be
redirected to the BalancerMember that has route parametar
equal as this value.
</td></tr>
<tr><td>retry</td>
<td>60</td>
<td>Connection pool worker retry timeout in seconds.
If the connection pool worker to the backend server is in the error state,
Apache will not forward any requests to that server until the timeout
expires. This enables to shut down the backend server for maintenance,
and bring it back online later.
</td></tr>
<tr><td>route</td>
<td>-</td>
<td>Route of the worker when used inside load balancer.
The route is a value appended to seesion id.
</td></tr>
<tr><td>status</td>
<td>-</td>
<td>Single letter value defining the initial status of
this worker: 'D' is disabled, 'S' is stopped, 'H' is hot-standby
and 'E' is in an error state. Status can be set (which is the default)
by prepending with '+' or cleared by prepending with '-'.
Thus, a setting of 'S-E' sets this worker to Stopped and
clears the in-error flag.
</td></tr>
<tr><td>timeout</td>
<td><code class="directive">Timeout</code></td>
<td>Connection timeout in seconds.
If not set the Apache will wait until the free connection
is available. This directive is used for limiting the number
of connections to the backend server together with <code>max</code>
parameter.
</td></tr>
<tr><td>ttl</td>
<td>-</td>
<td>Time To Live for the inactive connections above the
<code>smax</code> connections in seconds. Apache will close all
connections that has not been used inside that time period.
</td></tr>
</table>
<p>If the Proxy directive scheme starts with the
<code>balancer://</code> then a virtual worker that does not really
communicate with the backend server will be created. Instead it is responsible
for the management of several "real" workers. In that case the special set of
parameters can be add to this virtual worker. See <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>
for more information about how the balancer works.
</p>
<table>
<tr><th>Parameter</th>
<th>Default</th>
<th>Description</th></tr>
<tr><td>lbmethod</td>
<td>byrequests</td>
<td>Balancer load-balance method. Select the load-balancing scheduler
method to use. Either <code>byrequests</code>, to perform weighted
request counting or <code>bytraffic</code>, to perform weighted
traffic byte count balancing. Default is <code>byrequests</code>.
</td></tr>
<tr><td>maxattempts</td>
<td>1</td>
<td>Maximum number of failover attempts before giving up.
</td></tr>
<tr><td>nofailover</td>
<td>Off</td>
<td>If set to <code>On</code> the session will break if the worker is in
error state or disabled. Set this value to On if backend servers do not
support session replication.
</td></tr>
<tr><td>stickysession</td>
<td>-</td>
<td>Balancer sticky session name. The value is usually set to something
like <code>JSESSIONID</code> or <code>PHPSESSIONID</code>,
and it depends on the backend application server that support sessions.
</td></tr>
<tr><td>timeout</td>
<td>0</td>
<td>Balancer timeout in seconds. If set this will be the maximum time
to wait for a free worker. Default is not to wait.
</td></tr>
</table>
<p>A sample balancer setup</p>
<div class="example"><p><code>
ProxyPass /special-area http://special.example.com/ smax=5 max=10<br />
ProxyPass / balancer://mycluster stickysession=jsessionid nofailover=On<br />
<Proxy balancer://mycluster><br />
<span class="indent">
BalancerMember http://1.2.3.4:8009<br />
BalancerMember http://1.2.3.5:8009 smax=10<br />
# Less powerful server, don't send as many requests there<br />
BalancerMember http://1.2.3.6:8009 smax=1 loadfactor=20<br />
</span>
</Proxy>
</code></p></div>
<p>Setting up a hot-standby, that will only be used if no other
members are available</p>
<div class="example"><p><code>
ProxyPass / balancer://hotcluster/ <br />
<Proxy balancer://hotcluster><br />
<span class="indent">
BalancerMember http://1.2.3.4:8009 loadfactor=1<br />
BalancerMember http://1.2.3.5:8009 loadfactor=2<br />
# The below is the hot standby<br />
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -