summaryrefslogtreecommitdiff
path: root/docs/manual/new_features_2_2.html.en
blob: 5dfcdf18d3d12db5888a079c24ab1c76e8ea656e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Overview of new features in Apache HTTP Server 2.2 - Apache HTTP Server Version 2.5</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
<script src="./style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.5</p>
<img alt="" src="./images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.5</a></div><div id="page-content"><div id="preamble"><h1>Overview of new features in Apache HTTP Server 2.2</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="./en/new_features_2_2.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/new_features_2_2.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
<a href="./fr/new_features_2_2.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="./ko/new_features_2_2.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./pt-br/new_features_2_2.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a> |
<a href="./tr/new_features_2_2.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div>

  <p>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 <a href="new_features_2_0.html">2.0 new features</a>
     document.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#core">Core Enhancements</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#module">Module Enhancements</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#programs">Program Enhancements</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#developer">Module Developer Changes</a></li>
</ul><h3>See also</h3><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="core" id="core">Core Enhancements</a> <a title="Permanent link" href="#core" class="permalink">&para;</a></h2>
    
    <dl>

      <dt>Authn/Authz</dt>
      <dd>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 <a href="#module">module name changes</a>, and
          <a href="#developer">the developer changes</a> for more
          information about how these changes affects users and module
          writers.</dd>

      <dt>Caching</dt>
      <dd><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, <code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code>, and
          mod_mem_cache(already removed from 2.3/2.4) have undergone a lot of changes, and
          are now considered production-quality. <code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code>
          has been introduced to clean up <code class="module"><a href="./mod/mod_cache_disk.html">mod_cache_disk</a></code>
          setups.</dd>

      <dt>Configuration</dt>
      <dd>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.</dd>

      <dt>Graceful stop</dt>
      <dd>The <code class="module"><a href="./mod/prefork.html">prefork</a></code>, <code class="module"><a href="./mod/worker.html">worker</a></code> and
          <code class="module"><a href="./mod/event.html">event</a></code>  MPMs now allow <code class="program"><a href="./programs/httpd.html">httpd</a></code>
          to be shutdown gracefully via the
          <a href="stopping.html#gracefulstop"><code>graceful-stop</code></a>
          signal. The <code class="directive"><a href="./mod/mpm_common.html#gracefulshutdowntimeout">GracefulShutdownTimeout</a></code> directive
          has been added to specify an optional timeout, after which
          <code class="program"><a href="./programs/httpd.html">httpd</a></code> will terminate regardless of the status
          of any requests being served.</dd>

      <dt>Proxying</dt>
      <dd>The new <code class="module"><a href="./mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> module provides
          load balancing services for <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>.
          The new <code class="module"><a href="./mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code> module adds support for the
          <code>Apache JServ Protocol version 1.3</code> used by
          <a href="http://tomcat.apache.org/">Apache Tomcat</a>.</dd>

      <dt>Regular Expression Library Updated</dt>
      <dd>Version 5.0 of the
          <a href="http://www.pcre.org/">Perl Compatible Regular Expression
          Library</a> (PCRE) is now included.  <code class="program"><a href="./programs/httpd.html">httpd</a></code> can be
          configured to use a system installation of PCRE by passing the
          <code>--with-pcre</code> flag to configure.</dd>

      <dt>Smart Filtering</dt>
      <dd><code class="module"><a href="./mod/mod_filter.html">mod_filter</a></code> 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.</dd>

      <dt>Large File Support</dt>
      <dd><code class="program"><a href="./programs/httpd.html">httpd</a></code> is now built with support for files larger
          than 2GB on modern 32-bit Unix systems.  Support for handling
          &gt;2GB request bodies has also been added.</dd>

      <dt>Event MPM</dt>
      <dd>The <code class="module"><a href="./mod/event.html">event</a></code> 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.</dd>

      <dt>SQL Database Support</dt>
      <dd><code class="module"><a href="./mod/mod_dbd.html">mod_dbd</a></code>, together with the <code>apr_dbd</code>
          framework, brings direct SQL support to modules that need it.
          Supports connection pooling in threaded MPMs.</dd>

    </dl>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="module" id="module">Module Enhancements</a> <a title="Permanent link" href="#module" class="permalink">&para;</a></h2>
    
    <dl>
      <dt>Authn/Authz</dt>
      <dd>Modules in the aaa directory have been renamed and offer
          better support for digest authentication.  For example,
          <code>mod_auth</code> is now split into
          <code class="module"><a href="./mod/mod_auth_basic.html">mod_auth_basic</a></code> and
          <code class="module"><a href="./mod/mod_authn_file.html">mod_authn_file</a></code>; <code>mod_auth_dbm</code> is now
          called <code class="module"><a href="./mod/mod_authn_dbm.html">mod_authn_dbm</a></code>; <code>mod_access</code> has
          been renamed <code class="module"><a href="./mod/mod_authz_host.html">mod_authz_host</a></code>.  There is also a new
          mod_authn_alias(already removed from 2.3/2.4) module for simplifying
          certain authentication configurations.
      </dd>

      <dt><code class="module">mod_authnz_ldap</code></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
          <code class="directive"><a href="./mod/mod_authz_core.html#require">Require</a></code> directive.</dd>

      <dt><code class="module"><a href="./mod/mod_authz_owner.html">mod_authz_owner</a></code></dt>
      <dd>A new module that authorizes access to files based
          on the owner of the file on the file system</dd>

      <dt><code class="module"><a href="./mod/mod_version.html">mod_version</a></code></dt>
      <dd>A new module that allows configuration blocks to be enabled based on the
          version number of the running server.</dd>

      <dt><code class="module"><a href="./mod/mod_info.html">mod_info</a></code></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><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code></dt>
      
      <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><code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code></dt>
      <dd><code>mod_imap</code> has been renamed to
          <code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code> to avoid user confusion.</dd>
    </dl>

  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="programs" id="programs">Program Enhancements</a> <a title="Permanent link" href="#programs" class="permalink">&para;</a></h2>
    
    <dl>
      <dt><code class="program"><a href="./programs/httpd.html">httpd</a></code></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 <code class="module"><a href="./mod/mod_so.html">mod_so</a></code>.</dd>

      <dt><code class="program"><a href="./programs/httxt2dbm.html">httxt2dbm</a></code></dt>
      <dd>A new program used to generate dbm files from text input,
          for use in <code class="directive"><a href="./mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>
          with the <code>dbm</code> map type.</dd>
    </dl>
  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="developer" id="developer">Module Developer Changes</a> <a title="Permanent link" href="#developer" class="permalink">&para;</a></h2>
    
    <dl>
      <dt><a class="glossarylink" href="./glossary.html#apr" title="see glossary">APR</a> 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><code>mod_auth_*</code>  -&gt; Modules that implement an HTTP
          authentication mechanism</li>
          <li><code>mod_authn_*</code> -&gt; Modules that provide a backend
          authentication provider</li>
          <li><code>mod_authz_*</code> -&gt; Modules that implement
          authorization (or access)</li>
          <li><code>mod_authnz_*</code> -&gt; 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 occur 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 <code class="program"><a href="./programs/httpd.html">httpd</a></code>.</dd>

      <dt>Set Threaded MPM's Stacksize</dt>

      <dd>A new directive, <code class="directive"><a href="./mod/mpm_common.html#threadstacksize">ThreadStackSize</a></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
          <code class="module"><a href="./mod/mod_filter.html">mod_filter</a></code>, 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>
  </div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="./en/new_features_2_2.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/new_features_2_2.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
<a href="./fr/new_features_2_2.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="./ko/new_features_2_2.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./pt-br/new_features_2_2.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a> |
<a href="./tr/new_features_2_2.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="./images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/new_features_2_2.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else {
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2020 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>