Skip to content

3.0.0-beta.11

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Aug 06:27

Added

HTTP server core

  • Support for listening to multiple IP addresses: multiple IP addresses can now be specified in the listen subdirective in tcp block for TCP and QUIC, allowing the server to listen on multiple selected network interfaces.

Forwarded auth

  • Forwarded auth intercept_errors subdirective: added intercept_errors subdirective to forwarded auth stage, allowing custom handling of upstream error responses, similarly to intercept_errors subdirective for reverse proxying.
  • Forwarded auth request_header subdirective: added request_header subdirective to auth_to, allowing headers to be added (+Name), removed (-Name), or replaced (Name) on the request sent to the auth backend, mirroring the reverse proxy's request_header subdirective.

Changed

Runtime

  • io_uring disabled by default: io_uring is now disabled by default in the runtime configuration, as small static file serving and reverse proxying performance turned out to be slower than with epoll.

Static file serving

  • Symlink check performance optimizations: optimized symlink check performance by caching the results in file open cache along with opened files.

HTTP caching

  • HTTP caching performance optimizations: performed multiple internal throughput optimizations to the in-memory HTTP cache store, especially on the cache hit path.
  • Cache key fingerprinting improvements for observability: truncated cache key (up to 48 characters) with the query string removed, useful for diagnosing why a specific request missed. Optionally with a short non-reversible tag (q=<16 hex chars>), and if the base itself had to be truncated, a second tag (h=<16 hex chars>).
  • Cache metrics improvements: cache decision reasons are now attached to access log entries and cache metrics.

Forwarded auth

  • Forwarded auth X-Real-IP header: added X-Real-IP header to forwarded auth requests, with same value as reverse-proxied requests.

Fixed

Configuration

  • Empty configuration validation: added a check for empty configurations (no ports, no global directives/matchers) to return an error instead of silently starting.
  • Protocol + IP + port host block split fix: previously, the protocol+IP+port combination was not properly split when used as a host block (for example, http 127.0.0.1:18081 lead to two host blocks: http 127 and 0.0.1:18081).

HTTP server core

  • request.uri interpolation fix: previously, request.uri interpolation included the full request URL, including the http/https scheme and hostname. This had been changed to only include the path and query string.
  • HTTP status code for overlong paths: previously, overlong file paths led to 500 Internal Server Error status code to be returned. This has been changed to return 400 Bad Request instead.

Logging

  • Reduced startup logs: removed multiple startup logs for various features to reduce noise in the logs.

Static file serving

  • Static file serving symlink settings fix: previously, symlink mode (follow or not) was not properly respected when serving precompressed static files.

TLS

  • Certificate and private key mismatch fix: previously, when a certificate and private key did not match for a given host, this was silently allowed. This has been changed to error out on the startup of the server.