Configuring Apache By default, Apache reads a single configuration file called httpd.conf. Every Apache source distribution comes with a set of sample configuration files. In the standard Apache source distribution, you will find a directory called conf, which contains sample configuration files with the -dist extension. The first step you need to take before you modify this file is to create a backup copy of the original. The httpd.conf file contains two types of information: com- ments and server directives. Lines starting with a leading # character are treated as comment lines; these comments have no purpose for the server software, but they serve as a form of documentation for the server administrator. You can add as many comments as you want; the server simply ignores all comments when it parses the file. Except for the comments and blank lines, the server treats all other lines as either complete or partial directives. A directive is like a command for the server. It tells the server to perform a certain task in a particular fashion. While editing the httpd.conf file, you need to make certain decisions regarding how you want the server to behave. The following sections describe what these directives mean and how you can use them to customize your server. Listing D-1 shows the default httpd.conf file created in the conf directory of your Apache installation. Most of the comments have been removed, and the code has been edited slightly for brevity. Listing D-1: Default httpd.conf Created from httpd.conf-dist ServerRoot “/usr/local/apache” <IfModule !mpm_netware.c> PidFile logs/httpd.pid </IfModule> Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 ServerLimit 16 </IfModule> <IfModule worker.c> StartServers 2 786 Part VII: Appendixes 34 549669 AppD.qxd 4/4/03 9:28 AM Page 786 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 ServerLimit 16 </IfModule> <IfModule perchild.c> NumServers 5 StartThreads 5 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 20 MaxRequestsPerChild 0 ServerLimit 16 </IfModule> Listen 80 <IfModule !mpm_winnt.c> <IfModule !mpm_netware.c> User nobody Group #-1 </IfModule> </IfModule> ServerAdmin you@your.address UseCanonicalName Off DocumentRoot “/usr/local/apache/htdocs” <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory “/usr/local/apache/htdocs”> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all Continued Appendix D: Linux Primer 787 34 549669 AppD.qxd 4/4/03 9:28 AM Page 787 Listing D-1 (Continued) </Directory> UserDir public_html DirectoryIndex index.html index.html.var AccessFileName .htaccess <Files ~ “^\.ht”> Order allow,deny Deny from all </Files> TypesConfig conf/mime.types DefaultType text/plain <IfModule mod_mime_magic.c> MIMEMagicFile conf/magic </IfModule> HostnameLookups Off ErrorLog logs/error_log LogLevel warn LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined LogFormat “%h %l %u %t \”%r\” %>s %b” common LogFormat “%{Referer}i -> %U” referer LogFormat “%{User-agent}i” agent CustomLog logs/access_log combined ServerSignature On Alias /icons/ “/usr/local/apache/icons/” <Directory “/usr/local/apache/icons”> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> Alias /manual “/usr/local/apache/manual” <Directory “/usr/local/apache/manual”> Options Indexes FollowSymLinks MultiViews IncludesNoExec AddOutputFilter Includes html AllowOverride None 788 Part VII: Appendixes 34 549669 AppD.qxd 4/4/03 9:28 AM Page 788 Order allow,deny Allow from all </Directory> ScriptAlias /cgi-bin/ “/usr/local/apache/cgi-bin/” <IfModule mod_cgid.c> </IfModule> <Directory “/usr/local/apache/cgi-bin”> AllowOverride None Options None Order allow,deny Allow from all </Directory> IndexOptions FancyIndexing VersionSort AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx # Many AddIcon directives are removed # to keep the listing short DefaultIcon /icons/unknown.gif ReadmeName README.html HeaderName HEADER.html IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t AddEncoding x-compress Z AddEncoding x-gzip gz tgz AddLanguage en .en AddLanguage fr .fr AddLanguage de .de # Other AddLanguage directives are removed # to keep the listing short LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw ForceLanguagePriority Prefer Fallback Continued Appendix D: Linux Primer 789 34 549669 AppD.qxd 4/4/03 9:28 AM Page 789 Listing D-1 (Continued) AddDefaultCharset ISO-8859-1 AddCharset ISO-8859-1 .iso8859-1 .latin1 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen # Other AddCharset removed to reduce the size # of this listing AddType application/x-tar .tgz AddHandler type-map var <IfModule mod_negotiation.c> <IfModule mod_include.c> Alias /error/ “/usr/local/apache/error/” <Directory “/usr/local/apache/error”> AllowOverride None Options IncludesNoExec AddOutputFilter Includes html AddHandler type-map var Order allow,deny Allow from all LanguagePriority en es de fr ForceLanguagePriority Prefer Fallback </Directory> ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var # Other ErrorDocument directives have been removed # to keep the listing short. </IfModule> </IfModule> BrowserMatch “Mozilla/2” nokeepalive BrowserMatch “MSIE 4\.0b2;” nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch “RealPlayer 4\.0” force-response-1.0 # Other BrowserMatch directives have been removed # to keep the listing short. <IfModule mod_ssl.c> Include conf/ssl.conf </IfModule> 790 Part VII: Appendixes 34 549669 AppD.qxd 4/4/03 9:28 AM Page 790