nghttp2 1.69.0 rpms released

nghttp2 1.69.0 rpms released and added to all supported platforms.

Major changes:

- src: Simplify format_hex and format_upper_hex
- build(deps): bump actions/upload-artifact from 4 to 5
- hpack: Optimize huffman decoding a bit
- Port ngtcp2_map changes
- Remove unused macros and enums
- src: Rewrite defer
- src: Remove empty parameter list from lambda
- src: Remove noexcept from ~Defer
- src: Adopt EVP_PKEY_get0_EC_KEY
- nghttpx: Avoid separate allocation for QUIC tx buffer
- src: Workaround performance regression since OpenSSL 3.0
- integration: Cope with os.ErrProcessDone
- build(deps): bump github.com/quic-go/quic-go from 0.55.0 to 0.56.0
- src: Simplify DList::remove
- src: Remove the duplicated test
- lib/CMakeLists.txt: Fix NGHTTP2_CONFIG_INSTALL_DIR path
- nghttpx: Ensure resetting downstream h2 stream
- build(deps): bump golang.org/x/crypto from 0.43.0 to 0.45.0
- Gha ubuntu arm
- src: Generate lowcase_tbl
- examples: Remove redundant cast in lowcase
- build(deps): bump actions/checkout from 5 to 6
- build(deps): bump github.com/quic-go/quic-go from 0.56.0 to 0.57.0
- Bump ngtcp2 and its dependencies
- build(deps): bump github.com/quic-go/quic-go from 0.57.0 to 0.57.1
- Fix union usage in nghttp2_data_provider_wrap
- Remove union from WorkerID
- Cancel sending RST_STREAM if stream is not found
- nghttpx: Remove stream_closed_ from Http2DownstreamConnection
- Remove extraneous semicolon
- src: Rewrite Address with std::variant
- build(deps): bump actions/upload-artifact from 5 to 6
- build(deps): bump actions/cache from 4 to 5
- build(deps): bump golang.org/x/net from 0.47.0 to 0.48.0
- build(deps): bump github.com/quic-go/quic-go from 0.57.1 to 0.58.0
- Rewrite Dockerfile with heredoc syntax
- src: Avoid strict aliasing violation
- Introduce nghttp2_strlen_lit
- build(deps): bump github.com/quic-go/quic-go from 0.58.0 to 0.59.0
- Increase default glitch rate limit to 10x
- build(deps): bump golang.org/x/net from 0.48.0 to 0.49.0
- GHA: Fix main branch in cancel-in-progress by
- Remove glitch detection for ignored DATA frame by
- Revert "src: Avoid strict aliasing violation" by
- build(deps): bump golang.org/x/net from 0.49.0 to 0.50.0
- Check nghttp2_is_fatal first
- altsvc: Avoid pointer arithmetic against NULL
- Ensure typedefs use named structs and unions
- Revert "Ensure typedefs use named structs and unions"
- build(deps): bump actions/upload-artifact from 6 to 7
- build(deps): bump golang.org/x/net from 0.50.0 to 0.51.0
- h2load: Fix bug that h2load does not stop early with -D option
- h2load: Add median, p95, and p99 metrics
- h2load: Refactor SDStat output
- h2load: Refactor metrics manual
- h2load: Add some QUIC metrics
- h2load: Plot histogram
- Amend #2619
- build(deps): bump docker/build-push-action from 6 to 7
- build(deps): bump docker/setup-buildx-action from 3 to 4
- h2load: Show certificate type and negotiated group
- nghttpd, nghttpx: Accept at most 10 connections per loop
- h2load: Support TLS resumption
- src: Avoid consteval for now
- nghttpx: Accept pending connections until it returns error
- h2load: Make the names of perf metric short and concise
- nghttpx: Rework close-wait packet generation for h3
- nghttpx: Add extra validation for non-regular path for HTTP/1.1
- nghttpx: More strict validation for h1 host
- h2load: Output the measurement results in JSON
- Src pass by value
- src: Refine Defer
- h2load: Print integral samples as integral
- h2load: Refactor with std::span
- nghttpd: Refactor with std::span
- build(deps): bump golang.org/x/net from 0.51.0 to 0.52.0
- nghttp: Refactor with std::span
- h2load: Use span for reading
- nghttp: Move span creation out of loop
- Add missing iframe state validation
- src: Refactor Buffer::write with std::span
- src: Adopt override keyword
- src: Simplify as_uint8_span with auto
- src: Review the use of iterator and range concepts
- nghttpx: Use std::span for upstream interface
- nghttpx: Modernize downstream connection with std::span
- nghttpx: Deal with partial write in API downstream connection
- build(deps): bump microsoft/setup-msbuild from 2 to 3
- nghttpx: Adopt std::span for LiveCheck read path
- Nghttpx connection write span
- Nghttpx connection read span
- nghttpx: Refactor QUIC utils with std::span
- nghttpx: Choose the sensible value for TCP_DEFER_ACCEPT
- src: Refactor riovec with std::span
- nghttpx: Simplify HTTP/2 writer
- h2load: Add --h3 option
- nghttpx: Format doc
- nghttpx: Deal with ECONNRESET for IPC socket on worker process side
- third-party: Bump neverbleed
- doc: Update h2load howto
- Bump llhttp to v9.3.1
- GHA: Add macos-26 build and remove macos-14 build
- h2load: Deal with h3 unidirectional stream closure
- src: Refine allocator with the modern memory construct
- Modernize BlockAllocator and its utility functions
- nghttpx: Rewrite LOG macros with std::source_location
- nghttpx: Amend #2671 to fix double logging
- nghttpx: Call Log ctor directly
- nghttpx: Rename LOG_ENABLED to log_enabled
- src: Remove enclosing anonymous namespace from constexpr variables
- src: Add static constexpr to ngtcp2 and nghttp3 callbacks
- OpenSSL 4.0.0 beta1 fix by @xl32
- build(deps): bump actions/github-script from 8 to 9
- build(deps): bump golang.org/x/net from 0.52.0 to 0.53.0
- GHA: Bump openssl to v4.0.0
- Optimize the decoded length estimation for Huffman encoded string
- Make header related errors stream error with glitch rate limit guard
- Bump ngtcp2 to v1.22.1
- Nghttpx ech
- nghttpx: Log the number of loaded ECH configuration in NOTICE level
- Bump aws-lc
- @trukna made their first contribution
- @cbarrick made their first contribution
- @xl32 made their first contribution

