Apache HTTP Server Version 2.5

This document describes some of the major changes between the 2.4 and 2.6 versions of the Apache HTTP Server. For new features since version 2.2, see the 2.4 new features document.
ContentDigest directive and support for the the
Content-MD5 header has been removed from the server,
corresponding with the removal of this header from
RFC 7231 Hypertext Transfer Protocol
(HTTP/1.1): Semantics and Content.Listen directive optionsListen
directive now supports an optional options=...
argument, allowing per-listener socket options to be
configured, including the multipathtcp option to
enable Multipath TCP where supported by the platform.AsyncFilter
directive declares which filter types support asynchronous
handling, and support for asynchronous write completion has been
extended throughout the core. This underpins the asynchronous
proxying and WebSocket handling described below.HttpExpectStrict
controls whether a 417 is returned when a client
omits a 100-Continue expectation, and
HttpContentLengthHeadZero
controls Content-Length handling for
HEAD requests.LogLevelOverride
directive allows the log level to be overridden for individual
client IP addresses, easing targeted debugging on a live
server.systemd socket activationhttpd can now be configured to start via
systemd socket activation.DefaultStateDir directive.DefaultStateDir
directive has been added to specify a directory for storing
persistent state.Listen or
VirtualHost directive.mod_auth_bearer, mod_autht_core,
mod_autht_jwtmod_auth_bearer implements
RFC 6750 Bearer token authentication as a
front-end (analogous to mod_auth_basic),
mod_autht_core hosts the autht provider registry,
and mod_autht_jwt provides JSON Web Token
signing and verification.mod_cryptomod_journald, mod_syslogjournald.mod_proxy_beaconmod_allowhandlersmod_sslSSLRandomSeed
directive is now deprecated and is ignored if building against
OpenSSL 1.1.1 or later.SSLKEYLOGFILE environment variable can
now be set to log private key material for off-line decryption
of SSL/TLS protocol dumps using third-party tools.SSLPolicy
directive allows a named bundle of SSL settings to be defined
once and applied to multiple virtual hosts.mod_proxy, mod_proxy_wstunnelUpgraded
protocols and WebSockets, tuned by the new
ProxyAsyncDelay,
ProxyAsyncIdleTimeout,
ProxyWebsocketAsyncDelay and
ProxyWebsocketIdleTimeout directives.mod_http2H2WebSockets
directive), the new H2EarlyHint directive for adding
headers carried in a 103 Early Hints response, and
accurate accounting of bytes sent for the %O log
format.mod_davDAVquota), Microsoft
WebDAV protocol extensions
(DAVMSext), the
DAVHonorMtimeHeader and DAVLockDBType
directives, and improved strong-ETag compliance.mod_autoindex adds
IndexForbiddenReturn404;
mod_mime adds MimeOptions; and
mod_session_cookie adds
SessionCookieMaxAge.mod_cgid--enable-cgid-fdpassing, the
CGI daemon will set up stderr handling in the same way as
mod_cgi.http module into the core server — including the
default handler, the default input and output filters, and the
core configuration directives — so that the server can run
with or without the HTTP module loaded. As part of this work
ap_set_etag() moved from the http module
into the core.REQUEST, RESPONSE and
HEADERS metadata bucket types have been added to the
API, along with a new method for setting the standard
Date and Server response headers and
helpers for formatting parts of HTTP/1.x (headers, end chunks) for
reuse outside the core, e.g. in mod_proxy. The
HTTP_IN filter has been split into a generic-HTTP
filter and an HTTP/1.x-specific HTTP1_BODY_IN filter,
and a new body_indeterminate flag on
request_rec indicates that a request body may be
present and must be read or discarded.request_rec, allowing packed bit flags to be set on a
request. The first such note, AP_REQUEST_STRONG_ETAG,
lets modules force a strong ETag to comply with RFC requirements
such as those mandated by various WebDAV extensions. New functions
ap_make_etag_ex() and ap_set_etag_fd()
give full control over ETag generation.ap_method_mask_t.ap_method_mask_t type has been added and is
now used for the method_mask field in ap_method_list_t,
AP_METHOD_BIT, allowed field of request_rec, limited field of
cmd_parms.mod_ssl.h mod_ssl API changes.ssl_var_lookup optional function API now
takes a const char *name argument and
returns a const char * string value. The pool
argument must now be non-NULL.Content-MD5
header, the ap_md5digest() and
ap_md5contextTo64() functions have been removed.The developer documentation contains a detailed list of API changes.