传说中的 Apache 2.2.0 发布
Core Enhancements
Authn/Authz
The bundled authentication and authorization modules have been refactored. The new mod_authn_alias 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_disk_cache, and mod_mem_cache have undergone a lot of changes, and are now considered production-quality. htcacheclean has been introduced to clean up mod_disk_cache 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 and event MPMs now allow httpd to be shutdown gracefully via the graceful-stop signal. The GracefulShutdownTimeout directive has been added to specify an optional timeout, after which httpd will terminate regardless of the status of any requests being served.
Proxying
The new mod_proxy_balancer module provides load balancing services for mod_proxy. The new mod_proxy_ajp module adds support for the Apache 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 seperate 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 the apr_dbd framework, brings direct SQL support to modules that need it. Supports connection pooling in threaded MPMs.
Windows Users please note that this is not yet included in the standard windows build. If you try to use it on the Windows platform, please let us know how you get on.
top
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 into mod_auth_basic and mod_authn_file; mod_auth_dbm is now called mod_authn_dbm; mod_access has been renamed mod_authz_host. There is also a new mod_authn_alias 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.2 Authn/Authz framework. New features include using LDAP attribute values and complicated search filters in the Require directive.
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 to httpd -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 to mod_imagemap to avoid user confusion.
top
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 via mod_so.
httxt2dbm
A new program used to generate dbm files from text input, for use in RewriteMap with the dbm map type.
top
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 and APR-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 mechanism
* mod_authn_* -> Modules that provide a backend authentication provider
* mod_authz_* -> Modules that implement authorization (or access)
* mod_authnz_*-> Module that implements both authentication & authorization
There is a new authentication backend provider scheme which greatly eases the construction of new authentication backends.
Connection Error Logging
A new function, ap_log_cerror has been added to log errors that occure 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 to httpd.
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 the ap_register_output_filter_protocol or ap_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 new ap_regex.h header. The POSIX.2 regex.h implementation exposed by the old header is now available under the ap_ namespace from ap_regex.h. Calls to regcomp, regexec and so on can be replaced by calls to ap_regcomp, ap_regcomp.
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 the apr_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.