Apache Week
Issue 77, 8thAugust1997:

Copyright 2020 Red Hat, Inc

In this issue

Apache 1.2.2 About to be Released

A new release of the stable 1.2 version of Apache is just about to be announced. This fixes a few bugs in the latest release, 1.2.1, and users should probably upgrade to 1.2.2 when it is available.

The main bugs fixed are:

  • Reduce pause at end of transfers in some cases
  • Merge <Directory> and <Location> sections in a virtual host after merging sections from the main server
  • Prevent multiple merging of the same <Directory> section
  • Fix loop in mod_imap when file referred is above document root
  • Stop mod_auth_anon logging sub-requests
  • Get mod_info to indent <Files> sections
  • Read HTTP/1.1 request bodies if present even if not used
  • Fix mod_negotiation algorythm

In addition, Apache 1.2.2 has a work-around for a bug in Microsoft Internet Explorer 4 PR 2 which cannot understand HTTP/1.1 responses. And it works around the bug in Solaris 2.5.1 and all earlier releases which can make Apache fail to rebind to the network socket after a HUP.

Apache Status

Release: 1.2.1 (Released 6th July 1997) (local download sites)
Beta: None
Alpha: 1.3a1 (Released 23rd July 1997) (local download sites)

Patches to Apache 1.2 bugs will be made available in the apply to 1.2.1 directory on the Apache site. Some new features and other unofficial patches are available in the 1.2 patches directory. For details of all previously reported bugs, see the Apache bug database and Known Bugs page. Many common configuration questions are answered in the Apache FAQ.

The module which builds perl in Apache is now released at version 1.00. This is a powerful enhancement to Apache that lets you embed perl into HTML, provides a much faster method of running Perl than normal CGI, and even lets you write Apache modules in Perl!

The mod_perl annoucement summarises the potential of this module: "The Apache/Perl integration project brings together the full power of the Perl programming language and the Apache HTTP server. This is achieved by linking the Perl runtime library into the server and providing an object oriented Perl interface to the server's C language API. These pieces are seamlessly glued together by the `mod_perl' server plugin, making it is possible to write Apache modules entirely in Perl. In addition, the persistent interpreter embedded in the server avoids the overhead of starting an external interpreter and the penalty of Perl start-up (compile) time."

For more details see the Apache/Perl integration homepage at perl.apache.org. The module is available from there or the CPAN network.

Unless otherwise noted, all the new features discussed here are planned for Apache 1.3 and not Apache 1.2.1.

Directory Filename Matching

The <Directory> directive takes an argument of a filename, which can include a "*" to match multiple characters. This is used to apply configuration information to particular directories only. For example, <Directory /home/*/public_html> could be used to match paths under the /home directory which include "public_html" somewhere in the path. However the matching used in Apache is different to that used by the Unix shell. For example, the "*" character matches all characters, including slash characters.

A future release of Apache may change the filename matching to:

  • ? and * do not match slash characters
  • The character matching construct [...] can be used

These changes would also apply to <Location> and <Files> sections as well.

Finally, in current releases sections can include full regular expressions which are compared at the same time as the non-regular expressions. As part of these changes, regular expressions will only be checked after all non-regular expressions have been checked. Additional debugging information to display how sections are being merged may also be provided.

Documentation Project

There has been some discussion about creating an Apache Documentation Project. This would document Apache fully and in multiple formats suitable non-only for online viewing but also printing and downloading. At the moment all documentation is written in HTML pages as given on the Apache site. Documentation is generally updated by the developers when new features are added or when bugs are found. While the documents should be fairly complete and show all Apache directives and functions, they may tend to lack overviews and introductory information. The documentation project may help provide this sort of information.

On a similar subject, the issue of localising Apache and www.apache.org to other languages has been discussed. As far as Apache goes, the code could be updated to store all its text messages in a single file which can be selected for particular languages. Both Unix and Windows provide a way to do this using language resources. This will probably not appear in Apache 1.3.

For both Apache and the site there are issues involved with keeping translated information up to date. This should be ok for languages which Apache developers can speak, but for other languages where a translation is provided by someone else it will soon get out of date.

Virtual Hosting Improvements

The way Apache handles virtual hosts has been improved. This is an attempt to make it clearer how Apache deals with the various types of hosts that can be configured:

  • IP-based virtual hosts
  • Name-based virtual hosts
  • The "main" server
  • Any default server (_default_)

In addition, the internal storage of virtual hosts has been changed from a linked list to a hash to make selecting a host quicker, especially on sites with large numbers of hosts.

The algorythm for selecting a virtual host is now:

  • Find matching IP virtual host for the IP of the incoming connections (this might match the main server)
  • If that fails, match the main server anyway
  • If the main server has been matched, look for matching named-based information (ServerName, ServerAlias and ServerPath directives) in name-based virtual hosts
  • If no server matched, look for the _default_ virtual host

Module API Adds Socket Pool

The Apache module API has functions to ensure that system resources such as file descriptors are not leaked. Instead of using the normal OS function calls, special "pool" calls, such as popen() are used instead. When the request is finished with these pools of system resources are recovered by Apache. Now socket descriptors can be added to the pool of resources, using the psocket() function.

Apache in the News

TechWeb's Real Apache, Real Nets shows the advantages of using Apache as an Intranet server. This is part of a large set of pages about constructing an Intranet which largely concentrates on Windows NT server systems. The Apache article is part of a "reality" check about what many people are really using today.