What Is New in Apache HTTP Server 1.3
| Category | Highlights |
|---|---|
| New Features | Dynamic Shared Object (DSO) support via mod_so; APACI (Apache Autoconf-style Interface) build system; apxs extension tool; Name-based virtual hosting (NameVirtualHost); mod_vhost_alias for mass virtual hosting; mod_auth_digest (MD5/Digest authentication); mod_define for configuration variables; mod_speling for URL typo correction; mod_unique_id; mod_mmap_static for static file memory-mapping; Win32/Windows NT support; NetWare 5.x and Cygwin platform support; suEXEC enhancements; ProxyPassReverse directive; ProxyIOBufferSize option; CGI output streamed without buffering |
| Improvements | mod_autoindex split from mod_dir; sortable directory listings; IndexOptions incremental prefix support (+/-); improved mod_rewrite with RewriteOptions loop-limit protection; SSI flow-control extended with less-than/greater-than comparisons; auth filenames treated as relative to ServerRoot; Host: header validation hardened for mass virtual hosting; suexec environment cleaned more aggressively at startup; mod_proxy Content-Length and header handling corrected; apxs consistency and rebuild reliability improved; -F flag for non-detaching supervisor process; -S command-line switch for virtual host config debugging |
| Bug Fixes | mod_rewrite rnd behavior restored (broken in 1.3.23); mod_proxy 304 response Content-Length mis-update fixed; NULL variable check in proxy corrected; Satisfy Any without AuthType no longer causes internal server error; mod_negotiation case-insensitive matching fixed on Win32/OS2/NetWare; RewriteEngine Off now works without FollowSymlinks; Redirect in directory context correctly appends query string; rotatelogs on Win32/OS2 no longer exits on control characters; one-byte buffer overflow in Win32 CGI interpreter fixed; mod_alias and mod_rewrite buffer overflow with more than 9 regex captures addressed |
| Breaking Changes | mod_browser (set env vars by User-Agent) removed -- replaced by mod_setenvif; mod_dld (GNU libdld start-time linking) removed -- replaced by mod_so; mod_cookies (Netscape-style cookies) removed -- replaced by mod_usertrack; FancyIndexing directive behavior changed -- use IndexOptions FancyIndexing instead; core code stricter about configurations that earlier versions and NCSA httpd silently accepted |
| Deprecations | mod_digest deprecated in favor of mod_auth_digest; old src/Configure batch system superseded by APACI; manual configuration of LoadModule/AddModule placement outside sections now enforced by apxs |
What Did Apache 1.3 Add for DSO and the Module System?
Apache 1.3 introduced full Dynamic Shared Object (DSO) support, allowing modules to be loaded into the server process at runtime rather than compiled in statically at build time. In practice this means you can add or remove capabilities -- say, enabling mod_rewrite or mod_ssl -- without rebuilding the entire httpd binary. Overall memory use decreases because only the modules actually needed are loaded into the process space.
DSO support landed on FreeBSD, OpenBSD, NetBSD, Linux, Solaris, SunOS, Digital UNIX, IRIX, HP/UX, AIX, UnixWare, and generic SVR4 platforms. The configuration directive to enable a module became the familiar pattern most Apache administrators still use today:
LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c
Alongside DSO came the apxs (APache eXtenSion) tool, which handles off-source building, installation, and activation of DSO-based modules without touching the Apache source tree. This mattered enormously for third-party modules -- vendors could now ship a compiled .so and a one-liner install command rather than asking admins to patch and recompile the server. Most teams running Apache 1.3 eventually built their PHP, mod_perl, or other language modules this way.
The APACI (Apache Autoconf-style Interface) build system also debuted in 1.3, replacing the older src/Configure batch process with a standard top-level configure script and GNU-conforming directory layout. This aligned Apache's build experience with what Unix administrators expected from most other open-source packages of the era.
How Did Apache 1.3 Improve Virtual Host Handling?
Apache 1.3 made name-based virtual hosting a first-class feature by introducing the NameVirtualHost directive and greatly improving the virtual host matching engine. This allowed multiple websites to share a single IP address, which was critical at a time when IPv4 address exhaustion was already a real concern.
A minimal name-based vhost configuration in 1.3 looks like this:
NameVirtualHost 111.22.33.44
<VirtualHost 111.22.33.44>
ServerName www.example1.com
DocumentRoot /var/www/example1
</VirtualHost>
<VirtualHost 111.22.33.44>
ServerName www.example2.com
DocumentRoot /var/www/example2
</VirtualHost>
The new mod_vhost_alias module went a step further: it enabled dynamically configured mass virtual hosting, mapping hostnames to document roots using interpolation patterns rather than an explicit VirtualHost block per site. This matters if you are hosting hundreds or thousands of domains -- managing individual blocks in httpd.conf simply does not scale. mod_vhost_alias lets a single configuration line handle the entire fleet.
The -S command-line switch was also added so administrators could dump a parsed description of the virtual host configuration to verify matching order and IP/name bindings before reloading. Watch out for Host: header validation, which was hardened across the 1.3 series (particularly around CAN-2000-1206) to prevent security issues in mass name-based hosting setups using mod_rewrite or mod_vhost_alias.
What Security and Authentication Changes Came with Apache 1.3?
Apache 1.3 introduced mod_auth_digest, providing MD5 Digest Authentication as a more secure alternative to HTTP Basic Authentication. This module superseded the older mod_digest, which remains present but deprecated throughout the 1.3 series.
suEXEC support was significantly hardened across the 1.3 lifecycle. The environment is now cleaned immediately after startup rather than at execution time, closing a window where carefully crafted environment variables could influence a setuid helper. Suexec-umask handling was also fixed to always be parsed as an octal value (by prepending "0" in configure), preventing a class of misconfiguration bugs where decimal values were silently accepted and produced wrong permissions.
Several security vulnerabilities were addressed incrementally across point releases. Key fixes include:
- A buffer overflow in mod_alias and mod_rewrite when using regular expressions with more than 9 capture groups (requires attacker-controlled .htaccess or httpd.conf)
- A cross-site scripting (XSS) vulnerability in the default error page when UseCanonicalName was set to Off and wildcard DNS was present (fixed in 1.3.27)
- A permissions flaw in the shared memory scoreboard that could allow a process running under the Apache UID to signal arbitrary processes as root
- An integer overflow in mod_proxy chunk-size handling on platforms where sizeof(int) < sizeof(long) (CVE-2010-0010, fixed in the final 1.3.42 release)
- A one-byte buffer overflow in the Win32 CGI interpreter when the #! line lacked a line-feed character in the first 1023 bytes
In practice, most of these vulnerabilities required either local access, attacker-controlled configuration files, or specific platform conditions. Nevertheless, staying current through 1.3.42 was essential for any production deployment.
How Did mod_rewrite and mod_proxy Evolve Across the 1.3 Series?
mod_rewrite received continuous attention throughout the Apache 1.3 lifecycle. The most operationally significant addition was protection against endless internal redirect loops: a backport from the 2.x series introduced a configurable limit (defaulting to 10) on internal redirects, controlled by RewriteOptions. Without this, a misconfigured RewriteRule could hang a request indefinitely.
RewriteEngine On
RewriteOptions MaxRedirects=10
# Prevent redirect loops when rewriting under a directory
RewriteRule ^/old-path/(.*)$ /new-path/$1 [R=301,L]
Several behavioral fixes accumulated across point releases: RewriteEngine Off was made to work correctly even without Options FollowSymlinks or SymlinksIfOwnerMatch set; URL path handling was corrected on non-Unix platforms; and the rnd map type behavior broken in 1.3.23 was restored in 1.3.24. The URL Rewriting Guide documentation was also added to the bundled manual during this series, which was a significant help for administrators learning the module.
mod_proxy saw the new ProxyIOBufferSize directive, decoupling the proxy read buffer from ProxyReceiveBufferSize. ProxyPassReverse was introduced to rewrite Location headers on HTTP redirect responses -- without it, a proxied backend's redirect would expose the internal server address to the client, which is almost never the intended behavior. mod_proxy caching also received fixes for incorrect Content-Length updates from 304 validation responses and for duplicate headers being added to responses.
What Platform and Portability Changes Did Apache 1.3 Deliver?
Apache 1.3 was the first release to officially support Windows NT and Windows 2000 as production platforms, marking a major expansion beyond Unix-only deployments. All Win32 releases before 1.3.15 should be considered beta quality; stability improved substantially through the later 1.3 point releases. Windows 95, 98, and ME were never recommended for production use.
NetWare 5.x and Cygwin support were also added during the 1.3 series. The NetWare port received specific operational fixes including a -e command-line flag for forcing fatal configuration errors to the logger screen rather than the Apache GUI panel, and file locking support in mod_rewrite for the CLib platform.
Most teams running Apache 1.3 on Windows encountered the AcceptMutex directive, which the Win32 port correctly ignores since Win32 uses a different concurrency model than Unix. A -F flag was added on Unix to keep the supervisor process attached to the tty -- useful for process supervisors and automated restart scripts that need to track the parent process.
Apache 1.3.42 is the final release of the 1.3 branch. The project strongly recommends migration to Apache 2.x for all deployments, as 1.3 is end-of-life with no further patches, bug fixes, or security updates. The Unix-oriented architecture of 1.3 also means that non-Unix ports (Win32, NetWare, OS/2) carry additional caveats not present in the 2.x series.
Frequently Asked Questions about Apache HTTP Server 1.3
What is the final release of Apache HTTP Server 1.3?
Apache 1.3.42 is the final stable release of the 1.3 family, and no further patches, bug fixes, or security updates will be provided for this branch.
Does Apache 1.3 support loading modules without recompiling the server?
Yes, Apache 1.3 introduced full Dynamic Shared Object (DSO) support via mod_so and the apxs tool, allowing modules to be compiled separately and loaded at runtime using the LoadModule directive in httpd.conf, so you no longer need to recompile the entire server to add or remove a module.
How do you enable name-based virtual hosting in Apache 1.3?
You use the NameVirtualHost directive to designate an IP address for name-based hosting, then define each site in a separate VirtualHost block with a matching ServerName directive; for example, NameVirtualHost 192.0.2.1 followed by VirtualHost blocks each containing a distinct ServerName and DocumentRoot.
Is mod_digest still usable in Apache 1.3?
mod_digest is present in Apache 1.3 but is deprecated; the replacement is mod_auth_digest, which became available from 1.3.8 onward and provides the same MD5 Digest Authentication functionality with a more correct and actively maintained implementation.
How does Apache 1.3 handle infinite redirect loops in mod_rewrite?
A backport from the 2.x series added a limit on internal redirects, defaulting to 10, which can be adjusted using the RewriteOptions directive with the MaxRedirects parameter; if the limit is exceeded the request is aborted rather than looping indefinitely.
Should Apache 1.3 still be used in production?
No. Apache 1.3 is end-of-life, and all users are strongly recommended to upgrade to the current 2.4.x branch, which addresses architectural limitations, security concerns, and platform portability issues that cannot be backported to 1.3.