| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta name="generator" content="HTML Tidy, see www.w3.org" /> |
| |
| <title>New features with Apache 1.3</title> |
| </head> |
| <!-- Background white, links blue (unvisited), navy (visited), red (active) --> |
| |
| <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" |
| vlink="#000080" alink="#FF0000"> |
| <!--#include virtual="header.html" --> |
| |
| <h1 align="CENTER">Overview of New Features in Apache 1.3</h1> |
| |
| <p>New features with this release, as extensions of the Apache |
| functionality. Because the core code has changed so |
| significantly, there are certain liberties that earlier |
| versions of Apache (and the NCSA daemon) took that recent |
| Apache versions are pickier about - please check the <a |
| href="misc/compat_notes.html">compatibility notes</a> if you |
| have any problems.</p> |
| |
| <p>If you're upgrading from Apache 1.2, you may wish to read |
| the <a href="upgrading_to_1_3.html">upgrade notes</a>.</p> |
| |
| <p>Enhancements: <a href="#core">Core</a> | <a |
| href="#performance">Performance</a> | <a |
| href="#config">Configuration</a> | <a href="#mod">Modules</a> | |
| <a href="#api">API</a> | <a href="#misc">Misc</a></p> |
| <hr /> |
| |
| <h2><a id="core" name="core">Core Enhancements:</a></h2> |
| |
| <dl> |
| <dt><strong><a href="dso.html">Dynamic Shared Object (DSO) |
| support</a></strong></dt> |
| |
| <dd>Apache modules may now be loaded at runtime; this means |
| that modules can be loaded into the server process space only |
| when necessary, thus overall memory usage by Apache will be |
| significantly reduced. DSO currently is supported on FreeBSD, |
| OpenBSD, NetBSD, Linux, Solaris, SunOS, Digital UNIX, IRIX, |
| HP/UX, UnixWare, NetWare, AIX, ReliantUnix and generic SVR4 |
| platforms.</dd> |
| |
| <dt><strong><a href="windows.html">Support for Windows |
| NT/95</a></strong></dt> |
| |
| <dd>Apache now supports the Windows NT and Windows 2000 |
| operating systems. While Apache may run on Windows 95, 98, or |
| ME, these consumer products are never recommended for |
| production environments, and their use remains experimental. |
| All versions of Apache running on Windows prior to 1.3.15 |
| should be considered beta quality releases.</dd> |
| |
| <dt><strong><a href="cygwin.html">Support for |
| Cygwin</a></strong></dt> |
| |
| <dd>Apache now supports the Cygwin platform for the Windows |
| NT and Windows 2000 operating systems. The Cygwin versions |
| should be considered as stable and reliable as the <a |
| href="windows.html">Windows</a> native counterpart.</dd> |
| |
| <dt><strong><a href="netware.html">Support for NetWare |
| 5.x</a></strong></dt> |
| |
| <dd>Apache now supports NetWare 5.x and above |
| operating systems.</dd> |
| |
| <dt><strong><a href="sourcereorg.html">Re-organized |
| Sources</a></strong></dt> |
| |
| <dd>The source files for Apache have been re-organized. The |
| main difference for Apache users is that the "Module" lines |
| in <code>Configuration</code> have been replaced with |
| "AddModule" with a slightly different syntax. For module |
| authors there are some changes designed to make it easier for |
| users to add their module.</dd> |
| |
| <dt><strong>Reliable Piped Logs</strong></dt> |
| |
| <dd>On almost all Unix architectures Apache now implements |
| "reliable" piped logs in <a |
| href="mod/mod_log_config.html">mod_log_config</a>. Where |
| reliable means that if the logging child dies for whatever |
| reason, Apache will recover and respawn it without having to |
| restart the entire server. Furthermore if the logging child |
| becomes "stuck" and isn't reading its pipe frequently enough |
| Apache will also restart it. This opens up more opportunities |
| for log rotation, hit filtering, real-time splitting of |
| multiple vhosts into separate logs, and asynchronous DNS |
| resolving on the fly.</dd> |
| </dl> |
| <hr /> |
| |
| <h2><a id="performance" name="performance">Performance |
| Improvements</a></h2> |
| |
| <ul> |
| <li>IP-based virtual hosts are looked up via hash table.</li> |
| |
| <li><Directory> parsing speedups.</li> |
| |
| <li>The critical path for static requests has fewer system |
| calls. This generally helps all requests. (45 syscalls for a |
| static request in 1.2 versus 22 in 1.3 in a well tuned |
| configuration).</li> |
| |
| <li><a |
| href="mod/mod_proxy.html#proxyreceivebuffersize"><code>ProxyReceiveBufferSize</code></a> |
| directive gives <code>mod_proxy</code>'s outgoing connections |
| larger network buffers, for increased throughput.</li> |
| |
| <li>The low level I/O routines use <code>writev</code> (where |
| available) to issue multiple writes with a single system |
| call. They also avoid copying memory into buffers as much as |
| possible. The result is less CPU time spent on transferring |
| large files.</li> |
| |
| <li>Static requests are served using <code>mmap</code>, which |
| means bytes are only copied from the disk buffer to the |
| network buffer directly by the kernel. The program never |
| copies bytes around, which reduces CPU time. (Only where |
| available/tested.)</li> |
| |
| <li>When presented with a load spike, the server quickly |
| adapts by spawning children at faster rates.</li> |
| |
| <li>The code which dispatches modules was optimized to avoid |
| repeatedly skipping over modules that don't implement certain |
| phases of the API. (This skipping showed up as 5% of the CPU |
| time on profiles of a server with the default module |
| mix.)</li> |
| |
| <li>Revamp of the Unix scoreboard management code so that |
| less time is spent counting children in various states. |
| Previously a scan was performed for each hit, now it is |
| performed only once per second. This should be noticeable on |
| servers running with hundreds of children and high |
| loads.</li> |
| |
| <li>New serialization choices improve performance on Linux, |
| and IRIX.</li> |
| |
| <li><code><a |
| href="mod/mod_log_config.html">mod_log_config</a></code> can |
| be compile-time configured to buffer writes.</li> |
| |
| <li>Replaced <code>strncpy()</code> with |
| <code>ap_cpystrn()</code>, a routine which doesn't have to |
| zero-fill the entire result. This has dramatic effects on |
| <code>mod_include</code> speed.</li> |
| |
| <li>Additions to the internal "table" API (used for keeping |
| lists of key/value string pairs) provide for up to 20% |
| performance improvement in many situations.</li> |
| </ul> |
| |
| <p>See <a href="misc/perf-tuning.html">the new performance |
| documentation</a> for more information.</p> |
| <hr /> |
| |
| <h2><a id="config" name="config">Configuration |
| Enhancements</a></h2> |
| |
| <dl> |
| <dt><strong>Unified Server Configuration Files</strong></dt> |
| |
| <dd><em>(Apache 1.3.4)</em> The contents of the three server |
| configuration files (<samp>httpd.conf</samp>, |
| <samp>srm.conf</samp>, and <samp>access.conf</samp>) have |
| been merged into a single <samp>httpd.conf</samp> file. The |
| <samp>srm.conf</samp> and <samp>access.conf</samp> files are |
| now empty except for comments directing the Webmaster to look |
| in <samp>httpd.conf</samp>. In addition, the merged |
| <samp>httpd.conf</samp> file has been restructured to allow |
| directives to appear in a hopefully more intuitive and |
| meaningful order.</dd> |
| |
| <dt><strong>Continuation Lines in config files</strong></dt> |
| |
| <dd>Directive lines in the server configuration files may now |
| be split onto multiple lines by using the canonical Unix |
| continuation mechanism, namely a '\' as the last non-blank |
| character on the line to indicate that the next line should |
| be concatenated.</dd> |
| |
| <dt><strong>Apache Autoconf-style Interface |
| (APACI)</strong></dt> |
| |
| <dd>Until Apache 1.3 there was no real out-of-the-box |
| batch-capable build and installation procedure for the |
| complete Apache package. This is now provided by a top-level |
| <code>configure</code> script and a corresponding top-level |
| <code>Makefile.tmpl</code> file. The goal is to provide a GNU |
| Autoconf-style frontend which is capable to both drive the |
| old <code>src/Configure</code> stuff in batch and |
| additionally installs the package with a GNU-conforming |
| directory layout. Any options from the old configuration |
| scheme are available plus a lot of new options for flexibly |
| customizing Apache.<br /> |
| <strong>Note:</strong> The default installation layout has |
| changed for Apache 1.3.4. See the files |
| <code>README.configure</code> and <code>INSTALL</code> for |
| more information.</dd> |
| |
| <dt><strong>APache eXtenSion (APXS) support |
| tool</strong></dt> |
| |
| <dd>Now that Apache provides full support for loading modules |
| under runtime from dynamic shared object (DSO) files, a new |
| support tool <code>apxs</code> was created which provides |
| off-source building, installing and activating of those |
| DSO-based modules. It completely hides the platform-dependent |
| DSO-build commands from the user and provides an easy way to |
| build modules outside the Apache source tree. To achieve this |
| APACI installs the Apache C header files together with the |
| <code>apxs</code> tool.</dd> |
| |
| <dt><a href="install.html#installing"><strong>Default Apache |
| directory path changed to |
| <code>/usr/local/apache/</code></strong></a><br /> |
| </dt> |
| |
| <dd>The default directory for the Apache ServerRoot changed |
| from the NCSA-compatible <code>/usr/local/etc/httpd/</code> |
| to <code>/usr/local/apache/</code>. This change covers only |
| the default setting (and the documentation); it is of course |
| possible to override it using the <a href="invoking.html">-d |
| <em>ServerRoot</em> and -f <em>httpd.conf</em></a> switches |
| when starting apache.</dd> |
| |
| <dt><strong>Improved HTTP/1.1-style Virtual |
| Hosts</strong></dt> |
| |
| <dd>The new <a |
| href="mod/core.html#namevirtualhost"><code>NameVirtualHost</code></a> |
| directive is used to list IP address:port pairs on which |
| HTTP/1.1-style virtual hosting occurs. This is vhosting based |
| on the <code>Host:</code> header from the client. Previously |
| this address was implicitly the same as the "main address" of |
| the machine, and this caused no end of problems for users, |
| and was not powerful enough. Please see the <a |
| href="vhosts/">Apache Virtual Host documentation</a> for |
| further details on configuration.</dd> |
| |
| <dt><strong><code>Include</code> directive</strong></dt> |
| |
| <dd>The <a |
| href="mod/core.html#include"><code>Include</code></a> |
| directive includes other config files immediately at that |
| point in parsing.</dd> |
| |
| <dt><strong>-S command line option for debugging vhost |
| setup</strong></dt> |
| |
| <dd>If Apache is invoked with the <code>-S</code> command |
| line option it will dump out information regarding how it |
| parsed the <code>VirtualHost</code> sections. This is useful |
| for folks trying to debug their virtual host |
| configuration.</dd> |
| |
| <dt><strong>Control of HTTP methods</strong></dt> |
| |
| <dd><a href="mod/core.html#limitexcept"><LimitExcept> |
| and </LimitExcept></a> are used to enclose a group of |
| access control directives which will then apply to any HTTP |
| access method not listed in the arguments; i.e., it is the |
| opposite of a <Limit> section and can be used to |
| control both standard and nonstandard/unrecognized |
| methods.</dd> |
| </dl> |
| <hr /> |
| |
| <h3><a id="mod" name="mod">Module Enhancements</a></h3> |
| |
| <dl> |
| <dt><a href="mod/mod_negotiation.html"><strong>Improved |
| mod_negotiation</strong></a><br /> |
| </dt> |
| |
| <dd>The optional content negotiation (MultiViews) module has |
| been completely overhauled for Apache 1.3.4, incorporating |
| the latest HTTP/1.1 revisions and the experimental |
| Transparent Content Negotion features of RFC 2295 and RFC |
| 2296.</dd> |
| |
| <dt><a href="mod/mod_speling.html"><strong>NEW - Spelling |
| correction module</strong></a><br /> |
| </dt> |
| |
| <dd>This optional module corrects frequently occurring |
| spelling and capitalization errors in document names |
| requested from the server.</dd> |
| |
| <dt><a href="mod/mod_setenvif.html"><strong>NEW - Conditional |
| setting of environment variables</strong></a><br /> |
| </dt> |
| |
| <dd>The addition of <a |
| href="mod/mod_setenvif.html#setenvif"><code>SetEnvIf</code></a> |
| and <a |
| href="mod/mod_setenvif.html#setenvifnocase"><code>SetEnvIfNoCase</code></a>. |
| These allow you to set environment variables for server and |
| CGI use based upon attributes of the request.</dd> |
| |
| <dt><strong><a href="mod/mod_mime_magic.html">NEW - "Magic" |
| MIME-typing</a></strong></dt> |
| |
| <dd>The optional <code>mod_mime_magic</code> has been added. |
| It uses "magic numbers" and other hints from a file's |
| contents to figure out what the contents are. It then uses |
| this information to set the file's media type, if it cannot |
| be determined by the file's extension.</dd> |
| |
| <dt><strong><a href="mod/mod_unique_id.html">NEW - Unique |
| Request Identifiers</a></strong></dt> |
| |
| <dd><a href="mod/mod_unique_id.html">mod_unique_id</a> can be |
| included to generate a unique identifier that distinguishes a |
| hit from every other hit. ("Unique" has some restrictions on |
| it.) The identifier is available in the environment variable |
| <code>UNIQUE_ID</code>.</dd> |
| |
| <dt><strong>mod_proxy enhancements:</strong></dt> |
| |
| <dd> |
| <ul> |
| <li>Easier and safer authentication for ftp proxy logins: |
| When no ftp user name and/or password is specified in the |
| URL, but the destination ftp server requires one, Apache |
| now returns a "[401] Authorization Required" status. This |
| status code usually makes the client browser pop up an |
| "Enter user name and password" dialog, and the request is |
| retried with the given user authentification. That is |
| slightly more secure than specifying the authentication |
| information as part of the request URL, where it could be |
| logged in plaintext by older proxy servers.</li> |
| |
| <li>The new <samp>AllowCONNECT</samp> directive allows |
| configuration of the port numbers to which the proxy |
| CONNECT method may connect. That allows proxying to |
| https://some.server:8443/ which resulted in an error |
| message prior to Apache version 1.3.2.</li> |
| |
| <li>The proxy now supports the HTTP/1.1 "Via:" header as |
| specified in RFC2068. The new <a |
| href="mod/mod_proxy.html#proxyvia"><code>ProxyVia</code></a> |
| directive allows switching "Via:" support off or on, or |
| suppressing outgoing "Via:" header lines altogether for |
| privacy reasons.</li> |
| |
| <li>The "Max-Forwards:" TRACE header specified in |
| HTTP/1.1 is now supported. With it, you can trace the |
| path of a request along a chain of proxies (if they, too, |
| support it).</li> |
| |
| <li><a |
| href="mod/mod_proxy.html#noproxy"><code>NoProxy</code></a> |
| and <a |
| href="mod/mod_proxy.html#proxydomain"><code>ProxyDomain</code></a> |
| directives added to proxy, useful for intranets.</li> |
| |
| <li>New <code><a |
| href="mod/mod_proxy.html#proxypassreverse">ProxyPassReverse</a></code> |
| directive. It lets Apache adjust the URL in the |
| <tt>Location</tt> header on HTTP redirect responses.</li> |
| |
| <li>Easier navigation in ftp server directory trees.</li> |
| </ul> |
| </dd> |
| |
| <dt><a href="mod/mod_include.html#flowctrl"><strong>Enhanced |
| <code>mod_include</code> string |
| comparisons</strong></a><br /> |
| </dt> |
| |
| <dd>The string-based server-side include (SSI) flow-control |
| directives now include comparison for less-than (<), |
| less-than-or-equal (<=), greater-than (>), and |
| greater-than-or-equal (>=). Previously comparisons could |
| only be made for equality or inequality.</dd> |
| |
| <dt><strong>ServerRoot relative auth filenames</strong></dt> |
| |
| <dd>Auth filenames for the various authentication modules are |
| now treated as relative to the ServerRoot if they are not |
| full paths.</dd> |
| |
| <dt><a href="mod/mod_autoindex.html"><strong>Enhancements to |
| directory indexing:</strong></a></dt> |
| |
| <dd> |
| <ul> |
| <li><strong>Code split:</strong>The <code>mod_dir</code> |
| module has been split in two, with <a |
| href="mod/mod_dir.html">mod_dir</a> handling directory |
| index files, and <a |
| href="mod/mod_autoindex.html">mod_autoindex</a> creating |
| directory listings. Thus allowing folks to remove the |
| indexing function from critical servers.</li> |
| |
| <li><strong>Sortable:</strong> Clicking on a column title |
| will now sort the listing in order by the values in that |
| column. This feature can be disabled using the |
| <code>SuppressColumnSorting</code> <a |
| href="mod/mod_autoindex.html#indexoptions">IndexOptions</a> |
| keyword.</li> |
| |
| <li><a |
| href="mod/mod_autoindex.html#indexoptions:suppresshtmlpreamble"> |
| <code><strong>SuppressHTMLPreamble</strong></code></a> |
| can be used if your README.html file includes its own |
| HTML header.</li> |
| |
| <li>The <a |
| href="mod/mod_autoindex.html#indexoptions"><code><strong>IndexOptions</strong></code></a> |
| directive now allows the use of incremental prefixes (+/- |
| to add/remove the respective keyword feature, as was |
| already possible for the <a |
| href="mod/core.html#options">Options</a> directive) to |
| its keyword arguments. Multiple IndexOptions directives |
| applying to the same directory will now be merged.</li> |
| |
| <li><a |
| href="mod/mod_autoindex.html#indexoptions:iconheight"><strong> |
| <code>IconHeight</code></strong></a> and <a |
| href="mod/mod_autoindex.html#indexoptions:iconwidth"><strong> |
| <code>IconWidth</code></strong></a> let you set height |
| and width attributes to the <code><IMG></code> tag |
| in directory listings.</li> |
| |
| <li>The new <a |
| href="mod/mod_autoindex.html#indexoptions:namewidth"><strong> |
| <code>NameWidth</code></strong></a> keyword to the <a |
| href="mod/mod_autoindex.html#indexoptions">IndexOptions</a> |
| directive lets you set the number of columns for <a |
| href="mod/mod_autoindex.html#indexoptions:fancyindexing">"fancy" |
| directory listings</a>. If set to an '*' asterisk, the |
| name width will be adjusted automatically.</li> |
| |
| <li>The <a |
| href="mod/mod_autoindex.html#fancyindexing"><samp>FancyIndexing</samp></a> |
| directive now correctly has the same impact as <a |
| href="mod/mod_autoindex.html#indexoptions:fancyindexing"><samp> |
| IndexOptions FancyIndexing</samp></a> without |
| replacing the effect of any existing |
| <samp>IndexOptions</samp> directive.</li> |
| |
| <li>Starting with 1.3.15, the server will satisfy |
| directory requests with the cache controls ETag and |
| LastModified, if IndexOptions includes the <a |
| href="mod/mod_autoindex.html#indexoptions:trackmodified"><samp>TrackModified</samp></a> |
| directive. The server will not need to generate the |
| listing if the client determines the request has not |
| changed, improving performance. Due to its experimental |
| nature, this feature is not enabled by default.</li> |
| </ul> |
| </dd> |
| |
| <dt><strong>Less Buffering of CGI Script Output</strong></dt> |
| |
| <dd>In previous versions of Apache, the output from CGI |
| scripts would be internally buffered by the server, and |
| wouldn't be forwarded to the client until either the buffers |
| were full or the CGI script completed. As of Apache 1.3, the |
| buffer to the client is flushed any time it contains |
| something and the server is waiting for more information from |
| the script. This allows CGI script to provide partial status |
| reports during long processing operations.</dd> |
| |
| <dt><strong><a href="mod/mod_alias.html">Regular Expression |
| support for <code>Alias</code> and |
| <code>Redirect</code></a></strong></dt> |
| |
| <dd>New <a |
| href="mod/mod_alias.html#aliasmatch"><code>AliasMatch</code></a>, |
| <a |
| href="mod/mod_alias.html#scriptaliasmatch"><code>ScriptAliasMatch</code></a>, |
| and <a |
| href="mod/mod_alias.html#redirectmatch"><code>RedirectMatch</code></a> |
| directives allow for the use of regular expression matching. |
| Additionally, new <a |
| href="mod/core.html#directorymatch"><code><DirectoryMatch></code></a>, |
| <a |
| href="mod/core.html#locationmatch"><code><LocationMatch></code></a>, |
| and <a |
| href="mod/core.html#filesmatch"><code><FilesMatch></code></a> |
| sections provide a new syntax for regular expression |
| sectioning.</dd> |
| |
| <dt><strong><a |
| href="mod/mod_info.html#addmoduleinfo"><code>AddModuleInfo</code></a> |
| directive added to <a |
| href="mod/mod_info.html">mod_info</a></strong></dt> |
| |
| <dd>Allows additional information to be listed along with a |
| specified module.</dd> |
| |
| <dt><strong>Absence of any <code>TransferLog</code> disables |
| logging</strong></dt> |
| |
| <dd>If no <a |
| href="mod/mod_log_config.html#transferlog"><code>TransferLog</code></a> |
| directive is given then no log is written. This supports |
| co-existence with other logging modules.</dd> |
| |
| <dt><strong>Ability to name logging formats</strong></dt> |
| |
| <dd>The <a |
| href="mod/mod_log_config.html#logformat"><code>LogFormat</code></a> |
| directive has been enhanced to allow you to give nicknames to |
| specific logging formats. You can then use these nicknames in |
| other <code>LogFormat</code> and <a |
| href="mod/mod_log_config.html#customlog"><code>CustomLog</code></a> |
| directives, rather than having to spell out the complete log |
| format string each time.</dd> |
| |
| <dt><strong>Conditional logging</strong></dt> |
| |
| <dd><a |
| href="mod/mod_log_config.html#customlog-conditional">mod_log_config</a> |
| now supports logging based upon environment variables. |
| mod_log_referer and mod_log_agent are now deprecated.</dd> |
| |
| <dt><strong>mod_cern_meta configurable |
| per-directory</strong></dt> |
| |
| <dd><a href="mod/mod_cern_meta.html">mod_cern_meta</a> is now |
| configurable on a per-directory basis.</dd> |
| |
| <dt><strong>New map types for <a |
| href="mod/mod_rewrite.html#RewriteMap"><code>RewriteMap</code></a> |
| directive</strong></dt> |
| |
| <dd>The new map types `Randomized Plain Text' and `Internal |
| Function' were added to the <code>RewriteMap</code> directive |
| of mod_rewrite. They provide two new features: First, you now |
| can randomly choose a sub-value from a value which was |
| looked-up in a rewriting map (which is useful when choosing |
| between backend servers in a Reverse Proxy situation). |
| Second, you now can translate URL parts to fixed (upper or |
| lower) case (which is useful when doing mass virtual hosting |
| by the help of mod_rewrite).</dd> |
| |
| <dt><strong>CIDR and Netmask access control</strong></dt> |
| |
| <dd><a href="mod/mod_access.html">mod_access</a> directives |
| now support CIDR (Classless Inter-Domain Routing) style |
| prefixes, and netmasks for greater control over IP access |
| lists.</dd> |
| </dl> |
| <hr /> |
| |
| <h3><a id="api" name="api">API Additions and Changes</a></h3> |
| |
| <p>For all those module writers and code hackers:</p> |
| |
| <dl> |
| <dt><strong><code>child_init</code></strong></dt> |
| |
| <dd>A new phase for Apache's API is called once per |
| "heavy-weight process," before any requests are handled. This |
| allows the module to set up anything that need to be done |
| once per processes. For example, connections to |
| databases.</dd> |
| |
| <dt><strong><code>child_exit</code></strong></dt> |
| |
| <dd>A new phase called once per "heavy-weight process," when |
| it is terminating. Note that it can't be called in some fatal |
| cases (such as segfaults and kill -9). The |
| <code>child_init</code> and <code>child_exit</code> functions |
| are passed a pool whose lifetime is the same as the lifetime |
| of the child (modulo completely fatal events in which Apache |
| has no hope of recovering). In contrast, the module |
| <code>init</code> function is passed a pool whose lifetime |
| ends when the parent exits or restarts.</dd> |
| |
| <dt><strong><code>child_terminate</code></strong></dt> |
| |
| <dd>Used in the child to indicate the child should exit after |
| finishing the current request.</dd> |
| |
| <dt><strong><code>register_other_child</code></strong></dt> |
| |
| <dd>See <code>http_main.h</code>. This is used in the parent |
| to register a child for monitoring. The parent will report |
| status to a supplied callback function. This allows modules |
| to create their own children which are monitored along with |
| the httpd children.</dd> |
| |
| <dt><strong><code>piped_log</code></strong></dt> |
| |
| <dd>See <code>http_log.h</code>. This API provides the common |
| code for implementing piped logs. In particular it implements |
| a reliable piped log on architectures supporting it |
| (<em>i.e.</em>, Unix at the moment).</dd> |
| |
| <dt><strong>scoreboard format changed</strong></dt> |
| |
| <dd>The scoreboard format is quite different. It is |
| considered a "private" interface in general, so it's only |
| mentioned here as an FYI.</dd> |
| |
| <dt><strong><code>set_last_modified</code> split into |
| three</strong></dt> |
| |
| <dd>The old function <code>set_last_modified</code> performed |
| multiple jobs including the setting of the |
| <code>Last-Modified</code> header, the <code>ETag</code> |
| header, and processing conditional requests (such as IMS). |
| These functions have been split into three functions: |
| <code>set_last_modified</code>, <code>set_etag</code>, and |
| <code>meets_conditions</code>. The field <code>mtime</code> |
| has been added to <code>request_rec</code> to facilitate |
| <code>meets_conditions</code>.</dd> |
| |
| <dt><strong>New error logging function: |
| <code>ap_log_error</code></strong></dt> |
| |
| <dd>All old logging functions are deprecated, we are in the |
| process of replacing them with a single function called |
| <code>ap_log_error</code>. This is still a work in |
| progress.</dd> |
| |
| <dt><strong><code>set_file_slot</code> for config |
| parsing</strong></dt> |
| |
| <dd>The <code>set_file_slot</code> routine provides a |
| standard routine that prepends ServerRoot to non-absolute |
| paths.</dd> |
| |
| <dt><strong><code>post_read_request</code> module |
| API</strong></dt> |
| |
| <dd>This request phase occurs immediately after reading the |
| request (headers), and immediately after creating an internal |
| redirect. It is most useful for setting environment variables |
| to affect future phases.</dd> |
| |
| <dt><strong><code>psocket</code>, and |
| <code>popendir</code></strong></dt> |
| |
| <dd>The <code>psocket</code> and <code>pclosesocket</code> |
| functions allow for race-condition free socket creation with |
| resource tracking. Similarly <code>popendir</code> and |
| <code>pclosedir</code> protect directory reading.</dd> |
| |
| <dt><strong><code>is_initial_req</code></strong></dt> |
| |
| <dd>Test if the request is the initial request |
| (<em>i.e.</em>, the one coming from the client).</dd> |
| |
| <dt><strong><code>kill_only_once</code></strong></dt> |
| |
| <dd>An option to <code>ap_spawn_child</code> functions which |
| prevents Apache from aggressively trying to kill off the |
| child.</dd> |
| |
| <dt><strong><code>alloc debugging code</code></strong></dt> |
| |
| <dd>Defining <code>ALLOC_DEBUG</code> provides a rudimentary |
| memory debugger which can be used on live servers with low |
| impact -- it sets all allocated and freed memory bytes to |
| 0xa5. Defining <code>ALLOC_USE_MALLOC</code> will cause the |
| alloc code to use <code>malloc()</code> and |
| <code>free()</code> for each object. This is far more |
| expensive and should only be used for testing with tools such |
| as Electric Fence and Purify. See <code>main/alloc.c</code> |
| for more details.</dd> |
| |
| <dt><strong><code>ap_cpystrn</code></strong></dt> |
| |
| <dd>The new <code>strncpy</code> "lookalike", with slightly |
| different semantics is much faster than <code>strncpy</code> |
| because it doesn't have to zero-fill the entire buffer.</dd> |
| |
| <dt><strong><code>table_addn</code>, <code>table_setn</code>, |
| <code>table_mergen</code></strong></dt> |
| |
| <dd>These new functions do <strong>not</strong> call |
| <code>pstrdup</code> on their arguments. This provides for |
| big speedups. There is also some debugging support to ensure |
| code uses them properly. See <code>src/CHANGES</code> for |
| more information.</dd> |
| |
| <dt><strong><code>construct_url</code></strong></dt> |
| |
| <dd>The function prototype for this changed from taking a |
| <code>server_rec *</code> to taking a <code>request_rec |
| *</code>.</dd> |
| |
| <dt><strong><code>get_server_name</code>, |
| <code>get_server_port</code></strong></dt> |
| |
| <dd>These are wrappers which deal with the <a |
| href="mod/core.html#usecanonicalname">UseCanonicalName</a> |
| directive when retrieving the server name and port for a |
| request.</dd> |
| |
| <dt><strong>Change to prototype for |
| <code>ap_bspawn_child</code> and |
| <code>ap_call_exec</code></strong></dt> |
| |
| <dd>Added a <code>child_info *</code> to <code>spawn</code> |
| function (as passed to <code>ap_bspawn_child</code>) and to |
| <code>ap_call_exec</code> to allow children to work correctly |
| on Win32. We also cleaned up the nomenclature a bit, |
| replacing <code>spawn_child_err</code> with simply |
| <code>ap_spawn_child</code> and |
| <code>spawn_child_err_buff</code> with simply |
| <code>ap_bspawn_child</code>.</dd> |
| |
| <dt> |
| <strong><code>ap_add_version_component()</code></strong></dt> |
| |
| <dd>This API function allows for modules to add their own |
| additional server tokens which are printed on the on the |
| <code>Server:</code> header line. Previous 1.3beta versions |
| had used a <code>SERVER_SUBVERSION</code> compile-time |
| <code>#define</code> to perform this function. Whether the |
| tokens are actually displayed is controlled by the new |
| <code>ServerTokens</code> directive.</dd> |
| </dl> |
| <hr /> |
| |
| <h3><a id="misc" name="misc">Miscellaneous |
| Enhancements</a></h3> |
| |
| <dl> |
| <dt><strong><a href="ebcdic.html">Port to EBCDIC mainframe |
| machine running BS2000/OSD</a></strong></dt> |
| |
| <dd>As a premiere, this version of Apache comes with a beta |
| version of a port to a mainframe machine which uses the |
| EBCDIC character set as its native codeset (It is the SIEMENS |
| family of mainframes running the BS2000/OSD operating system |
| on a IBM/390 compatible processor. This mainframe OS nowadays |
| features a SVR4-like POSIX subsystem).</dd> |
| |
| <dt><strong><a |
| href="mod/core.html#accessfilename"><code>AccessFileName</code> |
| Enhancement</a></strong></dt> |
| |
| <dd>The <code>AccessFileName</code> directive can now take |
| more than one filename. This lets sites serving pages from |
| network file systems and more than one Apache web server, |
| configure access based on the server through which shared |
| pages are being served.</dd> |
| |
| <dt><strong><code>HostnameLookups</code> now defaults to |
| "Off"</strong></dt> |
| |
| <dd>The <a |
| href="mod/core.html#hostnamelookups"><code>HostnameLookups</code></a> |
| directive now defaults to "Off". This means that, unless |
| explicitly turned on, the server will not resolve IP |
| addresses into names. This was done to spare the Internet |
| from unnecessary DNS traffic.</dd> |
| |
| <dt><strong>Double-Reverse DNS enforced</strong></dt> |
| |
| <dd>The <a |
| href="mod/core.html#hostnamelookups"><code>HostnameLookups</code></a> |
| directive now supports double-reverse DNS. (Known as |
| <em>PARANOID</em> in the terminology of tcp_wrappers.) An IP |
| address passes a double-reverse DNS test if the forward map |
| of the reverse map includes the original IP. Regardless of |
| the HostnameLookups setting, <a |
| href="mod/mod_access.html">mod_access</a> access lists using |
| DNS names <strong>require</strong> all names to pass a |
| double-reverse DNS test. (Prior versions of Apache required a |
| compile-time switch to enable double-reverse DNS.)</dd> |
| |
| <dt><strong>LogLevel and syslog support</strong></dt> |
| |
| <dd>Apache now has <a |
| href="mod/core.html#loglevel">configurable error logging |
| levels</a> and supports <a |
| href="mod/core.html#errorlog">error logging via |
| syslogd(8)</a>.</dd> |
| |
| <dt><strong>Detaching from stdin/out/err</strong></dt> |
| |
| <dd>On boot Apache will now detach from stdin, stdout, and |
| stderr. It does not detach from stderr until it has |
| successfully read the config files. So you will see errors in |
| the config file. This should make it easier to start Apache |
| via rsh or crontab.</dd> |
| |
| <dt><a id="y2k" name="y2k"><strong>Year-2000 |
| Improvements</strong></a></dt> |
| |
| <dd>The default <code>timefmt</code> string used by <a |
| href="mod/mod_include.html"><code>mod_include</code></a> has |
| been modified to display the year using four digits rather |
| than the two-digit format used previously. The <a |
| href="mod/mod_autoindex.html"><code>mod_autoindex</code></a> |
| module has also been modified to display years using four |
| digits in FancyIndexed directory listings.</dd> |
| |
| <dt><strong>Common routines Moving to a Separate |
| Library</strong></dt> |
| |
| <dd>There are a number of functions and routines that have |
| been developed for the Apache project that supplement or |
| supersede library routines that differ from one operating |
| system to another. While most of these are used only by the |
| Apache server itself, some are referenced by supporting |
| applications (such as <code>htdigest</code>), and these other |
| applications would fail to build because the routines were |
| built only into the server. These routines are now being |
| migrated to a separate subdirectory and library so they can |
| be used by other applications than just the server. See the |
| <code>src/ap/</code> subdirectory.</dd> |
| |
| <dt><strong>New <code><a |
| href="mod/core.html#serversignature">ServerSignature</a></code> |
| directive</strong></dt> |
| |
| <dd>This directive optionally adds a line containing the |
| server version and virtual host name to server-generated |
| pages (error documents, ftp directory listings, mod_info |
| output <em>etc.</em>). This makes it easier for users to tell |
| which server produced the error message, especially in a |
| proxy chain (often found in intranet environments).</dd> |
| |
| <dt><strong>New <code><a |
| href="mod/core.html#usecanonicalname">UseCanonicalName</a></code> |
| directive</strong></dt> |
| |
| <dd>This directive gives control over how Apache creates |
| self-referential URLs. Previously Apache would always use the |
| <a href="mod/core.html#servername">ServerName</a> and <a |
| href="mod/core.html#port">Port</a> directives to construct a |
| "canonical" name for the server. With <code>UseCanonicalName |
| off</code> Apache will use the hostname and port supplied by |
| the client, if available.</dd> |
| |
| <dt><strong><code>SERVER_VERSION</code> definition |
| abstracted, and server build date added</strong></dt> |
| |
| <dd>In earlier versions, the Apache server version was |
| available to modules through the <code>#define</code>d value |
| for <code>SERVER_VERSION</code>. In order to keep this value |
| consistent when modules and the core server are compiled at |
| different times, this information is now available through |
| the core API routine <code>ap_get_server_version()</code>. |
| The use of the <code>SERVER_VERSION</code> symbol is |
| deprecated. Also, <code>ap_get_server_built()</code> returns |
| a string representing the time the core server was |
| linked.</dd> |
| |
| <dt><a href="mod/core.html#servertokens"><strong>Including |
| the operating system in the server |
| identity</strong></a><br /> |
| </dt> |
| |
| <dd>A new directive, <code>ServerTokens</code>, allows the |
| Webmaster to change the value of the <code>Server</code> |
| response header field which is sent back to clients. The |
| <code>ServerTokens</code> directive controls whether the |
| server will include a non-specific note in the server |
| identity about the type of operating system on which the |
| server is running as well as included module information. As |
| of Apache 1.3, this additional information is included by |
| default.<br /> |
| <br /> |
| </dd> |
| |
| <dt><strong>Support for Netscape style SHA1 encrypted |
| passwords</strong><br /> |
| </dt> |
| |
| <dd>To facilitate migration or integration of BasicAuth |
| password schemes where the password is encrypted using SHA1 |
| (as opposed to Apache's built in MD5 and/or the OS specific |
| crypt(3) function ) passwords prefixed with with |
| <code>{SHA1}</code> are taken as Base64 encoded SHA1 |
| passwords. More information and some utilities to convert |
| Netscape ldap/ldif entries can be found in support/SHA1.</dd> |
| </dl> |
| <!--#include virtual="footer.html" --> |
| </body> |
| </html> |
| |