How to adjust HPACK dynamic table?
Maxim Dounin
mdounin at mdounin.ru
Thu Dec 17 18:02:09 UTC 2020
Hello!
On Thu, Dec 17, 2020 at 05:01:54AM +0000, Jon Carmicheal wrote:
> I would like to disable the caching of headers in the dynamic
> table of the HTTP/2 HPACK compression algorithm described in RFC
> 7541. I have defined my nginx server with
>
> listen 8080
>
> http2
>
> ;
>
> and I've confirmed that the HPACK algorithm is working as
> expected with Huffman encoding, static header table indexing,
> and dynamic header table indexing. But I haven't been able to
> disable the dynamic table.
You cannot disable dynamic table support in nginx. As an HPACK
decoder, nginx supports dynamic table of up to 4096 octets (the
default for SETTINGS_HEADER_TABLE_SIZE in HTTP/2).
> RFC 7541 mentions in "Section 4.2. Maximum Table Size" the
> ability of an HTTP/2 node to "clear entries from the dynamic
> table by setting a maximum size of 0, which can subsequently be
> restored." Is that a feature supported by nginx? Can I disable
> the dynamic table entirely so that no header fields are cached?
> And can I arbitrarily send a flush request so that all entries
> are evicted and then the dynamic table size is restored? If so,
> how?
Yes, it is supported. The "how" is specified in the section "6.3.
Dynamic Table Size Update" of the same RFC
(https://tools.ietf.org/html/rfc7541#section-6.3).
> I've been trying to play with "http2_max_field_size" and
> "http2_max_header_size" in the server configuration file as
> described in
> https://nginx.org/en/docs/http/ngx_http_v2_module.html. But I
> don't think those are the right parameters. When I set either of
> them to zero, it makes the server return an error when a header
> is sent.
These are unrelated parameters. They set size limits on
compressed individual header fields and total length of all
uncompressed headers, respectively, so nginx will reject attempts
to use larger headers.
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx
mailing list