|
2 | 2 | <html lang="en"> |
3 | 3 | <head> |
4 | 4 | <meta charset="utf-8" /> |
5 | | - <title>HAProxy version 2.2.33-40 - Configuration Manual</title> |
| 5 | + <title>HAProxy version 2.2.33-77 - Configuration Manual</title> |
6 | 6 | <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> |
7 | 7 | <link href="https://raw.githubusercontent.com/thomaspark/bootswatch/v3.3.7/cerulean/bootstrap.min.css" rel="stylesheet" /> |
8 | 8 | <link href="../css/page.css?0.4.2-15" rel="stylesheet" /> |
|
3497 | 3497 | You can use <strong>left</strong> and <strong>right</strong> arrow keys to navigate between chapters.<br> |
3498 | 3498 | </p> |
3499 | 3499 | <p class="text-right"> |
3500 | | - <small>Converted with <a href="https://github.com/cbonte/haproxy-dconv">haproxy-dconv</a> v<b>0.4.2-15</b> on <b>2024/07/03</b></small> |
| 3500 | + <small>Converted with <a href="https://github.com/cbonte/haproxy-dconv">haproxy-dconv</a> v<b>0.4.2-15</b> on <b>2025/04/22</b></small> |
3501 | 3501 | </p> |
3502 | 3502 | </div> |
3503 | 3503 | <!-- /.sidebar --> |
|
3508 | 3508 | <div class="text-center"> |
3509 | 3509 | <h1><a href="http://www.haproxy.org/" title="HAProxy"><img src="../img/HAProxyCommunityEdition_60px.png?0.4.2-15" /></a></h1> |
3510 | 3510 | <h2>Configuration Manual</h2> |
3511 | | - <p><strong>version 2.2.33-40</strong></p> |
| 3511 | + <p><strong>version 2.2.33-77</strong></p> |
3512 | 3512 | <p> |
3513 | 3513 | 2024/04/05<br> |
3514 | 3514 |
|
@@ -12289,7 +12289,8 @@ <h2 id="chapter-4.2" data-target="4.2"><small><a class="small" href="#4.2">4.2.< |
12289 | 12289 | third retry. You can disable redispatches with a value of 0.</pre> |
12290 | 12290 | </div> |
12291 | 12291 | <pre class="text">In HTTP mode, if a server designated by a cookie is down, clients may |
12292 | | -definitely stick to it because they cannot flush the cookie, so they will not |
| 12292 | +definitely stick to it, for example when using "<a href="#option%20persist">option persist</a>" or |
| 12293 | +"<a href="#force-persist">force-persist</a>", because they cannot flush the cookie, so they will not |
12293 | 12294 | be able to access the service anymore. |
12294 | 12295 |
|
12295 | 12296 | Specifying "<a href="#option%20redispatch">option redispatch</a>" will allow the proxy to break cookie or |
@@ -12321,7 +12322,7 @@ <h2 id="chapter-4.2" data-target="4.2"><small><a class="small" href="#4.2">4.2.< |
12321 | 12322 |
|
12322 | 12323 | If this option has been enabled in a "defaults" section, it can be disabled |
12323 | 12324 | in a specific instance by prepending the "no" keyword before it. |
12324 | | -</pre><div class="page-header"><b>See also :</b> "<a href="#retries">retries</a>", "<a href="#force-persist">force-persist</a>"</div> |
| 12325 | +</pre><div class="page-header"><b>See also :</b> "<a href="#option%20persist">option persist</a>", "<a href="#force-persist">force-persist</a>", "<a href="#retries">retries</a>"</div> |
12325 | 12326 | <a class="anchor" name="option"></a><a class="anchor" name="4-option"></a><a class="anchor" name="4.2-option"></a><a class="anchor" name="option (Proxies)"></a><a class="anchor" name="option (Alphabetically sorted keywords reference)"></a><a class="anchor" name="option redis-check"></a><a class="anchor" name="4-option redis-check"></a><a class="anchor" name="4.2-option redis-check"></a><a class="anchor" name="option redis-check (Proxies)"></a><a class="anchor" name="option redis-check (Alphabetically sorted keywords reference)"></a><div class="keyword"><b><a class="anchor" name="option redis-check"></a><a href="#4.2-option%20redis-check">option redis-check</a></b></div><pre class="text">Use redis health checks for server testing |
12326 | 12327 | </pre><div><p> May be used in sections :</p><table class="table table-bordered" border="0" cellspacing="0" cellpadding="0"> |
12327 | 12328 | <thead><tr><th>defaults</th><th>frontend</th><th>listen</th><th>backend</th></tr></thead> |
@@ -15601,14 +15602,47 @@ <h2 id="chapter-4.2" data-target="4.2"><small><a class="small" href="#4.2">4.2.< |
15601 | 15602 | There is also another difference between the two timeouts : when a connection |
15602 | 15603 | expires during timeout http-keep-alive, no error is returned, the connection |
15603 | 15604 | just closes. If the connection expires in "<span class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">http-request<span class="caret"></span></a><ul class="dropdown-menu"><li class="dropdown-header">This keyword is available in sections :</li><li><a href="#http-request%20%28Alphabetically%20sorted%20keywords%20reference%29">Alphabetically sorted keywords reference</a></li><li><a href="#http-request%20%28Proxy%20section%29">Proxy section</a></li></ul></span>" while waiting for a |
15604 | | -connection to complete, a HTTP 408 error is returned. |
| 15605 | +request to complete, an HTTP 408 error is returned to the client before |
| 15606 | +closing the connection, unless "<a href="#option%20http-ignore-probes">option http-ignore-probes</a>" is set in the |
| 15607 | +frontend. |
15605 | 15608 |
|
15606 | | -In general it is optimal to set this value to a few tens to hundreds of |
15607 | | -milliseconds, to allow users to fetch all objects of a page at once but |
15608 | | -without waiting for further clicks. Also, if set to a very small value (e.g. |
15609 | | -1 millisecond) it will probably only accept pipelined requests but not the |
15610 | | -non-pipelined ones. It may be a nice trade-off for very large sites running |
15611 | | -with tens to hundreds of thousands of clients. |
| 15609 | +In general "<a href="#timeout%20http-keep-alive">timeout http-keep-alive</a>" is best used to prevent clients from |
| 15610 | +holding open an otherwise idle connection too long on sites seeing large |
| 15611 | +amounts of short connections. This can be accomplished by setting the value |
| 15612 | +to a few tens to hundreds of milliseconds in HTTP/1.1. This will close the |
| 15613 | +connection after the client requests a page without having to hold that |
| 15614 | +connection open to wait for more activity from the client. In that scenario, |
| 15615 | +a new activity from the browser would result in a new handshake at the TCP |
| 15616 | +and/or SSL layer. A common use case for this is HTTP sites serving only a |
| 15617 | +redirect to the HTTPS page. Such connections are better not kept idle too |
| 15618 | +long because they won't be reused, unless maybe to fetch a favicon. |
| 15619 | + |
| 15620 | +Another use case is the exact opposite: some sites want to permit clients |
| 15621 | +to reuse idle connections for a long time (e.g. 30 seconds to one minute) but |
| 15622 | +do not want to wait that long for the first request, in order to avoid a very |
| 15623 | +inexpensive attack vector. In this case, the http-keep-alive timeout would be |
| 15624 | +set to a large value, but http-request would remain low (a few seconds). |
| 15625 | + |
| 15626 | +When set to a very small value additional requests that are not pipelined |
| 15627 | +are likely going to be handled over another connection unless the requests |
| 15628 | +are truly pipelined, which is very rare with HTTP/1.1 (requests being sent |
| 15629 | +back-to-back without waiting for a response). Most HTTP/1.1 implementations |
| 15630 | +send a request, wait for a response and then send another request. A small |
| 15631 | +value here for HTTP/1.1 may be advantageous to use less memory and sockets |
| 15632 | +for sites with hundreds of thousands of clients, at the expense of an |
| 15633 | +increase in handshake computation costs. |
| 15634 | + |
| 15635 | +Special care should be taken with small values when dealing with HTTP/2. The |
| 15636 | +nature of HTTP/2 is to multiplex requests over a connection in order to save |
| 15637 | +on the overhead of reconnecting the TCP and/or SSL layers. The protocol also |
| 15638 | +uses control frames which cope poorly with early TCP connection closures, on |
| 15639 | +very rare occasions this may result in truncated responses when data are |
| 15640 | +destroyed in flight after leaving HAProxy (which then cannot even log an |
| 15641 | +error). A suggested low starting value for HTTP/2 connections would be around |
| 15642 | +4 seconds. This would prevent most modern keep-alive implementations from |
| 15643 | +needlessly holding open stale connections, and at the same time would allow |
| 15644 | +subsequent requests to reuse the connection. However, this should be adjusted |
| 15645 | +as needed and is simply a starting point. |
15612 | 15646 |
|
15613 | 15647 | If this parameter is not set, the "<span class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">http-request<span class="caret"></span></a><ul class="dropdown-menu"><li class="dropdown-header">This keyword is available in sections :</li><li><a href="#http-request%20%28Alphabetically%20sorted%20keywords%20reference%29">Alphabetically sorted keywords reference</a></li><li><a href="#http-request%20%28Proxy%20section%29">Proxy section</a></li></ul></span>" timeout applies, and if both |
15614 | 15648 | are not set, "<a href="#timeout%20client">timeout client</a>" still applies at the lower level. It should be |
@@ -22041,9 +22075,10 @@ <h2 id="chapter-8.4" data-target="8.4"><small><a class="small" href="#8.4">8.4.< |
22041 | 22075 | instance during a POST request, the time already runs, and this can distort |
22042 | 22076 | apparent response time. For this reason, it's generally wise not to trust |
22043 | 22077 | too much this field for POST requests initiated from clients behind an |
22044 | | - untrusted network. A value of "-1" here means that the last the response |
22045 | | - header (empty line) was never seen, most likely because the server timeout |
22046 | | - stroke before the server managed to process the request. |
| 22078 | + untrusted network. A value of "-1" here means that the last response header |
| 22079 | + (empty line) was never seen, most likely because the server timeout stroke |
| 22080 | + before the server managed to process the request or because the server |
| 22081 | + returned an invalid response. |
22047 | 22082 |
|
22048 | 22083 | - Td: this is the total transfer time of the response payload till the last |
22049 | 22084 | byte sent to the client. In HTTP it starts after the last response header |
@@ -23108,7 +23143,7 @@ <h2 id="chapter-10.3" data-target="10.3"><small><a class="small" href="#10.3">10 |
23108 | 23143 | <br> |
23109 | 23144 | <hr> |
23110 | 23145 | <div class="text-right"> |
23111 | | - HAProxy 2.2.33-40 – Configuration Manual<br> |
| 23146 | + HAProxy 2.2.33-77 – Configuration Manual<br> |
23112 | 23147 | <small>, 2024/04/05</small> |
23113 | 23148 | </div> |
23114 | 23149 | </div> |
|
0 commit comments