Apache HTTP Server Version 2.4
Overview of new features in Apache HTTP Server 2.2
This document describes some of the major changes between the 2.0 and 2.2 versions of the Apache HTTP Server. For new features since version 1.3, see the 2.0 new features document.
Core Enhancements
- Authn/Authz
- The bundled authentication and authorization modules have been refactored. The new mod_authn_alias(already removed from 2.3/2.4) module can greatly simplify certain authentication configurations. See module name changes, and the developer changes for more information about how these changes affects users and module writers.
- Caching
mod_cache
,mod_cache_disk
, and mod_mem_cache(already removed from 2.3/2.4) have undergone a lot of changes, and are now considered production-quality.htcacheclean
has been introduced to clean upmod_cache_disk
setups.- Configuration
- The default configuration layout has been simplified and modularised. Configuration snippets which can be used to enable commonly-used features are now bundled with Apache, and can be easily added to the main server config.
- Graceful stop
- The
prefork
,worker
andevent
MPMs now allowhttpd
to be shutdown gracefully via thegraceful-stop
signal. TheGracefulShutdownTimeout
directive has been added to specify an optional timeout, after whichhttpd
will terminate regardless of the status of any requests being served. - Proxying
- The new
mod_proxy_balancer
module provides load balancing services formod_proxy
. The newmod_proxy_ajp
module adds support for theApache JServ Protocol version 1.3
used by Apache Tomcat. - Regular Expression Library Updated
- Version 5.0 of the
Perl Compatible Regular Expression
Library (PCRE) is now included.
httpd
can be configured to use a system installation of PCRE by passing the--with-pcre
flag to configure. - Smart Filtering
mod_filter
introduces dynamic configuration to the output filter chain. It enables filters to be conditionally inserted, based on any Request or Response header or environment variable, and dispenses with the more problematic dependencies and ordering problems in the 2.0 architecture.- Large File Support
httpd
is now built with support for files larger than 2GB on modern 32-bit Unix systems. Support for handling >2GB request bodies has also been added.- Event MPM
- The
event
MPM uses a separate thread to handle Keep Alive requests and accepting connections. Keep Alive requests have traditionally required httpd to dedicate a worker to handle it. This dedicated worker could not be used again until the Keep Alive timeout was reached. - SQL Database Support
mod_dbd
, together with theapr_dbd
framework, brings direct SQL support to modules that need it. Supports connection pooling in threaded MPMs.
Module Enhancements
- Authn/Authz
- Modules in the aaa directory have been renamed and offer
better support for digest authentication. For example,
mod_auth
is now split intomod_auth_basic
andmod_authn_file
;mod_auth_dbm
is now calledmod_authn_dbm
;mod_access
has been renamedmod_authz_host
. There is also a new mod_authn_alias(already removed from 2.3/2.4) module for simplifying certain authentication configurations. mod_authnz_ldap
- This module is a port of the 2.0
mod_auth_ldap
module to the 2.2Authn/Authz
framework. New features include using LDAP attribute values and complicated search filters in theRequire
directive. mod_authz_owner
- A new module that authorizes access to files based on the owner of the file on the file system
mod_version
- A new module that allows configuration blocks to be enabled based on the version number of the running server.
mod_info
- Added a new
?config
argument which will show the configuration directives as parsed by Apache, including their file name and line number. The module also shows the order of all request hooks and additional build information, similar tohttpd -V
. mod_ssl
- Added a support for RFC 2817, which allows connections to upgrade from clear text to TLS encryption.
mod_imagemap
mod_imap
has been renamed tomod_imagemap
to avoid user confusion.
Program Enhancements
httpd
- A new command line option
-M
has been added that lists all modules that are loaded based on the current configuration. Unlike the-l
option, this list includes DSOs loaded viamod_so
. httxt2dbm
- A new program used to generate dbm files from text input,
for use in
RewriteMap
with thedbm
map type.
Module Developer Changes
- APR 1.0 API
- Apache 2.2 uses the APR 1.0 API. All deprecated functions and
symbols have been removed from
APR
andAPR-Util
. For details, see the APR Website. - Authn/Authz
- The bundled authentication and authorization modules have
been renamed along the following lines:
mod_auth_*
-> Modules that implement an HTTP authentication mechanismmod_authn_*
-> Modules that provide a backend authentication providermod_authz_*
-> Modules that implement authorization (or access)mod_authnz_*
-> Module that implements both authentication & authorization
- Connection Error Logging
- A new function,
ap_log_cerror
has been added to log errors that occur with the client's connection. When logged, the message includes the client IP address. - Test Configuration Hook Added
- A new hook,
test_config
has been added to aid modules that want to execute special code only when the user passes-t
tohttpd
. - Set Threaded MPM's Stacksize
- A new directive,
ThreadStackSize
has been added to set the stack size on all threaded MPMs. This is required for some third-party modules on platforms with small default thread stack size. - Protocol handling for output filters
- In the past, every filter has been responsible for ensuring
that it generates the correct response headers where it affects
them. Filters can now delegate common protocol management to
mod_filter
, using theap_register_output_filter_protocol
orap_filter_protocol
calls. - Monitor hook added
- Monitor hook enables modules to run regular/scheduled jobs in the parent (root) process.
- Regular expression API changes
- The
pcreposix.h
header is no longer available; it is replaced by the newap_regex.h
header. The POSIX.2regex.h
implementation exposed by the old header is now available under theap_
namespace fromap_regex.h
. Calls toregcomp
,regexec
and so on can be replaced by calls toap_regcomp
,ap_regexec
. - DBD Framework (SQL Database API)
With Apache 1.x and 2.0, modules requiring an SQL backend had to take responsibility for managing it themselves. Apart from reinventing the wheel, this can be very inefficient, for example when several modules each maintain their own connections.
Apache 2.1 and later provides the
ap_dbd
API for managing database connections (including optimised strategies for threaded and unthreaded MPMs), while APR 1.2 and later provides theapr_dbd
API for interacting with the database.New modules SHOULD now use these APIs for all SQL database operations. Existing applications SHOULD be upgraded to use it where feasible, either transparently or as a recommended option to their users.