Commit a5e1a0ba authored by Luca Toscano's avatar Luca Toscano
Browse files

mod_proxy*.xml: improve connection reuse documentation

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1803258 13f79535-47bb-0310-9956-ffa450edef68
parent 2b6f9e83
Loading
Loading
Loading
Loading
+21 −12
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@ ProxyVia On

      <p>The two default workers have a fixed configuration
      and will be used if no other worker matches the request.
      They do not use HTTP Keep-Alive or connection pooling.
      They do not use HTTP Keep-Alive or connection reuse.
      The TCP connections to the origin server will instead be
      opened and closed for each request.</p>

@@ -306,8 +306,8 @@ ProxyPass "/examples" "http://backend.example.com/examples" timeout=10
      <note><title>DNS resolution for origin domains</title>
      <p>DNS resolution happens when the socket to
        the origin domain is created for the first time.
        When connection pooling is used, each backend domain is resolved 
        only once per child process, and reused for all further connections 
        When connection reuse is enabled, each backend domain is resolved 
        only once per child process, and cached for all further connections 
        until the child is recycled. This information should to be considered 
        while planning DNS maintenance tasks involving backend domains. 
        Please also check <directive module="mod_proxy">ProxyPass</directive>
@@ -871,7 +871,11 @@ expressions</description>
    a local virtual path; <var>url</var> is a partial URL for the
    remote server and cannot include a query string.</p>

    <note><strong>Note: </strong>This directive is not supported within
    <note>It is strongly suggested to review the concept of a
    <a href="#workers">Worker</a> before proceeding any further
    with this section.</note>

    <note>This directive is not supported within
    <directive type="section" module="core">Directory</directive> and
    <directive type="section" module="core">Files</directive> containers.</note>

@@ -986,27 +990,29 @@ ProxyPass "/mirror/foo" "http://backend.example.com"
    using  <code>key=value</code> parameters, described in the tables
    below.</p>

    <note type="warning"><title>Maximum connections to the backend</title>
    <p>By default, mod_proxy will allow and retain the maximum number of
    connections that could be used simultaneously by that web server child
    process.  Use the <code>max</code> parameter to reduce the number from
    the default.  Use the <code>ttl</code> parameter to set an optional
    the default. The pool of connections is maintained per web server child
    process, and <code>max</code> and other settings are not coordinated
    among all child processes, except when only one child process is allowed
    by configuration or MPM design.</p>
    </note>

    <p>Use the <code>ttl</code> parameter to set an optional
    time to live; connections which have been unused for at least
    <code>ttl</code> seconds will be closed.  <code>ttl</code> can be used
    to avoid using a connection which is subject to closing because of the
    backend server's keep-alive timeout.</p>

    <p>The pool of connections is maintained per web server child
    process, and <code>max</code> and other settings are not coordinated
    among all child processes, except when only one child process is allowed
    by configuration or MPM design.</p>

    <example><title>Example</title>
        <highlight language="config">
        ProxyPass "/example" "http://backend.example.com" max=20 ttl=120 retry=300
        </highlight>
    </example>

    <table border="2"><tr><th>BalancerMember parameters</th></tr></table>
    <table border="2"><tr><th>Worker|BalancerMember parameters</th></tr></table>
    <table>
    <tr><th>Parameter</th>
        <th>Default</th>
@@ -1057,7 +1063,10 @@ ProxyPass "/mirror/foo" "http://backend.example.com"
    httpd and
    the backend server (regardless of protocol) tends to silently
    drop connections or when backends themselves may be under round-
    robin DNS. To disable connection pooling reuse,
    robin DNS.
    When connection reuse is enabled each backend domain is resolved
    (with a DNS query) only once per child process and cached for all further
    connections until the child is recycled. To disable connection reuse,
    set this property value to <code>On</code>.
    </td></tr>
    <tr><td>enablereuse</td>
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ ProxyPass "/myapp/" "fcgi://localhost:4000/" enablereuse=on
    <p> The following example passes the request URI as a filesystem
    path for the PHP-FPM daemon to run. The request URL is implicitly added
    to the 2nd parameter. The hostname and port following fcgi:// are where
    PHP-FPM is listening.  Connection pooling is enabled.</p>
    PHP-FPM is listening.  Connection pooling/reuse is enabled.</p>
    <example><title>PHP-FPM</title>
    <highlight language="config">
ProxyPassMatch "^/myapp/.*\.php(/.*)?$" "fcgi://localhost:9000/var/www/" enablereuse=on
+1 −1
Original line number Diff line number Diff line
@@ -547,7 +547,7 @@ client undue influence.</p>
<p>Using this flag triggers the use of <module>mod_proxy</module>, without handling of persistent connections. This
means the performance of your proxy will be better if you set it up with <directive module="mod_proxy">ProxyPass</directive> or
<directive module="mod_proxy">ProxyPassMatch</directive></p>
<p>This is because this flag triggers the use of the default worker, which does not handle connection pooling.</p>
<p>This is because this flag triggers the use of the default worker, which does not handle connection pooling/reuse.</p>
<p>Avoid using this flag and prefer those directives, whenever you can.</p>
</note>