Changed
HTTP server core
- HTTP/2 and overall memory usage optimizations: optimized both reverse proxying and HTTP/2 for lower memory usage, and fine-tuned default
jemallocmemory allocator settings.
Fixed
Observability
- Lazy observability event channels: the console, file, OTLP, Prometheus, and StatsD backends now allocate their event channels only when selected by the configuration, instead of pre-allocating ~4 MB each at startup. Idle servers without observability configured use ~20 MB less memory.
Admin API
- Access control bugfix: fixed access control bug that allowed unauthorized access to the admin API (
/reloadwas gated byreload_getinstead ofreloadbefore the bugfix).
HTTP server core
- Routing bypass fix: previously, a specially-crafted request (with URL-routing) could bypass routing and access files on unintended paths.
Reverse proxying
- Connection pool memory leak fix: fixed connection pool memory leak that occurred when connection is returned to the pool (after proxy received the initial response from an upstream).
Gateway interfaces
PATH_INFOfix: a bug introduced in 3.0.0-rc.4 causedPATH_INFOto not be sent at all by default due to an incorrect check.
Forward proxy
http_versionsubdirective fix: thehttp_versionsubdirective now correctly sets the HTTP version for forwarded requests.- DNS rebinding protection fix: the forward proxy now rejects with
403(instead of passing the request through to the normal pipeline) when a destination hostname resolves to a denied IP or DNS resolution fails, on both theCONNECTtunnel and absolute-URI forwarding paths. The stage also fails closed with an error status if any other proxy error leaves no response set. - Hop-by-hop header stripping fix: hop-by-hop headers are now stripped from forwarded requests per RFC 7230 section 6.1, so to not forward them to the upstream server.