<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<p><br/>
</p>
<div class="moz-cite-prefix">On 12/18/20 6:00 AM,
<a class="moz-txt-link-abbreviated" href="mailto:nginx-request@nginx.org">nginx-request@nginx.org</a> wrote:<br/>
</div>
<blockquote type="cite" cite="mid:mailman.3.1608292800.3915.nginx@nginx.org">
<pre class="moz-quote-pre" wrap="">Re: How to adjust HPACK dynamic table?</pre>
</blockquote>
<p>Sorry I'm not yet familiar with how to write a follow-up on the
mailing list, including the inline text, but thank you Maxim for
your response to my inquiry. Please see below for a follow-up
question.<br/>
</p>
<pre class="moz-quote-pre" wrap="">On Thu, Dec 17, 2020 at 05:01:54AM +0000, Jon Carmicheal wrote:
</pre>
<blockquote type="cite" style="color: #000000;">
<pre class="moz-quote-pre" wrap="">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.
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">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).
</pre>
<blockquote type="cite" style="color: #000000;">
<pre class="moz-quote-pre" wrap="">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?
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">Yes, it is supported. The "how" is specified in the section "6.3.
Dynamic Table Size Update" of the same RFC
(<a class="moz-txt-link-freetext" href="https://tools.ietf.org/html/rfc7541#section-6.3">https://tools.ietf.org/html/rfc7541#section-6.3</a>).
How is this accomplished in nginx? Can I configure the nginx server so that it sets the size of the dynamic table to 0 immediately when an HTTP/2 session is initiated?
</pre>
<blockquote type="cite" style="color: #000000;">
<pre class="moz-quote-pre" wrap="">I've been trying to play with "http2_max_field_size" and
"http2_max_header_size" in the server configuration file as
described in
<a class="moz-txt-link-freetext" href="https://nginx.org/en/docs/http/ngx_http_v2_module.html">https://nginx.org/en/docs/http/ngx_http_v2_module.html</a>. 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.
</pre>
</blockquote>
<pre class="moz-quote-pre" wrap="">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.
Thanks, this was my assumption.
--
Maxim Dounin
<a class="moz-txt-link-freetext" href="http://mdounin.ru/">http://mdounin.ru/</a>
------------------------------</pre>
</body></html>