NGINX 1.30.0 Stable with ECH, Early Hints, HTTP/2 to backend, Brotli, TLS 1.3, OpenSSL 4.0.0, HTTP/2 and HTTP/3 for Red Hat Enterprise Linux, CentOS, Rocky, Oracle, Alma Linux EL7/EL8/EL9/EL10

nginx 1.30.0 stable version has been released, incorporating new features and bug fixes from the 1.29.x mainline branch — including Early Hints, HTTP/2 to backend and Encrypted ClientHello, sticky sessions support for upstreams, Multipath TCP support, the default proxy HTTP version set to HTTP/1.1 with keep-alive enabled, and more.

Nginx 1.30.0 Stable with HTTP/3 support added to EL7, EL8, EL9 and EL10 repositories.

Brotli compression module from Google, http2, ngx_cache_purge and ngx_http_geoip2 modules are built in. OpenSSL is built dynamically using official OpenSSL 4.0.0 with QUIC support.

Major changes:

– 1.30.x stable branch.

NGINX 1.29.8 Mainline with Brotli, TLS 1.3, OpenSSL 3.5.6, HTTP/2 and HTTP/3 for Red Hat Enterprise Linux, CentOS, Rocky, Oracle, Alma Linux EL7/EL8/EL9/EL10

nginx 1.29.8 Mainline with HTTP/3 support featuring support for Multipath TCP and upgrading the default HTTP version to HTTP/1.1 with keep-alive enabled added to EL7, EL8, EL9, EL10 repositories. brotli compression module from Google, http2, ngx cache purge and ngx http geoip2 modules added or built-in. OpenSSL built dynamically using official OpenSSL 3.5.6 with QUIC support.

