DOC: config: Improve documentation of tune.http.maxhdr directive

The description was inproved to clrealy mentionned it is applied on received
requests and responses. In addition, a comment was added about HTTP/2 and
HTTP/3 limitation when messages are encoded to be sent.
This commit is contained in:
Christopher Faulet 2024-11-20 18:02:35 +01:00
parent 3bd9a9e7d7
commit e863d8d681
1 changed files with 16 additions and 9 deletions

View File

@ -3787,15 +3787,22 @@ tune.http.logurilen <number>
The default value is 1024. The default value is 1024.
tune.http.maxhdr <number> tune.http.maxhdr <number>
Sets the maximum number of headers in a request. When a request comes with a Sets the maximum number of headers allowed in received HTTP messages. When a
number of headers greater than this value (including the first line), it is message comes with a number of headers greater than this value (including the
rejected with a "400 Bad Request" status code. Similarly, too large responses first line), it is rejected with a "400 Bad Request" status code for a
are blocked with "502 Bad Gateway". The default value is 101, which is enough request, or "502 Bad Gateway" for a response. The default value is 101, which
for all usages, considering that the widely deployed Apache server uses the is enough for all usages, considering that the widely deployed Apache server
same limit. It can be useful to push this limit further to temporarily allow uses the same limit. It can be useful to push this limit further to
a buggy application to work by the time it gets fixed. The accepted range is temporarily allow a buggy application to work by the time it gets fixed. The
1..32767. Keep in mind that each new header consumes 32bits of memory for accepted range is 1..32767. Keep in mind that each new header consumes 32bits
each stream, so don't push this limit too high. of memory for each stream, so don't push this limit too high.
Note that HTTP/1.1 is a text protocol, so there is no special limit when the
message is sent. The limit during the message parsing is sufficient. HTTP/2
and HTTP/3 are binary protocols and require an encoding step. A limit is set
too when headers are encoded to comply to limitation imposed by the
protocols. This limit is large enough but not documented on purpose. The same
limit is applied on the first steps of the decoding for the same reason.
tune.idle-pool.shared { on | off } tune.idle-pool.shared { on | off }
Enables ('on') or disables ('off') sharing of idle connection pools between Enables ('on') or disables ('off') sharing of idle connection pools between