# Server-Wide Configuration

This document explains some of the directives provided by the core server which are used to configure the basic operations of the server.

# Server Identification

ServerName
ServerAdmin
ServerSignature
ServerTokens
UseCanonicalName
UseCanonicalPhysicalPort

The ServerAdmin and ServerTokens directives control what information about the server will be presented in server-generated documents such as error messages. The ServerTokens directive sets the value of the Server HTTP response header field.

The ServerName, UseCanonicalName and UseCanonicalPhysicalPort directives are used by the server to determine how to construct self-referential URLs. For example, when a client requests a directory, but does not include the trailing slash in the directory name, httpd must redirect the client to the full name including the trailing slash so that the client will correctly resolve relative references in the document.

# File Locations

CoreDumpDirectory
DocumentRoot
ErrorLog
Mutex
PidFile
ScoreBoardFile
ServerRoot

These directives control the locations of the various files that httpd needs for proper operation. When the pathname used does not begin with a slash (/), the files are located relative to the ServerRoot. Be careful about locating files in paths which are writable by non-root users. See the security tips documentation for more details.

# Limiting Resource Usage

LimitRequestBody
LimitRequestFields
LimitRequestFieldsize
LimitRequestLine
RLimitCPU
RLimitMEM
RLimitNPROC
ThreadStackSize

The LimitRequest* directives are used to place limits on the amount of resources httpd will use in reading requests from clients. By limiting these values, some kinds of denial of service attacks can be mitigated.

The RLimit* directives are used to limit the amount of resources which can be used by processes forked off from the httpd children. In particular, this will control resources used by CGI scripts and SSI exec commands.

The ThreadStackSize directive is used with some platforms to control the stack size.

# Implementation Choices

Mutex

The Mutex directive can be used to change the underlying implementation used for mutexes, in order to relieve functional or performance problems with

APR
's default choice.