1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> 4<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> 5<!-- 6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 This file is generated from xml source: DO NOT EDIT 8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9 --> 10<title>Overview of new features in Apache HTTP Server 2.4 - Apache HTTP Server Version 2.4</title> 11<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> 12<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> 13<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" /> 14<script src="./style/scripts/prettify.min.js" type="text/javascript"> 15</script> 16 17<link href="./images/favicon.ico" rel="shortcut icon" /></head> 18<body id="manual-page"><div id="page-header"> 19<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.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> 20<p class="apache">Apache HTTP Server Version 2.4</p> 21<img alt="" src="./images/feather.png" /></div> 22<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div> 23<div id="path"> 24<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>Overview of new features in Apache HTTP Server 2.4</h1> 25<div class="toplang"> 26<p><span>Available Languages: </span><a href="./en/new_features_2_4.html" title="English"> en </a> | 27<a href="./fr/new_features_2_4.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 28<a href="./tr/new_features_2_4.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> 29</div> 30 31 <p>This document describes some of the major changes between the 32 2.2 and 2.4 versions of the Apache HTTP Server. For new features since 33 version 2.0, see the <a href="new_features_2_2.html">2.2 new features</a> 34 document.</p> 35</div> 36<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#core">Core Enhancements</a></li> 37<li><img alt="" src="./images/down.gif" /> <a href="#newmods">New Modules</a></li> 38<li><img alt="" src="./images/down.gif" /> <a href="#module">Module Enhancements</a></li> 39<li><img alt="" src="./images/down.gif" /> <a href="#programs">Program Enhancements</a></li> 40<li><img alt="" src="./images/down.gif" /> <a href="#documentation">Documentation</a></li> 41<li><img alt="" src="./images/down.gif" /> <a href="#developer">Module Developer Changes</a></li> 42</ul><h3>See also</h3><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div> 43<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 44<div class="section"> 45<h2><a name="core" id="core">Core Enhancements</a></h2> 46 47 <dl> 48 <dt>Run-time Loadable MPMs</dt> 49 <dd>Multiple MPMs can now be <a href="mpm.html#dynamic">built 50 as loadable modules</a> at compile time. 51 The MPM of choice can be configured at run time via <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> directive.</dd> 52 53 <dt>Event MPM</dt> 54 <dd>The <a href="mod/event.html">Event MPM</a> is no longer experimental 55 but is now fully supported.</dd> 56 57 <dt>Asynchronous support</dt> 58 <dd>Better support for asynchronous read/write for supporting MPMs and 59 platforms.</dd> 60 61 <dt>Per-module and per-directory LogLevel configuration</dt> 62 <dd>The <code class="directive"><a href="./mod/core.html#loglevel">LogLevel</a></code> can now be 63 configured per module and per directory. New levels <code>trace1</code> 64 to <code>trace8</code> have been added above the <code>debug</code> log 65 level.</dd> 66 67 <dt>Per-request configuration sections</dt> 68 <dd><code class="directive"><a href="./mod/core.html#if"><If></a></code>, 69 <code class="directive"><a href="./mod/core.html#elseif"><ElseIf></a></code>, 70 and <code class="directive"><a href="./mod/core.html#else"><Else></a></code> 71 sections can be used to set the configuration based on per-request 72 criteria.</dd> 73 74 <dt>General-purpose expression parser</dt> 75 <dd>A new expression parser allows to specify 76 <a href="expr.html">complex conditions</a> using a common syntax 77 in directives like 78 <code class="directive"><a href="./mod/mod_setenvif.html#setenvifexpr">SetEnvIfExpr</a></code>, 79 <code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>, 80 <code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code>, 81 <code class="directive"><a href="./mod/core.html#if"><If></a></code>, 82 and others. 83 </dd> 84 85 <dt>KeepAliveTimeout in milliseconds</dt> 86 <dd>It is now possible to specify <code class="directive"><a href="./mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code> in milliseconds. 87 </dd> 88 89 <dt>NameVirtualHost directive</dt> 90 <dd>No longer needed and is now deprecated.</dd> 91 92 <dt>Override Configuration</dt> 93 <dd>The new <code class="directive"><a href="./mod/core.html#allowoverridelist">AllowOverrideList</a></code> 94 directive allows more fine grained control which directives are 95 allowed in <code>.htaccess</code> files. </dd> 96 97 <dt>Config file variables</dt> 98 <dd>It is now possible to <code class="directive"><a href="./mod/core.html#define">Define</a></code> 99 variables in the configuration, allowing a clearer representation 100 if the same value is used at many places in the configuration. 101 </dd> 102 103 <dt>Reduced memory usage</dt> 104 <dd>Despite many new features, 2.4.x tends to use less memory than 105 2.2.x.</dd> 106 107 </dl> 108 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 109<div class="section"> 110<h2><a name="newmods" id="newmods">New Modules</a></h2> 111 112 <dl> 113 <dt><code class="module"><a href="./mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code></dt> 114 <dd>FastCGI Protocol backend for <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></dd> 115 116 <dt><code class="module"><a href="./mod/mod_proxy_scgi.html">mod_proxy_scgi</a></code></dt> 117 <dd>SCGI Protocol backend for <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></dd> 118 119 <dt><code class="module"><a href="./mod/mod_proxy_express.html">mod_proxy_express</a></code></dt> 120 <dd>Provides dynamically configured mass reverse proxies for 121 <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></dd> 122 123 <dt><code class="module"><a href="./mod/mod_remoteip.html">mod_remoteip</a></code></dt> 124 <dd>Replaces the apparent client remote IP address and hostname for the request 125 with the IP address list presented by a proxies or a load balancer via 126 the request headers.</dd> 127 128 <dt><code class="module"><a href="./mod/mod_heartmonitor.html">mod_heartmonitor</a></code>, 129 <code class="module"><a href="./mod/mod_lbmethod_heartbeat.html">mod_lbmethod_heartbeat</a></code></dt> 130 <dd>Allow <code class="module"><a href="./mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> to base loadbalancing decisions 131 on the number of active connections on the backend servers.</dd> 132 133 <dt><code class="module"><a href="./mod/mod_proxy_html.html">mod_proxy_html</a></code></dt> 134 <dd>Formerly a third-party module, this supports fixing of HTML 135 links in a reverse proxy situation, where the backend generates 136 URLs that are not valid for the proxy's clients.</dd> 137 138 <dt><code class="module"><a href="./mod/mod_sed.html">mod_sed</a></code></dt> 139 <dd>An advanced replacement of <code class="module"><a href="./mod/mod_substitute.html">mod_substitute</a></code>, allows 140 to edit the response body with the full power of sed.</dd> 141 142 <dt><code class="module"><a href="./mod/mod_auth_form.html">mod_auth_form</a></code></dt> 143 <dd>Enables form-based authentication.</dd> 144 145 <dt><code class="module"><a href="./mod/mod_session.html">mod_session</a></code></dt> 146 <dd>Enables the use of session state for clients, using cookie or 147 database storage.</dd> 148 149 <dt><code class="module"><a href="./mod/mod_allowmethods.html">mod_allowmethods</a></code></dt> 150 <dd>New module to restrict certain HTTP methods without interfering with 151 authentication or authorization.</dd> 152 153 <dt><code class="module"><a href="./mod/mod_lua.html">mod_lua</a></code></dt> 154 <dd>Embeds the <a href="http://www.lua.org/">Lua</a> language into httpd, 155 for configuration and small business logic functions. (Experimental)</dd> 156 157 <dt><code class="module"><a href="./mod/mod_log_debug.html">mod_log_debug</a></code></dt> 158 <dd>Allows the addition of customizable debug logging at different phases of the 159 request processing.</dd> 160 161 <dt><code class="module"><a href="./mod/mod_buffer.html">mod_buffer</a></code></dt> 162 <dd>Provides for buffering the input and output filter stacks</dd> 163 164 <dt><code class="module"><a href="./mod/mod_data.html">mod_data</a></code></dt> 165 <dd>Convert response body into an RFC2397 data URL</dd> 166 167 <dt><code class="module"><a href="./mod/mod_ratelimit.html">mod_ratelimit</a></code></dt> 168 <dd>Provides Bandwidth Rate Limiting for Clients</dd> 169 170 <dt><code class="module"><a href="./mod/mod_request.html">mod_request</a></code></dt> 171 <dd>Provides Filters to handle and make available HTTP request bodies</dd> 172 173 <dt><code class="module"><a href="./mod/mod_reflector.html">mod_reflector</a></code></dt> 174 <dd>Provides Reflection of a request body as a response via the output filter stack.</dd> 175 176 <dt><code class="module"><a href="./mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code></dt> 177 <dd>Provides a Slot-based shared memory provider (ala the scoreboard).</dd> 178 179 <dt><code class="module"><a href="./mod/mod_xml2enc.html">mod_xml2enc</a></code></dt> 180 <dd>Formerly a third-party module, this supports internationalisation 181 in libxml2-based (markup-aware) filter modules.</dd> 182 183 <dt><code class="module"><a href="./mod/mod_macro.html">mod_macro</a></code> (available since 2.4.5)</dt> 184 <dd>Provide macros within configuration files.</dd> 185 186 <dt><code class="module"><a href="./mod/mod_proxy_wstunnel.html">mod_proxy_wstunnel</a></code> (available since 2.4.5)</dt> 187 <dd>Support web-socket tunnels.</dd> 188 189 <dt><code class="module"><a href="./mod/mod_authnz_fcgi.html">mod_authnz_fcgi</a></code> (available since 2.4.10)</dt> 190 <dd>Enable FastCGI authorizer applications to authenticate and/or 191 authorize clients.</dd> 192 193 <dt><code class="module"><a href="./mod/mod_http2.html">mod_http2</a></code> (available since 2.4.17)</dt> 194 <dd>Support for the HTTP/2 transport layer.</dd> 195 196 <dt><code class="module"><a href="./mod/mod_proxy_http2.html">mod_proxy_http2</a></code> (available since 2.4.19)</dt> 197 <dd>HTTP/2 Protocol backend for <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></dd> 198 199 <dt><code class="module"><a href="./mod/mod_proxy_hcheck.html">mod_proxy_hcheck</a></code> (available since 2.4.21)</dt> 200 <dd>Support independent dynamic health checks for remote proxiy backend servers.</dd> 201 202 <dt><code class="module"><a href="./mod/mod_brotli.html">mod_brotli</a></code> (available since 2.4.26)</dt> 203 <dd>Support the Brotli compression algorithm.</dd> 204 205 <dt><code class="module"><a href="./mod/mod_md.html">mod_md</a></code> (available since 2.4.30)</dt> 206 <dd>Support the ACME protocol to automate certificate provisionning.</dd> 207 208 <dt><code class="module"><a href="./mod/mod_proxy_uwsgi.html">mod_proxy_uwsgi</a></code> (available since 2.4.30)</dt> 209 <dd>UWSGI gateway module for <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>.</dd> 210 211 <dt><code class="module"><a href="./mod/mod_socache_redis.html">mod_socache_redis</a></code> (available since 2.4.39)</dt> 212 <dd>Support <a href="http://redis.io/">Redis</a> based shared object cache provider.</dd> 213 214 <dt><code class="module"><a href="./mod/mod_systemd.html">mod_systemd</a></code> (available since 2.4.42)</dt> 215 <dd>systemd integration. It allows httpd to be used in a service with the systemd 216 <code>Type=notify</code>.</dd> 217 218 </dl> 219 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 220<div class="section"> 221<h2><a name="module" id="module">Module Enhancements</a></h2> 222 223 <dl> 224 <dt><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code></dt> 225 226 <dd><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code> can now be configured to use an 227 OCSP server to check the validation status of a client 228 certificate. The default responder is configurable, along with 229 the decision on whether to prefer the responder designated in 230 the client certificate itself.</dd> 231 232 <dd><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code> now also supports OCSP stapling, where the 233 server pro-actively obtains an OCSP verification of its certificate and 234 transmits that to the client during the handshake. </dd> 235 236 <dd><code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code> can now be configured to share SSL Session 237 data between servers through memcached</dd> 238 239 <dd>EC keys are now supported in addition to RSA and DSA.</dd> 240 241 <dd>Support for TLS-SRP (available in 2.4.4 and later).</dd> 242 243 <dt><code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></dt> 244 245 <dd>The <code class="directive"><a href="./mod/mod_proxy.html#proxypass">ProxyPass</a></code> directive 246 is now most optimally configured within a 247 <code class="directive"><a href="./mod/core.html#location">Location</a></code> or 248 <code class="directive"><a href="./mod/core.html#locationmatch">LocationMatch</a></code> 249 block, and offers a significant performance advantage over the traditional 250 two-parameter syntax when present in large numbers.</dd> 251 <dd>The source address used for proxy requests is now configurable.</dd> 252 <dd>Support for Unix domain sockets to the backend (available in 2.4.7 253 and later).</dd> 254 255 <dt><code class="module"><a href="./mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code></dt> 256 257 <dd>More runtime configuration changes for BalancerMembers via balancer-manager</dd> 258 259 <dd>Additional BalancerMembers can be added at runtime via balancer-manager</dd> 260 261 <dd>Runtime configuration of a subset of Balancer parameters</dd> 262 263 <dd>BalancerMembers can be set to 'Drain' so that they only respond to existing sticky 264 sessions, allowing them to be taken gracefully offline.</dd> 265 266 <dd>Balancer settings can be persistent after restarts.</dd> 267 268 <dt><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code></dt> 269 270 <dd>The <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> CACHE filter can be optionally inserted 271 at a given point in the filter chain to provide fine control over caching. 272 </dd> 273 274 <dd><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> can now cache HEAD requests.</dd> 275 276 <dd>Where possible, <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> directives can now be set 277 per directory, instead of per server.</dd> 278 279 <dd>The base URL of cached URLs can be customised, so that a cluster of 280 caches can share the same endpoint URL prefix.</dd> 281 282 <dd><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> is now capable of serving stale cached 283 data when a backend is unavailable (error 5xx).</dd> 284 285 <dd><code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> can now insert HIT/MISS/REVALIDATE into 286 an X-Cache header.</dd> 287 288 <dt><code class="module"><a href="./mod/mod_include.html">mod_include</a></code></dt> 289 <dd>Support for the 'onerror' attribute within an 'include' element, 290 allowing an error document to be served on error instead of the default 291 error string.</dd> 292 293 <dt><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code>, <code class="module"><a href="./mod/mod_include.html">mod_include</a></code>, 294 <code class="module"><a href="./mod/mod_isapi.html">mod_isapi</a></code>, ...</dt> 295 <dd>Translation of headers to environment variables is more strict than 296 before to mitigate some possible cross-site-scripting attacks via header 297 injection. Header names containing invalid characters (including underscores) 298 are no longer converted to environment variables. <a href="env.html">Environment Variables 299 in Apache</a> has some pointers on how to work around broken legacy 300 clients which require such headers. (This affects all modules which 301 use these environment variables.)</dd> 302 303 <dt><code class="module"><a href="./mod/mod_authz_core.html">mod_authz_core</a></code> Authorization Logic Containers</dt> 304 305 <dd>Advanced authorization logic may now be specified using the 306 <code class="directive"><a href="./mod/mod_authz_core.html#require">Require</a></code> directive 307 and the related container directives, such as 308 <code class="directive"><a href="./mod/mod_authz_core.html#requireall"><RequireAll></a></code>.</dd> 309 310 <dt><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></dt> 311 <dd><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> adds the <code>[QSD]</code> 312 (Query String Discard) and <code>[END]</code> flags for 313 <code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> to 314 simplify common rewriting scenarios.</dd> 315 <dd>Adds the possibility to use complex boolean expressions in <code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>.</dd> 316 <dd>Allows the use of SQL queries as <code class="directive"><a href="./mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> functions.</dd> 317 318 <dt><code class="module"><a href="./mod/mod_ldap.html">mod_ldap</a></code>, <code class="module"><a href="./mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></dt> 319 <dd><code class="module"><a href="./mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> adds support for nested groups.</dd> 320 <dd><code class="module"><a href="./mod/mod_ldap.html">mod_ldap</a></code> adds 321 <code class="directive"><a href="./mod/mod_ldap.html#ldapconnectionpoolttl">LDAPConnectionPoolTTL</a></code>, 322 <code class="directive"><a href="./mod/mod_ldap.html#ldaptimeout">LDAPTimeout</a></code>, and 323 other improvements in the handling of timeouts. 324 This is especially useful for setups where a 325 stateful firewall drops idle connections to the LDAP server.</dd> 326 <dd><code class="module"><a href="./mod/mod_ldap.html">mod_ldap</a></code> adds 327 <code class="directive"><a href="./mod/mod_ldap.html#ldaplibrarydebug">LDAPLibraryDebug</a></code> to log 328 debug information provided by the used LDAP toolkit.</dd> 329 330 <dt><code class="module"><a href="./mod/mod_info.html">mod_info</a></code></dt> 331 <dd><code class="module"><a href="./mod/mod_info.html">mod_info</a></code> can now dump the pre-parsed configuration 332 to stdout during server startup.</dd> 333 334 <dt><code class="module"><a href="./mod/mod_auth_basic.html">mod_auth_basic</a></code></dt> 335 <dd>New generic mechanism to fake basic authentication (available in 336 2.4.5 and later).</dd> 337 338 </dl> 339 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 340<div class="section"> 341<h2><a name="programs" id="programs">Program Enhancements</a></h2> 342 343 <dl> 344 <dt><code class="program"><a href="./programs/fcgistarter.html">fcgistarter</a></code></dt> 345 <dd>New FastCGI daemon starter utility</dd> 346 347 <dt><code class="program"><a href="./programs/htcacheclean.html">htcacheclean</a></code></dt> 348 <dd>Current cached URLs can now be listed, with optional metadata 349 included.</dd> 350 <dd>Allow explicit deletion of individual cached URLs from the 351 cache.</dd> 352 <dd>File sizes can now be rounded up to the given block size, making 353 the size limits map more closely to the real size on disk.</dd> 354 <dd>Cache size can now be limited by the number of inodes, instead 355 of or in addition to being limited by the size of the files on 356 disk.</dd> 357 358 <dt><code class="program"><a href="./programs/rotatelogs.html">rotatelogs</a></code></dt> 359 <dd>May now create a link to the current log file.</dd> 360 <dd>May now invoke a custom post-rotate script.</dd> 361 362 <dt><code class="program"><a href="./programs/htpasswd.html">htpasswd</a></code>, <code class="program"><a href="./programs/htdbm.html">htdbm</a></code></dt> 363 <dd>Support for the bcrypt algorithm (available in 2.4.4 and later). 364 </dd> 365 </dl> 366 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 367<div class="section"> 368<h2><a name="documentation" id="documentation">Documentation</a></h2> 369 370 <dl> 371 <dt>mod_rewrite</dt> 372 <dd>The <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> documentation has been 373 rearranged and almost completely rewritten, with a focus on 374 examples and common usage, as well as on showing you when other 375 solutions are more appropriate. The <a href="rewrite/">Rewrite 376 Guide</a> is now a top-level section with much more detail and 377 better organization.</dd> 378 379 <dt>mod_ssl</dt> 380 <dd>The <code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code> documentation has been greatly 381 enhanced, with more examples at the getting started level, in 382 addition to the previous focus on technical details.</dd> 383 384 <dt>Caching Guide</dt> 385 <dd>The <a href="caching.html">Caching Guide</a> has been rewritten 386 to properly distinguish between the RFC2616 HTTP/1.1 caching 387 features provided by <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code>, and the generic 388 key/value caching provided by the <a href="socache.html">socache</a> 389 interface, as well as to cover specialised caching provided by 390 mechanisms such as <code class="module"><a href="./mod/mod_file_cache.html">mod_file_cache</a></code>.</dd> 391 392 </dl> 393 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div> 394<div class="section"> 395<h2><a name="developer" id="developer">Module Developer Changes</a></h2> 396 397 <dl> 398 <dt>Check Configuration Hook Added</dt> 399 400 <dd>A new hook, <code>check_config</code>, has been added which runs 401 between the <code>pre_config</code> and <code>open_logs</code> 402 hooks. It also runs before the <code>test_config</code> hook 403 when the <code>-t</code> option is passed to 404 <code class="program"><a href="./programs/httpd.html">httpd</a></code>. The <code>check_config</code> hook 405 allows modules to review interdependent configuration directive 406 values and adjust them while messages can still be logged to the 407 console. The user can thus be alerted to misconfiguration problems 408 before the core <code>open_logs</code> hook function redirects 409 console output to the error log.</dd> 410 411 <dt>Expression Parser Added</dt> 412 413 <dd>We now have a general-purpose expression parser, whose API is 414 exposed in <var>ap_expr.h</var>. This is adapted from the 415 expression parser previously implemented in 416 <code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code>.</dd> 417 418 <dt>Authorization Logic Containers</dt> 419 420 <dd>Authorization modules now register as a provider, via 421 ap_register_auth_provider(), to support advanced authorization logic, 422 such as <code class="directive"><a href="./mod/mod_authz_core.html#requireall"><RequireAll></a></code>.</dd> 423 424 <dt>Small-Object Caching Interface</dt> 425 426 <dd>The <var>ap_socache.h</var> header exposes a provider-based 427 interface for caching small data objects, based on the previous 428 implementation of the <code class="module"><a href="./mod/mod_ssl.html">mod_ssl</a></code> session cache. 429 Providers using a shared-memory cyclic buffer, disk-based dbm 430 files, and a memcache distributed cache are currently 431 supported.</dd> 432 433 <dt>Cache Status Hook Added</dt> 434 435 <dd>The <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> module now includes a new 436 <code>cache_status</code> hook, which is called when the caching 437 decision becomes known. A default implementation is provided 438 which adds an optional <code>X-Cache</code> and 439 <code>X-Cache-Detail</code> header to the response.</dd> 440 </dl> 441 442 <p>The developer documentation contains a 443 <a href="developer/new_api_2_4.html">detailed list of API changes</a>.</p> 444 </div></div> 445<div class="bottomlang"> 446<p><span>Available Languages: </span><a href="./en/new_features_2_4.html" title="English"> en </a> | 447<a href="./fr/new_features_2_4.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 448<a href="./tr/new_features_2_4.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> 449</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&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div> 450<script type="text/javascript"><!--//--><![CDATA[//><!-- 451var comments_shortname = 'httpd'; 452var comments_identifier = 'http://httpd.apache.org/docs/2.4/new_features_2_4.html'; 453(function(w, d) { 454 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 455 d.write('<div id="comments_thread"><\/div>'); 456 var s = d.createElement('script'); 457 s.type = 'text/javascript'; 458 s.async = true; 459 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 460 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 461 } 462 else { 463 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 464 } 465})(window, document); 466//--><!]]></script></div><div id="footer"> 467<p class="apache">Copyright 2022 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> 468<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.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[//><!-- 469if (typeof(prettyPrint) !== 'undefined') { 470 prettyPrint(); 471} 472//--><!]]></script> 473</body></html>