Ferron 2 change log
Stay updated with a Ferron 2 change log, featuring bug fixes, new features, and enhancements for each release.
Ferron 2.5.5
Released in February 11, 2026
- Fixed OTLP data not being sent after configuration reloads.
Ferron 2.5.4
Released in February 11, 2026
- Fixed high CPU usage after configuration reloads caused by the OCSP stapler.
Ferron 2.5.3
Released in February 11, 2026
- Fixed process-related metrics not being sent at all.
Ferron 2.5.2
Released in February 11, 2026
- Improved memory usage during configuration reloads.
Ferron 2.5.1
Released in February 10, 2026
- Fixed graceful shutdowns when reloading the server configuration.
Ferron 2.5.0
Released in February 10, 2026
- Added support for logging into standard I/O.
- Added support for saving TLS certificates and private keys (when using automatic TLS functionality) into disk and executing commands afterwards.
- Added support for sending
ForwardedHTTP header to backend servers as a reverse proxy. - Added support for specifying configuration in command-line arguments.
- Added the
ferron servesubcommand. - Fixed TLS certificate not resolved for “localhost” SNI hostname.
- Optimized the server configuration lookup performance.
- Optimized the SNI certificate resolution performance.
- Refreshed the default placeholder page design.
- The server now differentiates between file types in directory listings.
- The server now reuses threads when reloading the configuration, if possible.
- The server now shuts down multiple threads at once when reloading the configuration.
Ferron 2.4.1
Released in January 17, 2026
- Fixed a rarely occurring crash when upgrading backend server’s HTTP connection as a reverse proxy.
Ferron 2.4.0
Released in January 17, 2026
- Added bunny.net, DigitalOcean and OVH DNS providers for DNS-01 ACME challenge.
- Added support for HTTP Basic authentication for forward proxying.
- Fixed ACME cache file handling during certificate renewals. Cache files are now correctly truncated when rewritten, preventing stale data from causing parse failures.
- Fixed brute-force protection not being able to be disabled due to wrong configuration validation check.
- Fixed
Connectionheader setting for reverse proxying being set tokeep-alive, keep-alive. - Fixed graceful shutdown (during configuration reloading) for the HTTP/3 server.
- Fixed precompressed files not being picked up when the original filename doesn’t have a file extension.
- Fixed the original request URL not preserved when the server is configured to rewrite URLs using
rewritedirective. - Fixed trailing slash redirects leading to an URL without base when
remove_baseprop of a location block is set to#true. - Fixed URL rewrites not applied when
remove_baseprop of a location block is set to#true. - Improved compliance of static file serving functionality with RFC 7232 (conditional requests) and RFC 7233 (range requests).
- The forwarded authentication module now uses an unlimited idle kept-alive connection pool, just like the reverse proxy module.
- The server now falls back with
io_uringdisabled whenio_uringcouldn’t be initialized andio_uringis implicitly enabled. - The server now logs a warning if
status 200directive is used without specifying a response body. - The server now performs cleanup of TLS-ALPN-01 and HTTP-01 challenges after obtaining the TLS certificates.
- The server now reuses connections that aren’t ready after waiting for readiness when the concurrent limit is reached, instead of establishing a new connection.
Ferron 2.3.2
Released in January 6, 2026
- The server now gracefully handles canceled I/O operations that could previously cause 502 Bad Gateway errors (when io_uring is disabled).
- The server now gracefully handles canceled I/O operations that could previously cause a crash under rare conditions (when io_uring is enabled).
Ferron 2.3.1
Released in January 6, 2026
- The server now gracefully handles canceled I/O operations that could previously cause a crash under rare conditions (when io_uring is disabled).
Ferron 2.3.0
Released in January 6, 2026
- Added a metric for reverse proxy connections (grouped by whether the connection is reused)
- Added option to disable the URL sanitizer (to allow passing request path as-is to proxy backend servers without the sanitizer rewriting the URL).
- Added support for canonicalized IP address placeholders.
- Added support for global and local reverse proxy TCP connection concurrency limits.
- Added support for timeouts for idle kept-alive connections in a reverse proxy.
- Fixed a CGI, SCGI and FastCGI interoperability issue caused by the wrong value of the “HTTPS” variable.
- Fixed an XSS bug through server administrator’s email address specified in the server configuration.
- Fixed errors when using URL-safe Base64-encoded ACME EAB key HMACs with ”=” at the end.
- Fixed explicit TLS version configuration being incorrectly applied.
- Improved error reporting for invalid URLs for SCGI and FastCGI.
- Optimized the performance of overall network I/O.
- Optimized the QUIC and HTTP/3 performance.
- Removed a configuration directive for specifying maximum idle kept-alive connection pool in a reverse proxy.
- Replaced mimalloc v2 with mimalloc v3 (and also dropped support for very early 64-bit x86 CPUs).
- Slightly optimized ETag generation for static file serving.
- The H3_NO_ERROR errors are no longer logged into the error log.
- The reverse proxy now no longer waits for non-ready connections to be ready (it now just pulls another connection from the pool).
- The reverse proxy now uses an unlimited idle kept-alive connection pool.
- The server is now accessible via IPv4 by default on Windows (IPv6 is enabled by default).
- The server now no longer fails automatic TLS certificate management tasks, when the ACME cache is inaccessible or corrupted.
- The server now removes some response headers that are invalid in HTTP/3, if the client is connected to the server via HTTP/3
- The server now uses a faster asynchronous Rust runtime (Monoio) on Windows (like it is on other platforms) instead of Tokio only.
Ferron 2.2.1
Released in December 5, 2025
- Fixed a bug causing a deadlock when the server is gracefully reloading its configuration and OTLP observability backend was enabled before.
- The server now no longer overrides
X-Forwarded-HostandX-Forwarded-Protorequest headers before sending them to backend servers, when they exist, and theX-Forwarded-Forheader is trusted.
Ferron 2.2.0
Released in December 3, 2025
- Added support for observability (via logs, metrics and traces) via OpenTelemetry Protocol (OTLP).
- Fixed a bug causing requests to not be logged at all to host-specific access logs, if the global access log file wasn’t specified.
- Fixed a bug causing the default cache item count limit to be not enforced.
Ferron 2.1.0
Released in November 26, 2025
- Added a language matching subcondition (based on the
Accept-Languageheader). - Added support for custom MIME types for static file serving.
- Added support for dynamic content compression.
- Added support for HTTP/2-only (and gRPC over plain text) backend servers.
- Added support for sending PROXY protocol headers to backend servers when acting as a reverse proxy.
- Added support for setting constants inside conditions.
- Added support for specifying custom directory index files.
- Added support for using snippets inside conditions.
- Configuration validation and module loading error messages now also report in what block did the error occur.
- Corrected the configuration validation for
cgi_interpreterdirective. - Fixed access logs wrongly written to global log files instead of host-specific ones.
- Fixed bug preventing some configuration properties in
error_configblocks from being applied. - The
blockandallowdirectives (used for access control) are no longer global-only. - The server now disables HTTP/2 for backend servers when
proxy_http2directive is used, and the request containsUpgradeheader. - The server now removes
Forwardedheader before sending requests to backend servers as a reverse proxy.
Ferron 2.0.1
Released in November 4, 2025
- Fixed bugs related to wrongly applying configurations from configuration blocks.
Ferron 2.0.0
Released in November 4, 2025
- First stable release of Ferron 2
Ferron 2.0.0-rc.2
Released in October 25, 2025
- Fixed bugs related to ACME EAB (External Account Binding).
- Fixed bugs related to FastCGI, when using Ferron with fcgiwrap.
Ferron 2.0.0-rc.1
Released in October 20, 2025
- Added an utility to precompress static files (“ferron-precompress”)
- Added support for Rego-based subconditions
- Added support for specifying maximum idle connections to backend servers to keep alive
- Added various load balancing algorithms (round-robin, power of two random choices, least connection)
- Changed the default load balancing algorithm to power of two random choices
- Improved subcondition error handling by logging specific subcondition errors
- Optimized the keep-alive behavior in reverse proxying and load balancing for better performance
- The “lb_health_check_window” directive is no longer global-only
- The web server now removes ACME accounts from the ACME cache, if they don’t exist in an ACME server
Ferron 2.0.0-beta.20
Released in October 11, 2025
- The server now logs the client IP address instead of the server IP address in the access log
Ferron 2.0.0-beta.19
Released in October 11, 2025
- Added support for
{path_and_query}placeholder - Added support for ACME Renewal Information (ARI)
- Added support for connecting to backend servers via Unix sockets as a reverse proxy
- Added support for custom access log formats
Ferron 2.0.0-beta.18
Released in October 4, 2025
- Added default ACME cache directory path to the Docker image
- Added support for serving precompressed static files
- Fixed flipped access and error log filenames in the default server configuration for Docker images
- The server now uses an embedded certificate store as a fallback when native TLS is not available
Ferron 2.0.0-beta.17
Released in September 8, 2025
- Fixed the server crashing when resolving a TLS certificate when a client connects to the server via HTTPS (versions compiled with Tokio only were affected)
Ferron 2.0.0-beta.16
Released in July 31, 2025
- Adjusted the Brotli and Zstandard compression parameters for lower memory usage
Ferron 2.0.0-beta.15
Released in July 29, 2025
- Added support for ACME EAB (External Account Binding)
- Added support for CIDR ranges for
blockandallowdirectives - Added support for conditional configurations
- Added support for external Ferron modules and DNS providers
- Added support for load balancer connection retries to other backend servers in case of TCP connection or TLS handshake errors
- Added support for reusable snippets in KDL configuration
- Added support for
statusdirectives withouturlnorregexprops - Changed the styling of default error pages and directory listings
- Fixed graceful shutdowns with ASGI enabled
- Fixed several erroneous HTTP to HTTPS redirects
- Improved overall server performance, including static file serving
- The server now determines the host configuration order automatically based on the hostname specificity
- The server now determines the location order automatically based on the location and conditionals’ depth
- The server now disables automatic TLS by default for “localhost” and other loopback addresses
- The YAML to KDL configuration translator now inherits header values from higher configuration levels in YAML configuration to the KDL configuration
Ferron 2.0.0-beta.14
Released in July 22, 2025
- Added support for buffering request and response bodies
- The server now determines the server configuration again (with changed location) after replacing the URL with a sanitized one.
Ferron 2.0.0-beta.13
Released in July 20, 2025
- Added support for Amazon Route 53 DNS provider for DNS-01 ACME challenge
- Added support for automatic TLS on demand
- Added support for connecting to backend servers via HTTP/2 as a reverse proxy
- Added support for global configurations that don’t imply a host
- Added support for host blocks that specify multiple hostnames
- Fixed SNI hostname handling for non-default HTTPS ports
- Improved graceful connection shutdowns while gracefully restarting the server
- The server now can use multiple “Vary” response headers for caching
Ferron 2.0.0-beta.12
Released in July 13, 2025
- Fixed “address in use” errors when listening to a TCP port after stopping and shortly after starting the web server
Ferron 2.0.0-beta.11
Released in July 13, 2025
- Fixed unexpected connection closure errors in
w3mandlynx(the fix in Ferron 2.0.0-beta.10 might be a partial fix)
Ferron 2.0.0-beta.10
Released in July 13, 2025
- Added support for accepting connections that use PROXY protocol
- Fixed unexpected connection closure errors in
w3mandlynx
Ferron 2.0.0-beta.9
Released in July 11, 2025
- Added support for ACME profiles
- Added support for DNS-01 ACME challenge
- Added support for header replacement
- Added support for IP allowlists
- Added support for more header value placeholders
- Added support for setting “Cache-Control”
- The server now obtains TLS certificates from ACME server sequentially
Ferron 2.0.0-beta.8
Released in July 4, 2025
- Fixed TCP connection closure when the server request the closure (the fix in Ferron 2.0.0-beta.6 might not have worked)
Ferron 2.0.0-beta.7
Released in July 4, 2025
- Fixed an ACME error related to contact addresses, even if the contact address is valid
Ferron 2.0.0-beta.6
Released in July 4, 2025
- Fixed TCP connection closure when the server request the closure
- Switched ACME implementation to prepare for DNS-01 ACME challenge support
Ferron 2.0.0-beta.5
Released in June 29, 2025
- Added a configuration directive for removing response headers
- Added support for disabling HTTP keep-alive for reverse proxy
- Added support for setting headers for HTTP requests sent by the reverse proxy
- Added support for specifying custom response bodies in the
statusdirective - Fixed explicitly specified HTTP-only ports erroneously marked as HTTPS ports
- The HTTP cache size is now limited by default
Ferron 2.0.0-beta.4
Released in June 22, 2025
- Fixed host configurations not being used.
Ferron 2.0.0-beta.3
Released in June 22, 2025
- Added several automatic TLS-related configuration directives
- Added support for per-host logging
- Fixed 502 errors caused by canceled operations when reverse proxying with Docker
- Fixed a bug where location configurations were checked in incorrect order
- Fixed Rust panics when trying to use reverse proxying with HTTP/3
- Fixed the translation of “maximumCacheEntries” Ferron 1.x YAML configuration property
- The server now uses common ACME account cache directory for automatic TLS
Ferron 2.0.0-beta.2
Released in June 17, 2025
- Added a configuration adapter to automatically determine the configuration path when running the web server in a Docker image
- Added a module to replace substrings in response bodies
- Added a rate limiting module
- Added support for key exchanges with post-quantum cryptography
- Fixed infinite recursion of error handler execution
- Fixed translation of “errorPages” YAML configuration property
- Fixed translation of “users” YAML configuration property
- The KDL parsing errors are now formatted
Ferron 2.0.0-beta.1
Released in June 4, 2025
- First beta release of Ferron 2.x