Apache Week
   Issue 40, 8th November 1996:  

Copyright 1996-2005
Red Hat, Inc.

In this issue

Apache Status

Release: 1.1.1
Beta: None

Bugs reported in 1.1.1:
  • In SSI's, dates formatted with DATE_GMT are incorrect shown with the local timezone
  • Dates from timezones which are not an exact number of hours away from GMT are incorrectly logged
  • SSI documents sometimes log smaller 'bytes sent' number than were actually sent
Bugs fixed in next release:
  • The 'hard' server limit (maximum value for MaxClients) has been increased to 256.
  • If both host name-based and ip-based virtual hosts are used, the order they appear in the config file can affect whether they work correctly

Apache is being prepared for a public beta release. While there is currently no date set for the release, the development work has slowed down to allow the internal testing of a stable version.

The following items are under development and may be included in the next release of Apache. See our Apache 1.2 Sneak Preview for other new features in the next release.

Setting TCP Send Buffer Size

Last week we covered a report which said that TCP transfers could be speeded up by using a larger "send buffer". This is the part of the operating system that accumulates information to be sent across the network. If this is set larger, the data is transferred more efficiently and quicker. Now Apache will incorporate a way of setting this send buffer size. A new directive, SendBufferSize will let you specify the size of the TCP send buffer. Depending on the operating system, this can be set to give better performance.

NCSA Compatible Redirects

The NCSA HTTPd server uses two directives, RedirectTemp and RedirectPermanent, to give temporary and permanent redirects (the difference is that a permanent redirect indicates that the resource has moved permanently, whilst a temporary redirect means it might return to the original location in the future).

To help make converting from an NCSA installation easier, Apache now understands these two directives. However it will probably also extend the existing Redirect directive to allow a range of different redirect statuses to be set. For example, the "410 Gone" status can be used to indicate that a URL (resource) is permanently no longer available.

Add and Remove Options

The Options directive is used to set the options in force at each location. For example, it can be used in a .htaccess file to set the options for that directory (and sub-directories). However, when Options is used it replaces options currently in force with those given on the command. This makes it impossible to set up defaults at a higher level. For example, a server administrator might set up the default options for the document tree with an Options directive in access.conf, as given in the example access.conf file. If they then want to turn on another option in a .htaccess file they have to repeat all the options from the access.conf again.

An new syntax for the Options directive will allow for the adding of individual options to those already in effect. This is done by using a plus character before the option. For example, to turn on the Indexes option in a .htaccess file, the following could be used:

  Options +Indexes

Any options already in force will remain set, and in addition the Indexes option will be turned on. Note that if the + is omitted Apache reverts to its current behaviour of resetting the options already in force.

It will also be possible to remove an individual option, by using a minus symbol instead of plus. Both forms can be combined, so to, for example, add the Indexes option but remove ExecCGI:

  Options +Indexes -ExecCGI

Two New Modules for Setting Response Headers

The next Apache release will include two additional modules. Both these modules set "meta" information about information returned in response to requests. The first module sets information related to caching and expiring of documents. The second allows any HTTP response header to be set.

Expires Module

The expires module, mod_expires, has been added to the Apache distribution. This optional module makes it possible to add expiry times to returned documents. It was previously available as a contributed module on the apache site.

This module can be used to return an expiry time for a document based on either the current time or the file's last modified time. Under the HTTP protocol, proxies and clients which cache documents should get the document again after it has expired. This module can be used to prevent caches holding on to documents for too long, or alternatively it can mark documents which are not going to change for a long time to make caching more efficient.

For example, to set the expiry time for GIF files to a day, use

  ExpiresActive On
  ExpiresByType image/gif A86400

This turns on the expires module, then sets the expiry period to 86400 seconds from the current time (the 'A' means the access time, which is the time of the request). There is an alternative syntax for giving times which is easier to read:

  ExpiresByType image/gif now plus 1 day

Set HTTP Response Headers

A new optional module will be distributed with Apache which will allow HTTP response headers to be set or removed. This could be used to create non-standard headers for particular applications - for example, meta information for an indexer. Or it could be used to add headers for extensions to HTTP, such as a PICS label header. The new <Files> directive can be used to specify the file or files that the header applies to. For example, a PICS label could be applied to all gif or jpeg files within a directory with

  <Files ~ \.(gif|jpeg)$>
  Header add Pics-Label: "label ...."

Now that this module can set any header, including the PICS-Label header, the dedicated PICS module will not be included in Apache 1.2.

Comments or criticisms? Please email us at editors@apacheweek.com