new_features_2_2.xml revision 26be97276918b2dbf2b49852c4c9203552e5e40e
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe<?xml version='1.0' encoding='UTF-8' ?>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe<!DOCTYPE manualpage SYSTEM "/style/manualpage.dtd">
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe<?xml-stylesheet type="text/xsl" href="/style/manual.en.xsl"?>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe<!-- $LastChangedRevision$ -->
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe<!--
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe Licensed to the Apache Software Foundation (ASF) under one or more
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe contributor license agreements. See the NOTICE file distributed with
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe this work for additional information regarding copyright ownership.
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe The ASF licenses this file to You under the Apache License, Version 2.0
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe (the "License"); you may not use this file except in compliance with
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe the License. You may obtain a copy of the License at
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe http://www.apache.org/licenses/LICENSE-2.0
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe Unless required by applicable law or agreed to in writing, software
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe distributed under the License is distributed on an "AS IS" BASIS,
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe See the License for the specific language governing permissions and
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe limitations under the License.
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe-->
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe<manualpage metafile="new_features_2_2.xml.meta">
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe<title>Overview of new features in Apache 2.2</title>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe<summary>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <p>This document describes some of the major changes between the
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe 2.0 and 2.2 versions of the Apache HTTP Server. For new features since
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe version 1.3, see the <a href="new_features_2_0.html">2.0 new features</a>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe document.</p>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe</summary>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <section id="core">
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <title>Core Enhancements</title>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dl>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dt>Authn/Authz</dt>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dd>The bundled authentication and authorization modules have
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe been refactored. The new <module>mod_authn_alias</module> module
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe can greatly simplify certain authentication configurations.
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe See <a href="#module">module name changes</a>, and
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <a href="#developer">the developer changes</a> for more
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe information about how these changes affects users and module
56e85d89d42a6980f31b800266649efbed338da3wrowe writers.</dd>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
8c8173f49dd7122e10636b3d20ae841551bd0b43wrowe <dt>Caching</dt>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dd><module>mod_cache</module>, <module>mod_disk_cache</module>, and
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <module>mod_mem_cache</module> have undergone a lot of changes, and
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe are now considered production-quality. <program>htcacheclean</program>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe has been introduced to clean up <module>mod_disk_cache</module>
79464ef4c61ae6b1bb4de13decb4e4f9e43e2800wrowe setups.</dd>
3082ab8b90e027fa27680f140987ea7e20df5088wrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dt>Configuration</dt>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dd>The default configuration layout has been simplified and
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe modularised. Configuration snippets which can be used to
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe enable commonly-used features are now bundled with Apache, and
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe can be easily added to the main server config.</dd>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dt>Graceful stop</dt>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dd>The <module>prefork</module>, <module>worker</module> and
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <module>event</module> MPMs now allow <program>httpd</program>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe to be shutdown gracefully via the
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <a href="stopping.html#gracefulstop"><code>graceful-stop</code></a>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe signal. The <directive
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe module="mpm_common">GracefulShutdownTimeout</directive> directive
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe has been added to specify an optional timeout, after which
26b9ccb55ff33097af4914f2e4bd36fec99a039dwrowe <program>httpd</program> will terminate regardless of the status
6674f67af38a4c0241b253a77871836c43b7735fwrowe of any requests being served.</dd>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
8c8173f49dd7122e10636b3d20ae841551bd0b43wrowe <dt>Proxying</dt>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dd>The new <module>mod_proxy_balancer</module> module provides
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe load balancing services for <module>mod_proxy</module>.
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe The new <module>mod_proxy_ajp</module> module adds support for the
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <code>Apache JServ Protocol version 1.3</code> used by
79464ef4c61ae6b1bb4de13decb4e4f9e43e2800wrowe <a href="http://jakarta.apache.org/tomcat/">Apache Tomcat</a>.</dd>
79464ef4c61ae6b1bb4de13decb4e4f9e43e2800wrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dt>Regular Expression Library Updated</dt>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dd>Version 5.0 of the
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <a href="http://www.pcre.org/">Perl Compatible Regular Expression
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe Library</a> (PCRE) is now included. <program>httpd</program> can be
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe configured to use a system installation of PCRE by passing the
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <code>--with-pcre</code> flag to configure.</dd>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dt>Smart Filtering</dt>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dd><module>mod_filter</module> introduces dynamic configuration
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe to the output filter chain. It enables filters to be conditionally
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe inserted, based on any Request or Response header or environment
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe variable, and dispenses with the more problematic dependencies and
0bcc003d275c6b0a9060d43be89762b218cbc2c7wrowe ordering problems in the 2.0 architecture.</dd>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dt>Large File Support</dt>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
0bcc003d275c6b0a9060d43be89762b218cbc2c7wrowe <dd>httpd is now built with support for files larger than 2GB on
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe modern 32-bit Unix systems. Support for handling &gt;2GB request
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe bodies has also been added.</dd>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
0bcc003d275c6b0a9060d43be89762b218cbc2c7wrowe <dt>Event MPM</dt>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dd>The <module>event</module> MPM uses a seperate thread to handle
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe Keep Alive requests and accepting connections. Keep Alive requests
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe have traditionally required httpd to dedicate a worker to handle it.
8c8173f49dd7122e10636b3d20ae841551bd0b43wrowe This dedicated worker could not be used again until the Keep Alive
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe timeout was reached.</dd>
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe
cc08604ef06281d6375ed35ea3076ab65f3a0c3bwrowe <dt>SQL Database Support</dt>
<dd><p><module>mod_dbd</module>, together with the apr_dbd framework,
brings direct SQL support to modules that need it. Supports
connection pooling in threaded MPMs.</p>
<p><strong>Windows Users</strong> 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.</p>
</dd>
</dl>
</section>
<section id="module">
<title>Module Enhancements</title>
<dl>
<dt>Authn/Authz</dt>
<dd>Modules in the aaa directory have been renamed and offer
better support for digest authentication. For example, mod_auth
is now split into <module>mod_auth_basic</module> and
<module>mod_auth_file</module>; mod_auth_dbm is now called
<module>mod_authn_dbm</module>; mod_access has been renamed
<module>mod_authz_host</module>. There is also a new
<module>mod_authn_alias</module> module for simplifying
certain authentication configurations.
</dd>
<dt><module>mod_authnz_ldap</module></dt>
<dd>This module is a port of the 2.0
<code>mod_auth_ldap</code> module to the 2.2 <code>Authn/Authz</code>
framework. New features include using LDAP attribute values and
complicated search filters in the
<directive module="core">Require</directive> directive.</dd>
<dt><module>mod_info</module></dt>
<dd>Added a new <code>?config</code> 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 <code>httpd -V</code>.</dd>
<dt><module>mod_ssl</module></dt>
<!-- Need Info on SSLEngine Support? -->
<dd>Added a support for
<a href="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a>, which
allows connections to upgrade from clear text to TLS encryption.</dd>
<dt><module>mod_imagemap</module></dt>
<dd>mod_imap has been renamed to <module>mod_imagemap</module> to avoid
user confusion.</dd>
</dl>
</section>
<section id="programs">
<title>Program Enhancements</title>
<dl>
<dt><program>httpd</program></dt>
<dd>A new command line option <code>-M</code> has been added that
lists all modules that are loaded based on the current
configuration. Unlike the <code>-l</code> option, this list
includes DSOs loaded via <module>mod_so</module>.</dd>
<dt><program>httxt2dbm</program></dt>
<dd>A new program used to generate dbm files from text input,
for use in <directive module="mod_rewrite">RewriteMap</directive>
with the <code>dbm</code> map type.</dd>
</dl>
</section>
<section id="developer">
<title>Module Developer Changes</title>
<dl>
<dt><glossary>APR</glossary> 1.0 API</dt>
<dd>Apache 2.2 uses the APR 1.0 API. All deprecated functions and
symbols have been removed from <code>APR</code> and
<code>APR-Util</code>. For details, see the
<a href="http://apr.apache.org/">APR Website</a>.</dd>
<dt>Authn/Authz</dt>
<dd>The bundled authentication and authorization modules have
been renamed along the following lines:
<ul>
<li>mod_auth_* -> Modules that implement an HTTP authentication mechanism</li>
<li>mod_authn_* -> Modules that provide a backend authentication provider</li>
<li>mod_authz_* -> Modules that implement authorization (or access)</li>
<li>mod_authnz_*-> Module that implements both authentication &amp; authorization</li>
</ul>
There is a new authentication backend provider
scheme which greatly eases the construction of new authentication
backends.</dd>
<dt>Connection Error Logging</dt>
<dd>A new function, <code>ap_log_cerror</code> has been added to log
errors that occure with the client's connection. When logged,
the message includes the client IP address.</dd>
<dt>Test Configuration Hook Added</dt>
<dd>A new hook, <code>test_config</code> has been added to aid
modules that want to execute special code only when the user passes
<code>-t</code> to <program>httpd</program>.</dd>
<dt>Set Threaded MPM's Stacksize</dt>
<dd>A new directive, <code>ThreadStackSize</code> 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.</dd>
<dt>Protocol handling for output filters</dt>
<dd>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
<module>mod_filter</module>, using the
<code>ap_register_output_filter_protocol</code> or
<code>ap_filter_protocol</code> calls.</dd>
<dt>Monitor hook added</dt>
<dd>Monitor hook enables modules to run regular/scheduled jobs
in the parent (root) process.</dd>
<dt>Regular expression API changes</dt>
<dd>The <code>pcreposix.h</code> header is no longer available;
it is replaced by the new <code>ap_regex.h</code> header. The
POSIX.2 <code>regex.h</code> implementation exposed by the old
header is now available under the <code>ap_</code> namespace
from <code>ap_regex.h</code>. Calls to <code>regcomp</code>,
<code>regexec</code> and so on can be replaced by calls to
<code>ap_regcomp</code>, <code>ap_regexec</code>.</dd>
<dt>DBD Framework (SQL Database API)</dt>
<dd><p>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.</p>
<p>Apache 2.1 and later provides the <code>ap_dbd</code> API for
managing database connections (including optimised strategies
for threaded and unthreaded MPMs), while APR 1.2 and later provides
the <code>apr_dbd</code> API for interacting with the database.</p>
<p>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.</p></dd>
</dl>
</section>
</manualpage>