HTTP/2 C library and tools

Nghttp2 v1.18.0

We have released nghttp2 v1.18.0. The changes are summarized below.


Since the previous release, “Content-Length: 0” in 204 status response has been treated as error, as per RFC 7230. But it turned out that some widely used services send them. To workaround this issue, it is now allowed, but ignored. That is application never get “Content-Length” header field in 204 status response.


Because of dynamic DNS support for nghttpx, c-ares library is now required to build bundled applications.


tiny-nghttpd has been removed. Nowadays nghttpd does the better job in this area.


nghttpx gets backend dynamic DNS support. Previously, backend host name is resolved at start up or configuration reloading, and nghttpx keeps using those addresses through out its entire session. Now with “dns” parameter in backend option, nghttpx resolves host name dynamically. For performance reasons, nghttpx caches the resolved addresses for configured period of time (see dns-cache-timeout option). By default, this feature is not used. To use this feature, add “dns” parameter to backend option:


Previously, backend API request can only contain numeric addresses, but with “dns” parameter, it can contain non-numeric host name as well.

We reworked error log format. Now they are documented in nghttpx(1) manual page.

frontend-keep-alive-timeout option has been added to specify the period during which HTTP/1 keep alive connection stays open.

The bug that fetch-ocsp-response script cannot run with OpenSSL 1.1.0 has been fixed.