nginx-1.29.8 mainline version has been released featuring max_headers configuration.

    *) Feature: the "max_headers" directive.
Thanks to Maxim Dounin.

*) Feature: OpenSSL 4.0 compatibility.

*) Feature: now the "include" directive inside the "geo" block supports wildcards.

*) Bugfix: in processing of HTTP 103 (Early Hints) responses from a proxied backend.

*) Bugfix: the $request_port and $is_request_port variables were not available in subrequests.

NGINX 1.29.7 Mainline with Brotli, TLS 1.3, OpenSSL 3.5.5, HTTP/2 and HTTP/3 for Red Hat Enterprise Linux, CentOS, Rocky, Oracle, Alma Linux EL7/EL8/EL9/EL10

nginx 1.29.7 Mainline with HTTP/3 support featuring support for Multipath TCP and upgrading the default HTTP version to HTTP/1.1 with keep-alive enabled added to EL7, EL8, EL9, EL10 repositories. brotli compression module from Google, http2, ngx cache purge and ngx http geoip2 modules added or built-in. OpenSSL built dynamically using official OpenSSL 3.5.1 with QUIC support.

nginx-1.29.7 mainline version has been released, introducing two significant updates: support for Multipath TCP and upgrading the default HTTP version to HTTP/1.1 with keep-alive enabled. This release also includes a security fix for the buffer overflow vulnerability in the ngx_http_dav_module (CVE-2026-27654), security fixes for the buffer overflow vulnerabilities in the ngx_http_mp4_module (CVE-2026-27784, CVE-2026-32647), security fixes for the mail session authentication vulnerabilities (CVE-2026-27651, CVE-2026-28753), and a security fix for the OCSP result bypass vulnerability in stream (CVE-2026-28755).

    *) Security: a buffer overflow might occur while handling a COPY or MOVE request in a location with "alias", allowing an attacker to modify the source or destination path outside of the document root (CVE-2026-27654).
Thanks to Calif.io in collaboration with Claude and Anthropic Research.

*) Security: processing of a specially crafted mp4 file by the ngx_http_mp4_module on 32-bit platforms might cause a worker process crash, or might have potential other impact (CVE-2026-27784).Thanks to Prabhav Srinath (sprabhav7).

*) Security: processing of a specially crafted mp4 file by the ngx_http_mp4_module might cause a worker process crash, or might have potential other impact (CVE-2026-32647). Thanks to Xint Code and Pavel Kohout (Aisle Research).

*) Security: a segmentation fault might occur in a worker process if the CRAM-MD5 or APOP authentication methods were used and authentication retry was enabled (CVE-2026-27651). Thanks to Arkadi Vainbrand.

*) Security: an attacker might use PTR DNS records to inject data in auth_http requests, as well as in the XCLIENT command in the backend SMTP connection (CVE-2026-28753). Thanks to Asim Viladi Oglu Manizada, Colin Warren, Xiao Liu (Yunnan University), Yuan Tan (UC Riverside), and Bird Liu (Lanzhou University).

*) Security: SSL handshake might succeed despite OCSP rejecting a client certificate in the stream module (CVE-2026-28755). Thanks to Mufeed VH of Winfunc Research.

*) Feature: the "multipath" parameter of the "listen" directive.

*) Feature: the "local" parameter of the "keepalive" directive in the "upstream" block.

*) Change: now the "keepalive" directive in the "upstream" block is enabled by default.

*) Change: now ngx_http_proxy_module supports keepalive by default; the default value for "proxy_http_version" is "1.1"; the "Connection" proxy header is not sent by default anymore.

*) Bugfix: an invalid HTTP/2 request might be sent after switching to the next upstream if buffered body was used in the ngx_http_grpc_module.

NGINX 1.28.3 Stable with Brotli, TLS 1.3, OpenSSL 3.5.5, HTTP/2 and HTTP/3 for Red Hat Enterprise Linux, CentOS, Rocky, Oracle, Alma Linux EL7/EL8/EL9/EL10

