Chapter 10. Apache HTTP Server

10.1. Apache HTTP Server 2.0
10.1.1. Features of Apache HTTP Server 2.0
10.1.2. Packaging Changes in Apache HTTP Server 2.0
10.1.3. File System Changes in Apache HTTP Server 2.0
10.2. Migrating Apache HTTP Server 1.3 Configuration Files
10.2.1. Global Environment Configuration
10.2.2. Main Server Configuration
10.2.3. Virtual Host Configuration
10.2.4. Modules and Apache HTTP Server 2.0
10.3. After Installation
10.4. Starting and Stopping httpd
10.5. Configuration Directives in httpd.conf
10.5.1. General Configuration Tips
10.5.2. ServerRoot
10.5.3. PidFile
10.5.4. Timeout
10.5.5. KeepAlive
10.5.6. MaxKeepAliveRequests
10.5.7. KeepAliveTimeout
10.5.8. IfModule
10.5.9. MPM Specific Server-Pool Directives
10.5.10. Listen
10.5.11. Include
10.5.12. LoadModule
10.5.13. ExtendedStatus
10.5.14. IfDefine
10.5.15. SuexecUserGroup
10.5.16. User
10.5.17. Group
10.5.18. ServerAdmin
10.5.19. ServerName
10.5.20. UseCanonicalName
10.5.21. DocumentRoot
10.5.22. Directory
10.5.23. Options
10.5.24. AllowOverride
10.5.25. Order
10.5.26. Allow
10.5.27. Deny
10.5.28. UserDir
10.5.29. DirectoryIndex
10.5.30. AccessFileName
10.5.31. CacheNegotiatedDocs
10.5.32. TypesConfig
10.5.33. DefaultType
10.5.34. HostnameLookups
10.5.35. ErrorLog
10.5.36. LogLevel
10.5.37. LogFormat
10.5.38. CustomLog
10.5.39. ServerSignature
10.5.40. Alias
10.5.41. ScriptAlias
10.5.42. Redirect
10.5.43. IndexOptions
10.5.44. AddIconByEncoding
10.5.45. AddIconByType
10.5.46. AddIcon
10.5.47. DefaultIcon
10.5.48. AddDescription
10.5.49. ReadmeName
10.5.50. HeaderName
10.5.51. IndexIgnore
10.5.52. AddEncoding
10.5.53. AddLanguage
10.5.54. LanguagePriority
10.5.55. AddType
10.5.56. AddHandler
10.5.57. Action
10.5.58. ErrorDocument
10.5.59. BrowserMatch
10.5.60. Location
10.5.61. ProxyRequests
10.5.62. Proxy
10.5.63. Cache Directives
10.5.64. NameVirtualHost
10.5.65. VirtualHost
10.5.66. Configuration Directives for SSL
10.6. Default Modules
10.7. Adding Modules
10.8. Virtual Hosts
10.8.1. Setting Up Virtual Hosts
10.8.2. The Secure Web Server Virtual Host
10.9. Additional Resources
10.9.1. Useful Websites
10.9.2. Related Books
The Apache HTTP Server is a robust, commercial-grade open source Web server developed by the Apache Software Foundation (http://www.apache.org/). Red Hat Enterprise Linux includes the Apache HTTP Server 2.0 as well as a number of server modules designed to enhance its functionality.
The default configuration file installed with the Apache HTTP Server works without alteration for most situations. This chapter outlines many of the directives found within its configuration file (/etc/httpd/conf/httpd.conf) to aid those who require a custom configuration or need to convert a configuration file from the older Apache HTTP Server 1.3 format.

Warning

If using the graphical HTTP Configuration Tool (system-config-httpd), do not hand edit the Apache HTTP Server's configuration file as the HTTP Configuration Tool regenerates this file whenever it is used.
For more information about the HTTP Configuration Tool, please refer to the chapter titled Apache HTTP Server Configuration in the System Administrators Guide.

10.1. Apache HTTP Server 2.0

There are important differences between the Apache HTTP Server 2.0 and version 1.3 (version 1.3 shipped with Red Hat Enterprise Linux 2.1 and earlier). This section reviews some of the features of Apache HTTP Server 2.0 and outlines important changes. For instructions on migrating a version 1.3 configuration file to the 2.0 format, refer to Section 10.2, “Migrating Apache HTTP Server 1.3 Configuration Files”.

10.1.1. Features of Apache HTTP Server 2.0

Apache HTTP Server 2.0 includes the following features:
  • Apache API — Modules utilize a more powerful set of Application Programming Interfaces (APIs).

    Important

    Modules built for Apache HTTP Server 1.3 do not work without being ported to the new API. If unsure whether or not a particular module has been ported, consult the developer before upgrading.
  • Filtering — Modules can act as content filters. Refer to Section 10.2.4, “Modules and Apache HTTP Server 2.0” for more on how filtering works.
  • IPv6 Support — The next generation IP addressing format is supported.
  • Simplified Directives — A number of confusing directives have been removed while others have been simplified. Refer to Section 10.5, “Configuration Directives in httpd.conf for more information about specific directives.
  • Multilingual Error Responses — When using Server Side Include (SSI) documents, customizable error response pages can be delivered in multiple languages.
A more complete list of changes can be found online at http://httpd.apache.org/docs-2.0/.

10.1.2. Packaging Changes in Apache HTTP Server 2.0

Starting with Red Hat Enterprise Linux 3, the Apache HTTP Server packages were renamed. Also, some related packages were renamed, deprecated, or incorporated into other packages.
Below is a list of packaging changes:
  • The apache, apache-devel and apache-manual packages were renamed to httpd, httpd-devel and httpd-manual respectively.
  • The mod_dav package was incorporated into the httpd package.
  • The mod_put and mod_roaming packages were removed, since their functionality is a subset of that provided by mod_dav (which is now incorporated into the httpd package).
  • The mod_auth_any and mod_bandwidth packages were removed.
  • The version number for the mod_ssl package is now synchronized with the httpd package. This means that the mod_ssl package for Apache HTTP Server 2.0 has a lower version number than mod_ssl package for Apache HTTP Server 1.3.

10.1.3. File System Changes in Apache HTTP Server 2.0

The following changes to the file system layout occur when upgrading to Apache HTTP Server 2.0:
  • The configuration directory, /etc/httpd/conf.d/, has been added. — This directory is used to store configuration files for individually packaged modules, such as mod_ssl, mod_perl, and php. The server is instructed to load configuration files from this location by the directive Include conf.d/*.conf within the Apache HTTP Server configuration file, /etc/httpd/conf/httpd.conf.

    Important

    It is vital that the line specifying the new configuration directory be inserted when migrating an existing configuration.
  • The ab and logresolve programs have been moved. — These utility programs have been moved from the /usr/sbin/ directory and into the /usr/bin/ directory. This causes scripts with absolute paths for these binaries to fail.
  • The dbmmanage command has been replaced. — The dbmmanage command has been replaced by htdbm. Refer to Section 10.2.4.5, “The mod_auth_dbm and mod_auth_db Modules” for more information.
  • The logrotate configuration file has been renamed. — The logrotate configuration file has been renamed from /etc/logrotate.d/apache to /etc/logrotate.d/httpd.
The next section outlines how to migrate an Apache HTTP Server 1.3 configuration to the 2.0 format.