Apache HTTP Server Version 2.4
Overview of new features in Apache HTTP Server 2.0
This document describes some of the major changes between the 1.3 and 2.0 versions of the Apache HTTP Server.
Core Enhancements
- Unix Threading
- On Unix systems with POSIX threads support, Apache httpd can now run in a hybrid multiprocess, multithreaded mode. This improves scalability for many, but not all configurations.
- New Build System
- The build system has been rewritten from scratch to be
based on
autoconf
andlibtool
. This makes Apache httpd's configuration system more similar to that of other packages. - Multiprotocol Support
- Apache HTTP Server now has some of the infrastructure in place to
support serving multiple protocols.
mod_echo
has been written as an example. - Better support for non-Unix platforms
- Apache HTTP Server 2.0 is faster and more stable on non-Unix platforms such as BeOS, OS/2, and Windows. With the introduction of platform-specific multi-processing modules (MPMs) and the Apache Portable Runtime (APR), these platforms are now implemented in their native API, avoiding the often buggy and poorly performing POSIX-emulation layers.
- New Apache httpd API
- The API for modules has changed significantly for 2.0. Many of the module-ordering/-priority problems from 1.3 should be gone. 2.0 does much of this automatically, and module ordering is now done per-hook to allow more flexibility. Also, new calls have been added that provide additional module capabilities without patching the core Apache HTTP Server.
- IPv6 Support
- On systems where IPv6 is supported by the underlying
Apache Portable Runtime library, Apache httpd gets IPv6 listening
sockets by default. Additionally, the
Listen
,NameVirtualHost
, andVirtualHost
directives support IPv6 numeric address strings (e.g., "Listen [2001:db8::1]:8080
"). - Filtering
- Apache httpd modules may now be written as filters which act on
the stream of content as it is delivered to or from the
server. This allows, for example, the output of CGI scripts to
be parsed for Server Side Include directives using the
INCLUDES
filter inmod_include
. The modulemod_ext_filter
allows external programs to act as filters in much the same way that CGI programs can act as handlers. - Multilanguage Error Responses
- Error response messages to the browser are now provided in several languages, using SSI documents. They may be customized by the administrator to achieve a consistent look and feel.
- Simplified configuration
- Many confusing directives have been simplified. The often
confusing
Port
andBindAddress
directives are gone; only theListen
directive is used for IP address binding; theServerName
directive specifies the server name and port number only for redirection and vhost recognition. - Native Windows NT Unicode Support
- Apache httpd 2.0 on Windows NT now uses utf-8 for all filename encodings. These directly translate to the underlying Unicode file system, providing multilanguage support for all Windows NT-based installations, including Windows 2000 and Windows XP. This support does not extend to Windows 95, 98 or ME, which continue to use the machine's local codepage for filesystem access.
- Regular Expression Library Updated
- Apache httpd 2.0 includes the Perl Compatible Regular Expression Library (PCRE). All regular expression evaluation now uses the more powerful Perl 5 syntax.
Module Enhancements
mod_ssl
- New module in Apache httpd 2.0. This module is an interface to the SSL/TLS encryption protocols provided by OpenSSL.
mod_dav
- New module in Apache httpd 2.0. This module implements the HTTP Distributed Authoring and Versioning (DAV) specification for posting and maintaining web content.
mod_deflate
- New module in Apache httpd 2.0. This module allows supporting browsers to request that content be compressed before delivery, saving network bandwidth.
mod_auth_ldap
- New module in Apache httpd 2.0.41. This module allows an LDAP
database to be used to store credentials for HTTP Basic
Authentication. A companion module,
mod_ldap
provides connection pooling and results caching. mod_auth_digest
- Includes additional support for session caching across processes using shared memory.
mod_charset_lite
- New module in Apache httpd 2.0. This experimental module allows for character set translation or recoding.
mod_file_cache
- New module in Apache httpd 2.0. This module includes the
functionality of
mod_mmap_static
in Apache HTTP Server version 1.3, plus adds further caching abilities. mod_headers
- This module is much more flexible in Apache httpd 2.0. It can now
modify request headers used by
mod_proxy
, and it can conditionally set response headers. mod_proxy
- The proxy module has been completely rewritten to take
advantage of the new filter infrastructure and to implement a
more reliable, HTTP/1.1 compliant proxy. In addition, new
<Proxy>
configuration sections provide more readable (and internally faster) control of proxied sites; overloaded<Directory "proxy:...">
configuration are not supported. The module is now divided into specific protocol support modules includingproxy_connect
,proxy_ftp
andproxy_http
. mod_negotiation
- A new
ForceLanguagePriority
directive can be used to assure that the client receives a single document in all cases, rather than NOT ACCEPTABLE or MULTIPLE CHOICES responses. In addition, the negotiation and MultiViews algorithms have been cleaned up to provide more consistent results and a new form of type map that can include document content is provided. mod_autoindex
- Autoindex'ed directory listings can now be configured to use HTML tables for cleaner formatting, and allow finer-grained control of sorting, including version-sorting, and wildcard filtering of the directory listing.
mod_include
- New directives allow the default start and end tags for SSI elements
to be changed and allow for error and time format configuration
to take place in the main configuration file rather than in the
SSI document. Results from regular expression parsing and grouping
(now based on Perl's regular expression syntax) can be retrieved
using
mod_include
's variables$0
..$9
. mod_auth_dbm
- Now supports multiple types of DBM-like databases using the
AuthDBMType
directive.