nginx 1.28.4 Stable with HTTP/3 support added to EL7, EL8, EL9, EL10 repositories. brotli compression module from Google, http2, ngx cache purge and ngx http geoip2 modules added or built-in. OpenSSL built dynamically using official OpenSSL 3.5.5 with QUIC support.

nginx-1.28.3 stable version release includes a security fix for the buffer overflow vulnerability in the ngx_http_dav_module (CVE-2026-27654), security fixes for the buffer overflow vulnerabilities in the ngx_http_mp4_module (CVE-2026-27784, CVE-2026-32647), security fixes for the mail session authentication vulnerabilities (CVE-2026-27651, CVE-2026-28753), and a security fix for the OCSP result bypass vulnerability in stream (CVE-2026-28755).

NGINX 1.29.6 Mainline with Brotli, TLS 1.3, OpenSSL 3.5.6, HTTP/2 and HTTP/3 for Red Hat Enterprise Linux, CentOS, Rocky, Oracle, Alma Linux EL7/EL8/EL9/EL10

nginx 1.29.6 Mainline with HTTP/3 support featuring sticky sessions support for upstreams added to EL7, EL8, EL9, EL10 repositories. brotli compression module from Google, http2, ngx cache purge and ngx http geoip2 modules added or built-in. OpenSSL built dynamically using official OpenSSL 3.5.1 with QUIC support.

Our OpenSSL 3.5.X builds break compatibility with nginx 1.28.1 and earlier versions, as they are compiled against quictls project with their own APIs. Thus, to upgrade OpenSSL QUIC libs, please use nginx >= 1.29.0.

    *) Feature: session affinity support; the "sticky" directive in the "upstream" block of the "http" module; the "server" directive supports the "route" and "drain" parameters.

*) Change: now nginx limits the size and rate of QUIC stateless reset packets.

*) Bugfix: receiving a QUIC packet by a wrong worker process could cause the connection to terminate.

*) Bugfix: "[crit] cache file ... contains invalid header" messages might appear in logs when sending a cached HTTP/2 response.

*) Bugfix: proxying to scgi backends might not work when using chunked transfer encoding and the "scgi_request_buffering" directive. Thanks to Mufeed VH.

*) Bugfix: in the ngx_http_mp4_module.
Thanks to Andrew Lacambra.

*) Bugfix: nginx treated a comma as separator in the "Cookie" request header line when evaluating "$cookie_..." variables.

*) Bugfix: in IMAP command literal argument parsing.

NGINX 1.29.5 Mainline with Brotli, TLS 1.3, OpenSSL 3.5.4, HTTP/2 and HTTP/3 for Red Hat Enterprise Linux, CentOS, Rocky, Oracle, Alma Linux EL7/EL8/EL9/EL10

nginx 1.29.5 Mainline with HTTP/3 support added to EL7, EL8, EL9, EL10 repositories. brotli compression module from Google, http2, ngx cache purge and ngx http geoip2 modules added or built-in. OpenSSL built dynamically using official OpenSSL 3.5.1 with QUIC support.

Our OpenSSL 3.5.4 builds break compatibility with nginx 1.28.x and earlier versions, as they are compiled against quictls project with their own APIs. Thus, to upgrade OpenSSL QUIC libs, please use nginx >= 1.29.0.

*) Security: an attacker might inject plain text data in the                              response from an SSL backend (CVE-2026-1642).

*) Bugfix: use-after-free might occur after switching to the next gRPC or HTTP/2 backend.

*) Bugfix: an invalid HTTP/2 request might be sent after switching to the next upstream.

*) Bugfix: a response with multiple ranges might be larger than the
source response.

*) Bugfix: fixed setting HTTP_HOST when proxying to FastCGI, SCGI, and uwsgi backends.

*) Bugfix: fixed warning when compiling with MSVC 2022 x86.

*) Change: the logging level of the "ech_required" SSL error has been lowered from "crit" to "info".