3.4. Other Directives
Other
housekeeping directives are listed here.
3.4.1. ServerName
ServerName hostname
Server config, virtual host
ServerName
gives the hostname of the server to use
when creating redirection URLs, that is, if you use a
<Location> directive or access a directory
without a trailing "/".
3.4.2. UseCanonicalName
UseCanonicalName on|off
Default: on
Server config, virtual host, directory, .htaccess
This directive controls how Apache forms URLs that refer to itself,
for example, when redirecting a request for http://www.domain.com/some/directory to the correct http://www.domain.com/some/directory/ (note the trailing "/" ). If
UseCanonical-Name is on (the
default), then the hostname and port used in the redirect will be
those set by ServerName and
Port. If it is off, then the
name and port used will be the ones in the original request.
One instance where this directive may be useful is when users are in
the same domain as the web server (for example, on an intranet). In
this case, they may use the "short" name for the server
(www, for example), instead
of the fully qualified domain name (www.domain.com, say). If a user types a
URL such as http://www/somedir
(without the trailing slash), then, with
UseCanonicalName switched
on, the user will be directed
to http://www.domain.com/somedir/, whereas with
UseCanonicalName switched off,
he or she will be redirected to http://www/somedir/. An obvious case in which
this is useful is when user authentication is switched on: reusing
the server name that the user typed means they won't be asked
to reauthenticate when the server name appears to the browser to have
changed. More obscure cases relate to name/address translation caused
by some firewalling techniques.
3.4.3. ServerAdmin
ServerAdmin email_address
Server config, virtual host
ServerAdmin
gives Apache an
email_address for automatic pages
generated when some errors occur. It might be sensible to make this a
special address such as server_probs@butterthlies.com.
3.4.4. ServerSignature
ServerSignature [off|on|email]
Default: off
Directory, .htaccess
This directive allows you to let the client know which server in a
chain of proxies actually did the business.
ServerSignature on generates a
footer to server-generated documents that includes the server
version number and the ServerName of the virtual
host. ServerSignature email
additionally creates a mailto: reference to the
relevant ServerAdmin address.
3.4.5. ServerTokens
ServerTokens [min(imal)|OS|full]
Default: full
Server config
This directive controls the information about itself that the server
returns:
- min(imal)
Server returns name and version number, for example, Apache
v1.3
- OS
Server sends operating system as well, for example, Apache
v1.3 (Unix)
- full
Server sends the previously listed information plus information about
compiled modules, for example, Apache
v1.3 (Unix)
PHP/3.0 MyMod/1.2
3.4.6. ServerAlias
ServerAlias name1 name2 name3 ...
Virtual host
ServerAlias gives a list of alternate names
matching the current virtual host. If a request uses HTTP 1.1, it
arrives with Host: server in
the header and can match ServerName,
ServerAlias, or the VirtualHost
name.
3.4.7. ServerPath
ServerPath path
Virtual host
In HTTP/1.1 you can map several hostnames to the same IP address, and
the browser distinguishes between them by sending the
Host header. But it was thought there would be a
transition period during which some browsers still used HTTP/1.0 and
didn't send the Host header.[28] So ServerPath lets the same site be accessed through
a path instead.
[28]Note that this transition period was almost over before it
started because many browsers sent the Host header
even in HTTP/1.0 requests. However, in some rare cases, this
directive may be useful.
It has to be said that this directive often doesn't work very
well because it requires a great deal of discipline in writing
consistent internal HTML links, which must all be written as relative
links to make them work with two different URLs. However, if you have
to cope with HTTP/1.0 browsers that don't send
Host headers accessing virtual sites, you
don't have much choice.
For instance, suppose you have
site1.somewhere.com and
site2.somewhere.com mapped to the same IP
address (let's say 192.168.123.2), and you set up the
httpd.conf file like this:
<VirtualHost 192.168.123.2>
ServerName site1.somewhere.com
DocumentRoot /usr/www/site1
ServerPath /site1
</VirtualHost>
<VirtualHost 192.168.123.2>
ServerName site2.somewhere.com
DocumentRoot /usr/www/site2
ServerPath /site2
</VirtualHost>
Then an HTTP/1.1 browser can access the two sites with URLs
http://site1. somewhere.com / and
http://site2.somewhere.com /. Recall that
HTTP/1.0 can only distinguish between sites with different IP
addresses, so both of those URLs look the same to an HTTP/1.0
browser. However, with the above setup, such browsers can access
http://site1.somewhere.com/site1 and
http://site1.somewhere.com/site2 to see the
two different sites (yes, we did mean
site1.somewhere.com in the latter; it could have
been site2.somewhere.com in either, because they
are the same as far as an HTTP/1.0 browser is concerned).
3.4.8. ServerRoot
ServerRoot directory
Default directory: /usr/local/etc/httpd
Server config
ServerRoot specifies where the subdirectories
conf and logs can be found.
If you start Apache with the -f (file) option, you
need to include the ServerRoot directive. On the
other hand, if you use the -d (directory) option,
as we do, this directive is not needed.
3.4.9. PidFile
PidFile file
Default file: logs/httpd.pid
Server config
A useful piece of information about an executing process is its PID
number. This is available under both Unix and Win32 in the
PidFile, and this directive allows you to change
its location. By default, it is in ...
/logs/httpd.pid. However, only Unix allows you to do
anything easily with it; namely, to kill the process.
3.4.10. ScoreBoardFile
ScoreBoardFile filename
Default: ScoreBoardFile logs/apache_status
Server config
The ScoreBoardFile directive is required on some
architectures in order to place a file that the server will use to
communicate between its children and the parent. The easiest way to
find out if your architecture requires a scoreboard file is to run
Apache and see if it creates the file named by the directive. If your
architecture requires it, then you must ensure that this file is not
used at the same time by more than one invocation of Apache.
If you have to use a ScoreBoardFile, then you may
see improved speed by placing it on a RAM disk. But be aware that
placing important files on a RAM disk involves a certain amount of
risk.
Apache 1.2 and above: Linux 1.x and SVR4 users might be able to add
-DHAVE_SHMGET
-DUSE_SHMGET_SCOREBOARD to the
EXTRA_CFLAGS in your Config file. This might work
with some 1.x installations, but not with all of them. (Prior to
1.3b4, HAVE_SHMGET would have sufficed.)
3.4.11. CoreDumpDirectory
CoreDumpDirectory directory
Default: <serverroot>
Server config
Specifies a directory where Apache tries to dump core. The default is
the ServerRoot directory, but this is normally
not writable by Apache's user. This directive is useful only in
Unix, since Win32 does not dump a core after a crash.
3.4.12. SendBufferSize
SendBufferSize <number>
Default: set by OS
Server config
Increases the send buffer in TCP beyond the default set by the
operating system. This directive improves performance under certain
circumstances, but we suggest you don't use it unless you
thoroughly understand network technicalities.
3.4.13. LockFile
LockFile <path>directory
Default: logs/accept.lock
Server config
When Apache is compiled with
USE_FCNTL_SERIALIZED_ACCEPT or
USE_FLOCK_SERIALIZED_ACCEPT, it will not start
until it writes a lock file to the local disk. If the
logs directory is NFS mounted, this will not be
possible. It is not a good idea to put this file in a directory that
is writable by everyone, since a false file will prevent Apache from
starting. This mechanism is necessary because some operating systems
don't like multiple processes sitting in
accept() on a single socket (which is where Apache
sits while waiting). Therefore, these calls need to be serialized.
One way is to use a lock file, but you can't use one on an
NFS-mounted directory.
3.4.14. KeepAlive
KeepAlive number
Default number: 5
Server config
The chances are that if a user logs on to your site, he or she will
reaccess it fairly soon. To avoid unnecessary delay, this command
keeps the connection open, but only for
number requests, so that one user does not
hog the server. You might want to increase this from 5 if you have a
deep directory structure. Netscape Navigator 2 has a bug that fouls
up keepalives. Apache from v1.2 on can detect the use of this browser
by looking for Mozilla/2 in the headers returned
by Netscape. If the BrowserMatch directive is set
(see Chapter 4, "Common Gateway Interface (CGI) "), the problem disappears.
3.4.15. KeepAliveTimeout
KeepAliveTimeout seconds
Default seconds: 15
Server config
Similarly, to avoid waiting too long
for the next request, this directive sets the number of seconds to
wait for the next request. Once the request has been received, the
TimeOut directive applies.
3.4.16. TimeOut
TimeOut seconds
Default seconds: 1200
Server config
Sets the maximum time that the server
will wait for the receipt of a request and then its completion block
by block. This directive used to have an unfortunate effect:
downloads of large files over slow connections used to time out. The
directive has, therefore, been modified to apply to blocks of data
sent rather than to the whole transfer.
3.4.17. HostNameLookups
HostNameLookups [on|off|double]
Default: off[29]
Server config, virtual host
If this directive is
on, then every
incoming connection is reverse DNS resolved,
which means that, starting with the IP number, Apache finds the
hostname of the client by consulting the DNS system on the Internet.
The hostname is then used in the logs. If switched
off, the IP address is used instead. It can take a
significant amount of time to reverse resolve an IP address, so for
performance reasons it is often best to leave this
off, particularly on busy servers. Note that the
support program logresolve is supplied with
Apache to reverse resolve the logs at a later date.[30]
[30]Dynamically allocated IP addresses may not resolve correctly at
any time other than when they are in use. If it is really important
to know the exact name of the client,
HostNameLookups will have to be set to
on.
The new double keyword supports the double-reverse
DNS test. An IP address passes this test if the forward map of the
reverse map includes the original IP. Regardless of the setting here,
mod_access access lists using DNS names require
all the names to pass the double-reverse test.
3.4.18. Include
Include filename
Server config
filename
points to a file
that will be included in the Config file in place of this
directive.
 |  |  | | 3.3. Block Directives |  | 3.5. Two Sites and Apache |
Copyright © 2001 O'Reilly & Associates. All rights reserved.
|