<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="server-wide.xml.meta">

  <title>Server-Wide Configuration</title>

<summary>
<p>This document explains some of the directives provided by
the <module>core</module> server which are used to configure
the basic operations of the server.</p>
</summary>

  <section id="identification">
    <title>Server Identification</title>

    <related>
      <directivelist>
        <directive module="core">ServerName</directive>
        <directive module="core">ServerAdmin</directive>
        <directive module="core">ServerSignature</directive>
        <directive module="core">ServerTokens</directive>
        <directive module="core">UseCanonicalName</directive>
        <directive module="core">UseCanonicalPhysicalPort</directive>
      </directivelist>
    </related>

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

    <p>The <directive module="core">ServerName</directive>,
    <directive module="core">UseCanonicalName</directive> and
    <directive module="core">UseCanonicalPhysicalPort</directive>
    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.</p>
  </section>

  <section id="locations">
    <title>File Locations</title>

    <related>
      <directivelist>
        <directive module="mpm_common">CoreDumpDirectory</directive>
        <directive module="core">DocumentRoot</directive>
        <directive module="core">ErrorLog</directive>
        <directive module="core">Mutex</directive>
        <directive module="mpm_common">PidFile</directive>
        <directive module="mpm_common">ScoreBoardFile</directive>
        <directive module="core">ServerRoot</directive>
      </directivelist>
    </related>

    <p>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 <directive module="core">ServerRoot</directive>. Be careful
    about locating files in paths which are writable by non-root users.
    See the <a href="misc/security_tips.html#serverroot">security tips</a>
    documentation for more details.</p>
  </section>

  <section id="resource">
    <title>Limiting Resource Usage</title>

    <related>
      <directivelist>
        <directive module="core">LimitRequestBody</directive>
        <directive module="core">LimitRequestFields</directive>
        <directive module="core">LimitRequestFieldsize</directive>
        <directive module="core">LimitRequestLine</directive>
        <directive module="core">RLimitCPU</directive>
        <directive module="core">RLimitMEM</directive>
        <directive module="core">RLimitNPROC</directive>
        <directive module="mpm_common">ThreadStackSize</directive>
      </directivelist>
    </related>

    <p>The <directive>LimitRequest</directive>*
    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.</p>

    <p>The <directive>RLimit</directive>* 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.</p>

    <p>The <directive module="mpm_common">ThreadStackSize</directive>
    directive is used with some platforms to control the stack size.</p>
  </section>

  <section id="implementation">
    <title>Implementation Choices</title>

    <related>
      <directivelist>
        <directive module="core">Mutex</directive>
      </directivelist>
    </related>

    <p>The <directive>Mutex</directive> directive can be used to change
    the underlying implementation used for mutexes, in order to relieve
    functional or performance problems with <glossary>APR</glossary>'s
    default choice.</p>
  </section>

</manualpage>
