mirror of
https://github.com/apache/httpd.git
synced 2025-06-03 10:42:03 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@102617 13f79535-47bb-0310-9956-ffa450edef68
3074 lines
118 KiB
XML
3074 lines
118 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
|
|
|
|
<!--
|
|
Copyright 2002-2004 The Apache Software Foundation
|
|
|
|
Licensed 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.
|
|
-->
|
|
|
|
<modulesynopsis metafile="core.xml.meta">
|
|
|
|
<name>core</name>
|
|
<description>Core Apache HTTP Server features that are always
|
|
available</description>
|
|
<status>Core</status>
|
|
|
|
<directivesynopsis>
|
|
<name>AcceptPathInfo</name>
|
|
<description>Resources accept trailing pathname information</description>
|
|
<syntax>AcceptPathInfo On|Off|Default</syntax>
|
|
<default>AcceptPathInfo Default</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context><context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>FileInfo</override>
|
|
<compatibility>Available in Apache 2.0.30 and later</compatibility>
|
|
|
|
<usage>
|
|
|
|
<p>This directive controls whether requests that contain trailing
|
|
pathname information that follows an actual filename (or
|
|
non-existent file in an existing directory) will be accepted or
|
|
rejected. The trailing pathname information can be made
|
|
available to scripts in the <code>PATH_INFO</code> environment
|
|
variable.</p>
|
|
|
|
<p>For example, assume the location <code>/test/</code> points to
|
|
a directory that contains only the single file
|
|
<code>here.html</code>. Then requests for
|
|
<code>/test/here.html/more</code> and
|
|
<code>/test/nothere.html/more</code> both collect
|
|
<code>/more</code> as <code>PATH_INFO</code>.</p>
|
|
|
|
<p>The three possible arguments for the
|
|
<directive>AcceptPathInfo</directive> directive are:</p>
|
|
<dl>
|
|
<dt><code>Off</code></dt><dd>A request will only be accepted if it
|
|
maps to a literal path that exists. Therefore a request with
|
|
trailing pathname information after the true filename such as
|
|
<code>/test/here.html/more</code> in the above example will return
|
|
a 404 NOT FOUND error.</dd>
|
|
|
|
<dt><code>On</code></dt><dd>A request will be accepted if a
|
|
leading path component maps to a file that exists. The above
|
|
example <code>/test/here.html/more</code> will be accepted if
|
|
<code>/test/here.html</code> maps to a valid file.</dd>
|
|
|
|
<dt><code>Default</code></dt><dd>The treatment of requests with
|
|
trailing pathname information is determined by the <a
|
|
href="../handler.html">handler</a> responsible for the request.
|
|
The core handler for normal files defaults to rejecting
|
|
<code>PATH_INFO</code> requests. Handlers that serve scripts, such as <a
|
|
href="mod_cgi.html">cgi-script</a> and <a
|
|
href="mod_isapi.html">isapi-isa</a>, generally accept
|
|
<code>PATH_INFO</code> by default.</dd>
|
|
</dl>
|
|
|
|
<p>The primary purpose of the <code>AcceptPathInfo</code>
|
|
directive is to allow you to override the handler's choice of
|
|
accepting or rejecting <code>PATH_INFO</code>. This override is required,
|
|
for example, when you use a <a href="../filter.html">filter</a>, such
|
|
as <a href="mod_include.html">INCLUDES</a>, to generate content
|
|
based on <code>PATH_INFO</code>. The core handler would usually reject
|
|
the request, so you can use the following configuration to enable
|
|
such a script:</p>
|
|
|
|
<example>
|
|
<Files "mypaths.shtml"><br />
|
|
<indent>
|
|
Options +Includes<br />
|
|
SetOutputFilter INCLUDES<br />
|
|
AcceptPathInfo On<br />
|
|
</indent>
|
|
</Files>
|
|
</example>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AccessFileName</name>
|
|
<description>Name of the distributed configuration file</description>
|
|
<syntax>AccessFileName <var>filename</var> [<var>filename</var>] ...</syntax>
|
|
<default>AccessFileName .htaccess</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>While processing a request the server looks for
|
|
the first existing configuration file from this list of names in
|
|
every directory of the path to the document, if distributed
|
|
configuration files are <a href="#allowoverride">enabled for that
|
|
directory</a>. For example:</p>
|
|
|
|
<example>
|
|
AccessFileName .acl
|
|
</example>
|
|
|
|
<p>before returning the document
|
|
<code>/usr/local/web/index.html</code>, the server will read
|
|
<code>/.acl</code>, <code>/usr/.acl</code>,
|
|
<code>/usr/local/.acl</code> and <code>/usr/local/web/.acl</code>
|
|
for directives, unless they have been disabled with</p>
|
|
|
|
<example>
|
|
<Directory /><br />
|
|
<indent>
|
|
AllowOverride None<br />
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
</usage>
|
|
<seealso><directive module="core">AllowOverride</directive></seealso>
|
|
<seealso><a href="../configuring.html">Configuration Files</a></seealso>
|
|
<seealso><a href="../howto/htaccess.html">.htaccess Files</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AddDefaultCharset</name>
|
|
<description>Default character set to be added for a
|
|
response without an explicit character set</description>
|
|
<syntax>AddDefaultCharset On|Off|<var>charset</var></syntax>
|
|
<default>AddDefaultCharset Off</default>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context><context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>FileInfo</override>
|
|
|
|
<usage>
|
|
<p>This directive specifies the name of the character set that
|
|
will be added to any response that does not have any parameter on
|
|
the content type in the HTTP headers. This will override any
|
|
character set specified in the body of the document via a
|
|
<code>META</code> tag. A setting of <code>AddDefaultCharset
|
|
Off</code> disables this
|
|
functionality. <code>AddDefaultCharset On</code> enables
|
|
Apache's internal default charset of <code>iso-8859-1</code> as
|
|
required by the directive. You can also specify an alternate
|
|
<var>charset</var> to be used. For example:</p>
|
|
|
|
<example>
|
|
AddDefaultCharset utf-8
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AddOutputFilterByType</name>
|
|
<description>assigns an output filter to a particular MIME-type</description>
|
|
<syntax>AddOutputFilterByType <var>filter</var>[;<var>filter</var>...]
|
|
<var>MIME-type</var> [<var>MIME-type</var>] ...</syntax>
|
|
<contextlist><context>server config</context>
|
|
<context>virtual host</context><context>directory</context>
|
|
<context>.htaccess</context></contextlist>
|
|
<override>FileInfo</override>
|
|
<compatibility>Available in Apache 2.0.33 and later</compatibility>
|
|
|
|
<usage>
|
|
<p>This directive activates a particular output <a
|
|
href="../filter.html">filter</a> for a request depending on the
|
|
response MIME-type.</p>
|
|
|
|
<p>The following example uses the <code>DEFLATE</code> filter, which
|
|
is provided by <module>mod_deflate</module>. It will compress all
|
|
output (either static or dynamic) which is labeled as
|
|
<code>text/html</code> or <code>text/plain</code> before it is sent
|
|
to the client.</p>
|
|
|
|
<example>
|
|
AddOutputFilterByType DEFLATE text/html text/plain
|
|
</example>
|
|
|
|
<p>If you want the content to be processed by more than one filter, their
|
|
names have to be separated by semicolons. It's also possible to use one
|
|
<directive>AddOutputFilterByType</directive> directive for each of
|
|
these filters.</p>
|
|
|
|
<p>The configuration below causes all script output labeled as
|
|
<code>text/html</code> to be processed at first by the
|
|
<code>INCLUDES</code> filter and then by the <code>DEFLATE</code>
|
|
filter.</p>
|
|
|
|
<example>
|
|
<Location /cgi-bin/><br />
|
|
<indent>
|
|
Options Includes<br />
|
|
AddOutputFilterByType INCLUDES;DEFLATE text/html<br />
|
|
</indent>
|
|
</Location>
|
|
</example>
|
|
|
|
<note type="warning"><title>Note</title>
|
|
<p>Enabling filters with <directive>AddOutputFilterByType</directive>
|
|
may fail partially or completely in some cases. For expample, no
|
|
filters are applied if the MIME-type could not be determined and falls
|
|
back to the <directive module="core">DefaultType</directive> setting,
|
|
even if the <directive module="core">DefaultType</directive> is the
|
|
same.</p>
|
|
|
|
<p>However, if you want to make sure, that the filters will be
|
|
applied, assign the content type to a resource explicitely, for
|
|
example with <directive module="mod_mime">AddType</directive> or
|
|
<directive module="core">ForceType</directive>. Setting the
|
|
content type within a (non-nph) CGI script is also safe.</p>
|
|
|
|
<p>The by-type output filters are never applied on proxy requests.</p>
|
|
</note>
|
|
</usage>
|
|
|
|
<seealso><directive module="mod_mime">AddOutputFilter</directive></seealso>
|
|
<seealso><directive module="core">SetOutputFilter</directive></seealso>
|
|
<seealso><a href="../filter.html">filters</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AllowEncodedSlashes</name>
|
|
<description>Determines whether encoded path separators in URLs are allowed to
|
|
be passed through</description>
|
|
<syntax>AllowEncodedSlashes On|Off</syntax>
|
|
<default>AllowEncodedSlashes Off</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
<compatibility>Available in Apache 2.0.46 and later</compatibility>
|
|
|
|
<usage>
|
|
<p>The <directive>AllowEncodedSlashes</directive> directive allows URLs
|
|
which contain encoded path separators (<code>%2F</code> for <code>/</code>
|
|
and additionally <code>%5C</code> for <code>\</code> on according systems)
|
|
to be used. Normally such URLs are refused with a 404 (Not found) error.</p>
|
|
|
|
<p>Turning <directive>AllowEncodedSlashes</directive> <code>On</code> is
|
|
mostly useful when used in conjunction with <code>PATH_INFO</code>.</p>
|
|
|
|
<note><title>Note</title>
|
|
<p>Allowing encoded slashes does <em>not</em> imply <em>decoding</em>.
|
|
Occurences of <code>%2F</code> or <code>%5C</code> (<em>only</em> on
|
|
according systems) will be left as such in the otherwise decoded URL
|
|
string.</p>
|
|
</note>
|
|
</usage>
|
|
<seealso><directive module="core">AcceptPathInfo</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
|
|
<directivesynopsis>
|
|
<name>AllowOverride</name>
|
|
<description>Types of directives that are allowed in
|
|
<code>.htaccess</code> files</description>
|
|
<syntax>AllowOverride All|None|<var>directive-type</var>
|
|
[<var>directive-type</var>] ...</syntax>
|
|
<default>AllowOverride All</default>
|
|
<contextlist><context>directory</context></contextlist>
|
|
|
|
<usage>
|
|
<p>When the server finds an <code>.htaccess</code> file (as
|
|
specified by <directive module="core">AccessFileName</directive>)
|
|
it needs to know which directives declared in that file can override
|
|
earlier configuration directives.</p>
|
|
|
|
<note><title>Only available in <Directory> sections</title>
|
|
<directive>AllowOverride</directive> is valid only in
|
|
<directive type="section" module="core">Directory</directive>
|
|
sections, not in <directive type="section"
|
|
module="core">Location</directive> or <directive type="section"
|
|
module="core">Files</directive> sections.
|
|
</note>
|
|
|
|
<p>When this directive is set to <code>None</code>, then
|
|
<a href="#accessfilename">.htaccess</a> files are completely ignored.
|
|
In this case, the server will not even attempt to read
|
|
<code>.htaccess</code> files in the filesystem.</p>
|
|
|
|
<p>When this directive is set to <code>All</code>, then any
|
|
directive which has the .htaccess <a
|
|
href="directive-dict.html#Context">Context</a> is allowed in
|
|
<code>.htaccess</code> files.</p>
|
|
|
|
<p>The <var>directive-type</var> can be one of the following
|
|
groupings of directives.</p>
|
|
|
|
<dl>
|
|
<dt>AuthConfig</dt>
|
|
|
|
<dd>
|
|
|
|
Allow use of the authorization directives (<directive
|
|
module="mod_authn_dbm">AuthDBMGroupFile</directive>,
|
|
<directive module="mod_authn_dbm">AuthDBMUserFile</directive>,
|
|
<directive module="mod_authz_groupfile">AuthGroupFile</directive>,
|
|
<directive module="core">AuthName</directive>,
|
|
<directive module="core">AuthType</directive>, <directive
|
|
module="mod_authn_file">AuthUserFile</directive>, <directive
|
|
module="core">Require</directive>, <em>etc.</em>).</dd>
|
|
|
|
<dt>FileInfo</dt>
|
|
|
|
<dd>
|
|
Allow use of the directives controlling document types (<directive
|
|
module="core">DefaultType</directive>, <directive
|
|
module="core">ErrorDocument</directive>, <directive
|
|
module="core">ForceType</directive>, <directive
|
|
module="mod_negotiation">LanguagePriority</directive>,
|
|
<directive module="core">SetHandler</directive>, <directive
|
|
module="core">SetInputFilter</directive>, <directive
|
|
module="core">SetOutputFilter</directive>, and
|
|
<module>mod_mime</module> Add* and Remove*
|
|
directives, <em>etc.</em>).</dd>
|
|
|
|
<dt>Indexes</dt>
|
|
|
|
<dd>
|
|
Allow use of the directives controlling directory indexing
|
|
(<directive
|
|
module="mod_autoindex">AddDescription</directive>,
|
|
<directive module="mod_autoindex">AddIcon</directive>, <directive
|
|
module="mod_autoindex">AddIconByEncoding</directive>,
|
|
<directive module="mod_autoindex">AddIconByType</directive>,
|
|
<directive module="mod_autoindex">DefaultIcon</directive>, <directive
|
|
module="mod_dir">DirectoryIndex</directive>, <directive
|
|
module="mod_autoindex">FancyIndexing</directive>, <directive
|
|
module="mod_autoindex">HeaderName</directive>, <directive
|
|
module="mod_autoindex">IndexIgnore</directive>, <directive
|
|
module="mod_autoindex">IndexOptions</directive>, <directive
|
|
module="mod_autoindex">ReadmeName</directive>,
|
|
<em>etc.</em>).</dd>
|
|
|
|
<dt>Limit</dt>
|
|
|
|
<dd>
|
|
Allow use of the directives controlling host access (<directive
|
|
module="mod_authz_host">Allow</directive>, <directive
|
|
module="mod_authz_host">Deny</directive> and <directive
|
|
module="mod_authz_host">Order</directive>).</dd>
|
|
|
|
<dt>Options</dt>
|
|
|
|
<dd>
|
|
Allow use of the directives controlling specific directory
|
|
features (<directive module="core">Options</directive> and
|
|
<directive module="mod_include">XBitHack</directive>).</dd>
|
|
</dl>
|
|
|
|
<p>Example:</p>
|
|
|
|
<example>
|
|
AllowOverride AuthConfig Indexes
|
|
</example>
|
|
</usage>
|
|
|
|
<seealso><directive module="core">AccessFileName</directive></seealso>
|
|
<seealso><a href="../configuring.html">Configuration Files</a></seealso>
|
|
<seealso><a href="../howto/htaccess.html">.htaccess Files</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthName</name>
|
|
<description>Authorization realm for use in HTTP
|
|
authentication</description>
|
|
<syntax>AuthName <var>auth-domain</var></syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>This directive sets the name of the authorization realm for a
|
|
directory. This realm is given to the client so that the user
|
|
knows which username and password to send.
|
|
<directive>AuthName</directive> takes a single argument; if the
|
|
realm name contains spaces, it must be enclosed in quotation
|
|
marks. It must be accompanied by <directive
|
|
module="core">AuthType</directive> and <directive
|
|
module="core">Require</directive> directives, and directives such
|
|
as <directive module="mod_authn_file">AuthUserFile</directive> and
|
|
<directive module="mod_authz_groupfile">AuthGroupFile</directive> to
|
|
work.</p>
|
|
|
|
<p>For example:</p>
|
|
|
|
<example>
|
|
AuthName "Top Secret"
|
|
</example>
|
|
|
|
<p>The string provided for the <code>AuthName</code> is what will
|
|
appear in the password dialog provided by most browsers.</p>
|
|
</usage>
|
|
<seealso><a
|
|
href="../howto/auth.html">Authentication, Authorization, and
|
|
Access Control</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthType</name>
|
|
<description>Type of user authentication</description>
|
|
<syntax>AuthType Basic|Digest</syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>This directive selects the type of user authentication for a
|
|
directory. Only <code>Basic</code> and <code>Digest</code> are
|
|
currently implemented.
|
|
|
|
It must be accompanied by <directive
|
|
module="core">AuthName</directive> and <directive
|
|
module="core">Require</directive> directives, and directives such
|
|
as <directive module="mod_authn_file">AuthUserFile</directive> and
|
|
<directive module="mod_authz_groupfile">AuthGroupFile</directive> to
|
|
work.</p>
|
|
</usage>
|
|
<seealso><a href="../howto/auth.html">Authentication, Authorization,
|
|
and Access Control</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>CGIMapExtension</name>
|
|
<description>Technique for locating the interpreter for CGI
|
|
scripts</description>
|
|
<syntax>CGIMapExtension <var>cgi-path</var> <var>.extension</var></syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
<compatibility>NetWare only</compatibility>
|
|
|
|
<usage>
|
|
<p>This directive is used to control how Apache finds the
|
|
interpreter used to run CGI scripts. For example, setting
|
|
<code>CGIMapExtension sys:\foo.nlm .foo</code> will
|
|
cause all CGI script files with a <code>.foo</code> extension to
|
|
be passed to the FOO interpreter.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ContentDigest</name>
|
|
<description>Enables the generation of <code>Content-MD5</code> HTTP Response
|
|
headers</description>
|
|
<syntax>ContentDigest On|Off</syntax>
|
|
<default>ContentDigest Off</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>Options</override>
|
|
<status>Experimental</status>
|
|
|
|
<usage>
|
|
<p>This directive enables the generation of
|
|
<code>Content-MD5</code> headers as defined in RFC1864
|
|
respectively RFC2068.</p>
|
|
|
|
<p>MD5 is an algorithm for computing a "message digest"
|
|
(sometimes called "fingerprint") of arbitrary-length data, with
|
|
a high degree of confidence that any alterations in the data
|
|
will be reflected in alterations in the message digest.</p>
|
|
|
|
<p>The <code>Content-MD5</code> header provides an end-to-end
|
|
message integrity check (MIC) of the entity-body. A proxy or
|
|
client may check this header for detecting accidental
|
|
modification of the entity-body in transit. Example header:</p>
|
|
|
|
<example>
|
|
Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
|
|
</example>
|
|
|
|
<p>Note that this can cause performance problems on your server
|
|
since the message digest is computed on every request (the
|
|
values are not cached).</p>
|
|
|
|
<p><code>Content-MD5</code> is only sent for documents served
|
|
by the <module>core</module>, and not by any module. For example,
|
|
SSI documents, output from CGI scripts, and byte range responses
|
|
do not have this header.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DefaultType</name>
|
|
<description>MIME content-type that will be sent if the
|
|
server cannot determine a type in any other way</description>
|
|
<syntax>DefaultType <var>MIME-type</var></syntax>
|
|
<default>DefaultType text/plain</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
|
|
<usage>
|
|
<p>There will be times when the server is asked to provide a
|
|
document whose type cannot be determined by its MIME types
|
|
mappings.</p>
|
|
|
|
<p>The server must inform the client of the content-type of the
|
|
document, so in the event of an unknown type it uses the
|
|
<code>DefaultType</code>. For example:</p>
|
|
|
|
<example>
|
|
DefaultType image/gif
|
|
</example>
|
|
|
|
<p>would be appropriate for a directory which contained many GIF
|
|
images with filenames missing the <code>.gif</code> extension.</p>
|
|
|
|
<p>Note that unlike <directive
|
|
module="core">ForceType</directive>, this directive only
|
|
provides the default mime-type. All other mime-type definitions,
|
|
including filename extensions, that might identify the media type
|
|
will override this default.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>Directory</name>
|
|
<description>Enclose a group of directives that apply only to the
|
|
named file-system directory and sub-directories</description>
|
|
<syntax><Directory <var>directory-path</var>>
|
|
... </Directory></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p><directive type="section">Directory</directive> and
|
|
<code></Directory></code> are used to enclose a group of
|
|
directives that will apply only to the named directory and
|
|
sub-directories of that directory. Any directive that is allowed
|
|
in a directory context may be used. <var>Directory-path</var> is
|
|
either the full path to a directory, or a wild-card string using
|
|
Unix shell-style matching. In a wild-card string, <code>?</code> matches
|
|
any single character, and <code>*</code> matches any sequences of
|
|
characters. You may also use <code>[]</code> character ranges. None
|
|
of the wildcards match a `/' character, so <code><Directory
|
|
/*/public_html></code> will not match
|
|
<code>/home/user/public_html</code>, but <code><Directory
|
|
/home/*/public_html></code> will match. Example:</p>
|
|
|
|
<example>
|
|
<Directory /usr/local/httpd/htdocs><br />
|
|
<indent>
|
|
Options Indexes FollowSymLinks<br />
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
|
|
<note>
|
|
<p>Be careful with the <var>directory-path</var> arguments:
|
|
They have to literally match the filesystem path which Apache uses
|
|
to access the files. Directives applied to a particular
|
|
<code><Directory></code> will not apply to files accessed from
|
|
that same directory via a different path, such as via different symbolic
|
|
links.</p>
|
|
</note>
|
|
|
|
<p>Extended regular
|
|
expressions can also be used, with the addition of the
|
|
<code>~</code> character. For example:</p>
|
|
|
|
<example>
|
|
<Directory ~ "^/www/.*/[0-9]{3}">
|
|
</example>
|
|
|
|
<p>would match directories in <code>/www/</code> that consisted of
|
|
three numbers.</p>
|
|
|
|
<p>If multiple (non-regular expression) <directive
|
|
type="section">Directory</directive> sections
|
|
match the directory (or one of its parents) containing a document,
|
|
then the directives are applied in the order of shortest match
|
|
first, interspersed with the directives from the <a
|
|
href="#accessfilename">.htaccess</a> files. For example,
|
|
with</p>
|
|
|
|
<example>
|
|
<Directory /><br />
|
|
<indent>
|
|
AllowOverride None<br />
|
|
</indent>
|
|
</Directory><br />
|
|
<br />
|
|
<Directory /home/><br />
|
|
<indent>
|
|
AllowOverride FileInfo<br />
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
|
|
<p>for access to the document <code>/home/web/dir/doc.html</code>
|
|
the steps are:</p>
|
|
|
|
<ul>
|
|
<li>Apply directive <code>AllowOverride None</code>
|
|
(disabling <code>.htaccess</code> files).</li>
|
|
|
|
<li>Apply directive <code>AllowOverride FileInfo</code> (for
|
|
directory <code>/home</code>).</li>
|
|
|
|
<li>Apply any <code>FileInfo</code> directives in
|
|
<code>/home/.htaccess</code>, <code>/home/web/.htaccess</code> and
|
|
<code>/home/web/dir/.htaccess</code> in that order.</li>
|
|
</ul>
|
|
|
|
<p>Regular expressions are not considered until after all of the
|
|
normal sections have been applied. Then all of the regular
|
|
expressions are tested in the order they appeared in the
|
|
configuration file. For example, with</p>
|
|
|
|
<example>
|
|
<Directory ~ abc$><br />
|
|
<indent>
|
|
# ... directives here ...<br />
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
|
|
<p>the regular expression section won't be considered until after
|
|
all normal <directive type="section">Directory</directive>s and
|
|
<code>.htaccess</code> files have been applied. Then the regular
|
|
expression will match on <code>/home/abc/public_html/abc</code> and
|
|
the corresponding <directive type="section">Directory</directive> will
|
|
be applied.</p>
|
|
|
|
<p><strong>Note that the default Apache access for
|
|
<code><Directory /></code> is <code>Allow from All</code>.
|
|
This means that Apache will serve any file mapped from an URL. It is
|
|
recommended that you change this with a block such
|
|
as</strong></p>
|
|
|
|
<example>
|
|
<Directory /><br />
|
|
<indent>
|
|
Order Deny,Allow<br />
|
|
Deny from All<br />
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
|
|
<p><strong>and then override this for directories you
|
|
<em>want</em> accessible. See the <a
|
|
href="../misc/security_tips.html">Security Tips</a> page for more
|
|
details.</strong></p>
|
|
|
|
<p>The directory sections occur in the <code>httpd.conf</code> file.
|
|
<directive type="section">Directory</directive> directives
|
|
cannot nest, and cannot appear in a <directive module="core"
|
|
type="section">Limit</directive> or <directive module="core"
|
|
type="section">LimitExcept</directive> section.</p>
|
|
</usage>
|
|
<seealso><a href="../sections.html">How <Directory>,
|
|
<Location> and <Files> sections work</a> for an
|
|
explanation of how these different sections are combined when a
|
|
request is received</seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>DirectoryMatch</name>
|
|
<description>Enclose directives that apply to
|
|
file-system directories matching a regular expression and their
|
|
subdirectories</description>
|
|
<syntax><DirectoryMatch <var>regex</var>>
|
|
... </DirectoryMatch></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p><directive type="section">DirectoryMatch</directive> and
|
|
<code></DirectoryMatch></code> are used to enclose a group
|
|
of directives which will apply only to the named directory and
|
|
sub-directories of that directory, the same as <directive
|
|
module="core" type="section">Directory</directive>. However, it
|
|
takes as an argument a regular expression. For example:</p>
|
|
|
|
<example>
|
|
<DirectoryMatch "^/www/.*/[0-9]{3}">
|
|
</example>
|
|
|
|
<p>would match directories in <code>/www/</code> that consisted of three
|
|
numbers.</p>
|
|
</usage>
|
|
<seealso><directive type="section" module="core">Directory</directive> for
|
|
a description of how regular expressions are mixed in with normal
|
|
<directive type="section">Directory</directive>s</seealso>
|
|
<seealso><a
|
|
href="../sections.html">How <Directory>, <Location> and
|
|
<Files> sections work</a> for an explanation of how these different
|
|
sections are combined when a request is received</seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>DocumentRoot</name>
|
|
<description>Directory that forms the main document tree visible
|
|
from the web</description>
|
|
<syntax>DocumentRoot <var>directory-path</var></syntax>
|
|
<default>DocumentRoot /usr/local/apache/htdocs</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>This directive sets the directory from which <code>httpd</code>
|
|
will serve files. Unless matched by a directive like <directive
|
|
module="mod_alias">Alias</directive>, the server appends the
|
|
path from the requested URL to the document root to make the
|
|
path to the document. Example:</p>
|
|
|
|
<example>
|
|
DocumentRoot /usr/web
|
|
</example>
|
|
|
|
<p>then an access to
|
|
<code>http://www.my.host.com/index.html</code> refers to
|
|
<code>/usr/web/index.html</code>. If the <var>directory-path</var> is
|
|
not absolute then it is assumed to be relative to the <directive
|
|
module="core">ServerRoot</directive>.</p>
|
|
|
|
<p>The <directive>DocumentRoot</directive> should be specified without
|
|
a trailing slash.</p>
|
|
</usage>
|
|
<seealso><a href="../urlmapping.html">Mapping URLs to Filesystem
|
|
Location</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>EnableMMAP</name>
|
|
<description>Use memory-mapping to read files during delivery</description>
|
|
<syntax>EnableMMAP On|Off</syntax>
|
|
<default>EnableMMAP On</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
|
|
<usage>
|
|
<p>This directive controls whether the <code>httpd</code> may use
|
|
memory-mapping if it needs to read the contents of a file during
|
|
delivery. By default, when the handling of a request requires
|
|
access to the data within a file -- for example, when delivering a
|
|
server-parsed file using <module>mod_include</module> -- Apache
|
|
memory-maps the file if the OS supports it.</p>
|
|
|
|
<p>This memory-mapping sometimes yields a performance improvement.
|
|
But in some environments, it is better to disable the memory-mapping
|
|
to prevent operational problems:</p>
|
|
|
|
<ul>
|
|
<li>On some multiprocessor systems, memory-mapping can reduce the
|
|
performance of the <code>httpd</code>.</li>
|
|
<li>With an NFS-mounted <directive module="core">DocumentRoot</directive>,
|
|
the <code>httpd</code> may crash due to a segmentation fault if a file
|
|
is deleted or truncated while the <code>httpd</code> has it
|
|
memory-mapped.</li>
|
|
</ul>
|
|
|
|
<p>For server configurations that are vulnerable to these problems,
|
|
you should disable memory-mapping of delivered files by specifying:</p>
|
|
|
|
<example>
|
|
EnableMMAP Off
|
|
</example>
|
|
|
|
<p>For NFS mounted files, this feature may be disabled explicitly for
|
|
the offending files by specifying:</p>
|
|
|
|
<example>
|
|
<Directory "/path-to-nfs-files">
|
|
<indent>
|
|
EnableMMAP Off
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>EnableSendfile</name>
|
|
<description>Use the kernel sendfile support to deliver files to the client</description>
|
|
<syntax>EnableSendfile On|Off</syntax>
|
|
<default>EnableSendfile On</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
<compatibility>Available in version 2.0.44 and later</compatibility>
|
|
|
|
<usage>
|
|
<p>This directive controls whether <code>httpd</code> may use the sendfile
|
|
support from the kernel to transmit file contents to the client.
|
|
By default, when the handling of a request requires no access
|
|
to the data within a file -- for example, when delivering a
|
|
static file -- Apache uses sendfile to deliver the file contents
|
|
without ever reading the file if the OS supports it.</p>
|
|
|
|
<p>This sendfile mechanism avoids seperate read and send operations,
|
|
and buffer allocations. But on some platforms or within some
|
|
filesystems, it is better to disable this feature to avoid
|
|
operational problems:</p>
|
|
|
|
<ul>
|
|
<li>Some platforms may have broken sendfile support that the build
|
|
system did not detect, especially if the binaries were built on
|
|
another box and moved to such a machine with broken sendfile
|
|
support.</li>
|
|
<li>On Linux the use of sendfile triggers TCP-checksum
|
|
offloading bugs on certain networking cards when using IPv6.</li>
|
|
<li>With a network-mounted <directive
|
|
module="core">DocumentRoot</directive> (e.g., NFS or SMB),
|
|
the kernel may be unable to serve the network file through
|
|
its own cache.</li>
|
|
</ul>
|
|
|
|
<p>For server configurations that are vulnerable to these problems,
|
|
you should disable this feature by specifying:</p>
|
|
|
|
<example>
|
|
EnableSendfile Off
|
|
</example>
|
|
|
|
<p>For NFS or SMB mounted files, this feature may be disabled explicitly
|
|
for the offending files by specifying:</p>
|
|
|
|
<example>
|
|
<Directory "/path-to-nfs-files">
|
|
<indent>
|
|
EnableSendfile Off
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ErrorDocument</name>
|
|
<description>What the server will return to the client
|
|
in case of an error</description>
|
|
<syntax>ErrorDocument <var>error-code</var> <var>document</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
<compatibility>Quoting syntax for text messages is different in Apache
|
|
2.0</compatibility>
|
|
|
|
<usage>
|
|
<p>In the event of a problem or error, Apache can be configured
|
|
to do one of four things,</p>
|
|
|
|
<ol>
|
|
<li>output a simple hardcoded error message</li>
|
|
|
|
<li>output a customized message</li>
|
|
|
|
<li>redirect to a local <var>URL-path</var> to handle the
|
|
problem/error</li>
|
|
|
|
<li>redirect to an external <var>URL</var> to handle the
|
|
problem/error</li>
|
|
</ol>
|
|
|
|
<p>The first option is the default, while options 2-4 are
|
|
configured using the <directive>ErrorDocument</directive>
|
|
directive, which is followed by the HTTP response code and a URL
|
|
or a message. Apache will sometimes offer additional information
|
|
regarding the problem/error.</p>
|
|
|
|
<p>URLs can begin with a slash (/) for local URLs, or be a full
|
|
URL which the client can resolve. Alternatively, a message can
|
|
be provided to be displayed by the browser. Examples:</p>
|
|
|
|
<example>
|
|
ErrorDocument 500 http://foo.example.com/cgi-bin/tester<br />
|
|
ErrorDocument 404 /cgi-bin/bad_urls.pl<br />
|
|
ErrorDocument 401 /subscription_info.html<br />
|
|
ErrorDocument 403 "Sorry can't allow you access today"
|
|
</example>
|
|
|
|
<p>Note that when you specify an <directive>ErrorDocument</directive>
|
|
that points to a remote URL (ie. anything with a method such as
|
|
<code>http</code> in front of it), Apache will send a redirect to the
|
|
client to tell it where to find the document, even if the
|
|
document ends up being on the same server. This has several
|
|
implications, the most important being that the client will not
|
|
receive the original error status code, but instead will
|
|
receive a redirect status code. This in turn can confuse web
|
|
robots and other clients which try to determine if a URL is
|
|
valid using the status code. In addition, if you use a remote
|
|
URL in an <code>ErrorDocument 401</code>, the client will not
|
|
know to prompt the user for a password since it will not
|
|
receive the 401 status code. Therefore, <strong>if you use an
|
|
<code>ErrorDocument 401</code> directive then it must refer to a local
|
|
document.</strong></p>
|
|
|
|
<p>Microsoft Internet Explorer (MSIE) will by default ignore
|
|
server-generated error messages when they are "too small" and substitute
|
|
its own "friendly" error messages. The size threshold varies depending on
|
|
the type of error, but in general, if you make your error document
|
|
greater than 512 bytes, then MSIE will show the server-generated
|
|
error rather than masking it. More information is available in
|
|
Microsoft Knowledgebase article <a
|
|
href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807"
|
|
>Q294807</a>.</p>
|
|
|
|
<p>Prior to version 2.0, messages were indicated by prefixing
|
|
them with a single unmatched double quote character.</p>
|
|
</usage>
|
|
|
|
<seealso><a href="../custom-error.html">documentation of
|
|
customizable responses</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ErrorLog</name>
|
|
<description>Location where the server will log errors</description>
|
|
<syntax> ErrorLog <var>file-path</var>|syslog[:<var>facility</var>]</syntax>
|
|
<default>ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows and OS/2)</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>ErrorLog</directive> directive sets the name of
|
|
the file to which the server will log any errors it encounters. If
|
|
the <var>file-path</var> is not absolute then it is assumed to be
|
|
relative to the <directive module="core">ServerRoot</directive>.</p>
|
|
|
|
<example><title>Example</title>
|
|
ErrorLog /var/log/httpd/error_log
|
|
</example>
|
|
|
|
<p>If the <var>file-path</var>
|
|
begins with a pipe (|) then it is assumed to be a command to spawn
|
|
to handle the error log.</p>
|
|
|
|
<example><title>Example</title>
|
|
ErrorLog "|/usr/local/bin/httpd_errors"
|
|
</example>
|
|
|
|
<p>Using <code>syslog</code> instead of a filename enables logging
|
|
via syslogd(8) if the system supports it. The default is to use
|
|
syslog facility <code>local7</code>, but you can override this by
|
|
using the <code>syslog:<var>facility</var></code> syntax where
|
|
<var>facility</var> can be one of the names usually documented in
|
|
syslog(1).</p>
|
|
|
|
<example><title>Example</title>
|
|
ErrorLog syslog:user
|
|
</example>
|
|
|
|
<p>SECURITY: See the <a
|
|
href="../misc/security_tips.html#serverroot">security tips</a>
|
|
document for details on why your security could be compromised
|
|
if the directory where logfiles are stored is writable by
|
|
anyone other than the user that starts the server.</p>
|
|
<note type="warning"><title>Note</title>
|
|
<p>When entering a file path on non-Unix platforms, care should be taken
|
|
to make sure that only forward slashed are used even though the platform
|
|
may allow the use of back slashes. In general it is a good idea to always
|
|
use forward slashes throughout the configuration files.</p>
|
|
</note>
|
|
</usage>
|
|
<seealso><directive module="core">LogLevel</directive></seealso>
|
|
<seealso><a href="../logs.html">Apache Log Files</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>FileETag</name>
|
|
<description>File attributes used to create the ETag
|
|
HTTP response header</description>
|
|
<syntax>FileETag <var>component</var> ...</syntax>
|
|
<default>FileETag INode MTime Size</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
|
|
<usage>
|
|
<p>
|
|
The <directive>FileETag</directive> directive configures the file
|
|
attributes that are used to create the <code>ETag</code> (entity
|
|
tag) response header field when the document is based on a file.
|
|
(The <code>ETag</code> value is used in cache management to save
|
|
network bandwidth.) In Apache 1.3.22 and earlier, the
|
|
<code>ETag</code> value was <em>always</em> formed
|
|
from the file's inode, size, and last-modified time (mtime). The
|
|
<directive>FileETag</directive> directive allows you to choose
|
|
which of these -- if any -- should be used. The recognized keywords are:
|
|
</p>
|
|
|
|
<dl>
|
|
<dt><strong>INode</strong></dt>
|
|
<dd>The file's i-node number will be included in the calculation</dd>
|
|
<dt><strong>MTime</strong></dt>
|
|
<dd>The date and time the file was last modified will be included</dd>
|
|
<dt><strong>Size</strong></dt>
|
|
<dd>The number of bytes in the file will be included</dd>
|
|
<dt><strong>All</strong></dt>
|
|
<dd>All available fields will be used. This is equivalent to:
|
|
<example>FileETag INode MTime Size</example></dd>
|
|
<dt><strong>None</strong></dt>
|
|
<dd>If a document is file-based, no <code>ETag</code> field will be
|
|
included in the response</dd>
|
|
</dl>
|
|
|
|
<p>The <code>INode</code>, <code>MTime</code>, and <code>Size</code>
|
|
keywords may be prefixed with either <code>+</code> or <code>-</code>,
|
|
which allow changes to be made to the default setting inherited
|
|
from a broader scope. Any keyword appearing without such a prefix
|
|
immediately and completely cancels the inherited setting.</p>
|
|
|
|
<p>If a directory's configuration includes
|
|
<code>FileETag INode MTime Size</code>, and a
|
|
subdirectory's includes <code>FileETag -INode</code>,
|
|
the setting for that subdirectory (which will be inherited by
|
|
any sub-subdirectories that don't override it) will be equivalent to
|
|
<code>FileETag MTime Size</code>.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>Files</name>
|
|
<description>Contains directives that apply to matched
|
|
filenames</description>
|
|
<syntax><Files <var>filename</var>> ... </Files></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>The <directive type="section">Files</directive> directive
|
|
limits the scope of the enclosed directives by filename. It is comparable
|
|
to the <directive module="core" type="section">Directory</directive>
|
|
and <directive module="core" type="section">Location</directive>
|
|
directives. It should be matched with a <code></Files></code>
|
|
directive. The directives given within this section will be applied to
|
|
any object with a basename (last component of filename) matching the
|
|
specified filename. <directive type="section">Files</directive>
|
|
sections are processed in the order they appear in the
|
|
configuration file, after the <directive module="core"
|
|
type="section">Directory</directive> sections and
|
|
<code>.htaccess</code> files are read, but before <directive
|
|
type="section" module="core">Location</directive> sections. Note
|
|
that <directive type="section">Files</directive> can be nested
|
|
inside <directive type="section"
|
|
module="core">Directory</directive> sections to restrict the
|
|
portion of the filesystem they apply to.</p>
|
|
|
|
<p>The <var>filename</var> argument should include a filename, or
|
|
a wild-card string, where <code>?</code> matches any single character,
|
|
and <code>*</code> matches any sequences of characters. Extended regular
|
|
expressions can also be used, with the addition of the
|
|
<code>~</code> character. For example:</p>
|
|
|
|
<example>
|
|
<Files ~ "\.(gif|jpe?g|png)$">
|
|
</example>
|
|
|
|
<p>would match most common Internet graphics formats. <directive
|
|
module="core" type="section">FilesMatch</directive> is preferred,
|
|
however.</p>
|
|
|
|
<p>Note that unlike <directive type="section"
|
|
module="core">Directory</directive> and <directive type="section"
|
|
module="core">Location</directive> sections, <directive
|
|
type="section">Files</directive> sections can be used inside
|
|
<code>.htaccess</code> files. This allows users to control access to
|
|
their own files, at a file-by-file level.</p>
|
|
|
|
</usage>
|
|
<seealso><a href="../sections.html">How <Directory>, <Location>
|
|
and <Files> sections work</a> for an explanation of how these
|
|
different sections are combined when a request is received</seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>FilesMatch</name>
|
|
<description>Contains directives that apply to regular-expression matched
|
|
filenames</description>
|
|
<syntax><FilesMatch <var>regex</var>> ... </FilesMatch></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>The <directive type="section">FilesMatch</directive> directive
|
|
limits the scope of the enclosed directives by filename, just as the
|
|
<directive module="core" type="section">Files</directive> directive
|
|
does. However, it accepts a regular expression. For example:</p>
|
|
|
|
<example>
|
|
<FilesMatch "\.(gif|jpe?g|png)$">
|
|
</example>
|
|
|
|
<p>would match most common Internet graphics formats.</p>
|
|
</usage>
|
|
|
|
<seealso><a href="../sections.html">How <Directory>, <Location>
|
|
and <Files> sections work</a> for an explanation of how these
|
|
different sections are combined when a request is received</seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ForceType</name>
|
|
<description>Forces all matching files to be served with the specified
|
|
MIME content-type</description>
|
|
<syntax>ForceType <var>MIME-type</var>|None</syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
<compatibility>Moved to the core in Apache 2.0</compatibility>
|
|
|
|
<usage>
|
|
<p>When placed into an <code>.htaccess</code> file or a
|
|
<directive type="section" module="core">Directory</directive>, or
|
|
<directive type="section" module="core">Location</directive> or
|
|
<directive type="section" module="core">Files</directive>
|
|
section, this directive forces all matching files to be served
|
|
with the content type identification given by
|
|
<var>MIME-type</var>. For example, if you had a directory full of
|
|
GIF files, but did not want to label them all with <code>.gif</code>,
|
|
you might want to use:</p>
|
|
|
|
<example>
|
|
ForceType image/gif
|
|
</example>
|
|
|
|
<p>Note that unlike <directive module="core">DefaultType</directive>,
|
|
this directive overrides all mime-type associations, including
|
|
filename extensions, that might identify the media type.</p>
|
|
|
|
<p>You can override any <directive>ForceType</directive> setting
|
|
by using the value of <code>None</code>:</p>
|
|
|
|
<example>
|
|
# force all files to be image/gif:<br />
|
|
<Location /images><br />
|
|
<indent>
|
|
ForceType image/gif<br />
|
|
</indent>
|
|
</Location><br />
|
|
<br />
|
|
# but normal mime-type associations here:<br />
|
|
<Location /images/mixed><br />
|
|
<indent>
|
|
ForceType None<br />
|
|
</indent>
|
|
</Location>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>HostnameLookups</name>
|
|
<description>Enables DNS lookups on client IP addresses</description>
|
|
<syntax>HostnameLookups On|Off|Double</syntax>
|
|
<default>HostnameLookups Off</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context></contextlist>
|
|
|
|
<usage>
|
|
<p>This directive enables DNS lookups so that host names can be
|
|
logged (and passed to CGIs/SSIs in <code>REMOTE_HOST</code>).
|
|
The value <code>Double</code> refers to doing double-reverse
|
|
DNS lookup. That is, after a reverse lookup is performed, a forward
|
|
lookup is then performed on that result. At least one of the ip
|
|
addresses in the forward lookup must match the original
|
|
address. (In "tcpwrappers" terminology this is called
|
|
<code>PARANOID</code>.)</p>
|
|
|
|
<p>Regardless of the setting, when <module>mod_authz_host</module> is
|
|
used for controlling access by hostname, a double reverse lookup
|
|
will be performed. This is necessary for security. Note that the
|
|
result of this double-reverse isn't generally available unless you
|
|
set <code>HostnameLookups Double</code>. For example, if only
|
|
<code>HostnameLookups On</code> and a request is made to an object
|
|
that is protected by hostname restrictions, regardless of whether
|
|
the double-reverse fails or not, CGIs will still be passed the
|
|
single-reverse result in <code>REMOTE_HOST</code>.</p>
|
|
|
|
<p>The default is <code>Off</code> in order to save the network
|
|
traffic for those sites that don't truly need the reverse
|
|
lookups done. It is also better for the end users because they
|
|
don't have to suffer the extra latency that a lookup entails.
|
|
Heavily loaded sites should leave this directive
|
|
<code>Off</code>, since DNS lookups can take considerable
|
|
amounts of time. The utility <a
|
|
href="../programs/logresolve.html">logresolve</a>, compiled by default
|
|
to the <code>bin</code> subdirectory of your installation directory, can
|
|
be used to look up host names from logged IP addresses offline.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>IfDefine</name>
|
|
<description>Encloses directives that will be processed only
|
|
if a test is true at startup</description>
|
|
<syntax><IfDefine [!]<var>parameter-name</var>> ...
|
|
</IfDefine></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>The <code><IfDefine <var>test</var>>...</IfDefine>
|
|
</code> section is used to mark directives that are conditional. The
|
|
directives within an <directive type="section">IfDefine</directive>
|
|
section are only processed if the <var>test</var> is true. If <var>
|
|
test</var> is false, everything between the start and end markers is
|
|
ignored.</p>
|
|
|
|
<p>The <var>test</var> in the <directive type="section"
|
|
>IfDefine</directive> section directive can be one of two forms:</p>
|
|
|
|
<ul>
|
|
<li><var>parameter-name</var></li>
|
|
|
|
<li><code>!</code><var>parameter-name</var></li>
|
|
</ul>
|
|
|
|
<p>In the former case, the directives between the start and end
|
|
markers are only processed if the parameter named
|
|
<var>parameter-name</var> is defined. The second format reverses
|
|
the test, and only processes the directives if
|
|
<var>parameter-name</var> is <strong>not</strong> defined.</p>
|
|
|
|
<p>The <var>parameter-name</var> argument is a define as given on
|
|
the <code>httpd</code> command line via <code>-D<var>parameter-</var>
|
|
</code>, at the time the server was started.</p>
|
|
|
|
<p><directive type="section">IfDefine</directive> sections are
|
|
nest-able, which can be used to implement simple
|
|
multiple-parameter tests. Example:</p>
|
|
|
|
<example>
|
|
httpd -DReverseProxy ...<br />
|
|
<br />
|
|
# httpd.conf<br />
|
|
<IfDefine ReverseProxy><br />
|
|
<indent>
|
|
LoadModule rewrite_module modules/mod_rewrite.so<br />
|
|
LoadModule proxy_module modules/libproxy.so<br />
|
|
</indent>
|
|
</IfDefine>
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>IfModule</name>
|
|
<description>Encloses directives that are processed conditional on the
|
|
presence or absence of a specific module</description>
|
|
<syntax><IfModule [!]<var>module-name</var>> ...
|
|
</IfModule></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>The <code><IfModule <var>test</var>>...</IfModule></code>
|
|
section is used to mark directives that are conditional on the presence of
|
|
a specific module. The directives within an <directive type="section"
|
|
>IfModule</directive> section are only processed if the <var>test</var>
|
|
is true. If <var>test</var> is false, everything between the start and
|
|
end markers is ignored.</p>
|
|
|
|
<p>The <var>test</var> in the <directive type="section"
|
|
>IfModule</directive> section directive can be one of two forms:</p>
|
|
|
|
<ul>
|
|
<li><var>module name</var></li>
|
|
|
|
<li>!<var>module name</var></li>
|
|
</ul>
|
|
|
|
<p>In the former case, the directives between the start and end
|
|
markers are only processed if the module named <var>module
|
|
name</var> is included in Apache -- either compiled in or
|
|
dynamically loaded using <directive module="mod_so"
|
|
>LoadModule</directive>. The second format reverses the test,
|
|
and only processes the directives if <var>module name</var> is
|
|
<strong>not</strong> included.</p>
|
|
|
|
<p>The <var>module name</var> argument is the file name of the
|
|
module, at the time it was compiled. For example,
|
|
<code>mod_rewrite.c</code>. If a module consists of several
|
|
source files, use the name of the file containing the string
|
|
<code>STANDARD20_MODULE_STUFF</code>.</p>
|
|
|
|
<p><directive type="section">IfModule</directive> sections are
|
|
nest-able, which can be used to implement simple multiple-module
|
|
tests.</p>
|
|
|
|
<note>This section should only be used if you need to have one
|
|
configuration file that works whether or not a specific module
|
|
is available. In normal operation, directives need not be
|
|
placed in <directive type="section">IfModule</directive>
|
|
sections.</note>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>Include</name>
|
|
<description>Includes other configuration files from within
|
|
the server configuration files</description>
|
|
<syntax>Include <var>file-path</var>|<var>directory-path</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context>
|
|
</contextlist>
|
|
<compatibility>Wildcard matching available in 2.0.41 and later</compatibility>
|
|
|
|
<usage>
|
|
<p>This directive allows inclusion of other configuration files
|
|
from within the server configuration files.</p>
|
|
|
|
<p>Shell-style (<code>fnmatch()</code>) wildcard characters can be used to
|
|
include several files at once, in alphabetical order. In
|
|
addition, if <directive>Include</directive> points to a directory,
|
|
rather than a file, Apache will read all files in that directory
|
|
and any subdirectory. But including entire directories is not
|
|
recommended, because it is easy to accidentally leave temporary
|
|
files in a directory that can cause <code>httpd</code> to
|
|
fail.</p>
|
|
|
|
<p>The file path specified may be an absolute path, or may be relative
|
|
to the <directive module="core">ServerRoot</directive> directory.</p>
|
|
|
|
<p>Examples:</p>
|
|
|
|
<example>
|
|
Include /usr/local/apache2/conf/ssl.conf<br />
|
|
Include /usr/local/apache2/conf/vhosts/*.conf
|
|
</example>
|
|
|
|
<p>Or, providing paths relative to your <directive
|
|
module="core">ServerRoot</directive> directory:</p>
|
|
|
|
<example>
|
|
Include conf/ssl.conf<br />
|
|
Include conf/vhosts/*.conf
|
|
</example>
|
|
|
|
<p>Running <code>apachectl configtest</code> will give you a list
|
|
of the files that are being processed during the configuration
|
|
check:</p>
|
|
|
|
<example>
|
|
root@host# apachectl configtest<br />
|
|
Processing config file: /usr/local/apache2/conf/ssl.conf<br />
|
|
Processing config file: /usr/local/apache2/conf/vhosts/vhost1.conf<br />
|
|
Processing config file: /usr/local/apache2/conf/vhosts/vhost2.conf<br />
|
|
Syntax OK
|
|
</example>
|
|
</usage>
|
|
|
|
<seealso><a href="../programs/apachectl.html">apachectl</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>KeepAlive</name>
|
|
<description>Enables HTTP persistent connections</description>
|
|
<syntax>KeepAlive On|Off</syntax>
|
|
<default>KeepAlive On</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>The Keep-Alive extension to HTTP/1.0 and the persistent
|
|
connection feature of HTTP/1.1 provide long-lived HTTP sessions
|
|
which allow multiple requests to be sent over the same TCP
|
|
connection. In some cases this has been shown to result in an
|
|
almost 50% speedup in latency times for HTML documents with
|
|
many images. To enable Keep-Alive connections, set
|
|
<code>KeepAlive On</code>.</p>
|
|
|
|
<p>For HTTP/1.0 clients, Keep-Alive connections will only be
|
|
used if they are specifically requested by a client. In
|
|
addition, a Keep-Alive connection with an HTTP/1.0 client can
|
|
only be used when the length of the content is known in
|
|
advance. This implies that dynamic content such as CGI output,
|
|
SSI pages, and server-generated directory listings will
|
|
generally not use Keep-Alive connections to HTTP/1.0 clients.
|
|
For HTTP/1.1 clients, persistent connections are the default
|
|
unless otherwise specified. If the client requests it, chunked
|
|
encoding will be used in order to send content of unknown
|
|
length over persistent connections.</p>
|
|
</usage>
|
|
|
|
<seealso><directive module="core">MaxKeepAliveRequests</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>KeepAliveTimeout</name>
|
|
<description>Amount of time the server will wait for subsequent
|
|
requests on a persistent connection</description>
|
|
<syntax>KeepAliveTimeout <var>seconds</var></syntax>
|
|
<default>KeepAliveTimeout 15</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>The number of seconds Apache will wait for a subsequent
|
|
request before closing the connection. Once a request has been
|
|
received, the timeout value specified by the
|
|
<directive module="core">Timeout</directive> directive applies.</p>
|
|
|
|
<p>Setting <directive>KeepAliveTimeout</directive> to a high value
|
|
may cause performance problems in heavily loaded servers. The
|
|
higher the timeout, the more server processes will be kept
|
|
occupied waiting on connections with idle clients.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>Limit</name>
|
|
<description>Restrict enclosed access controls to only certain HTTP
|
|
methods</description>
|
|
<syntax><Limit <var>method</var> [<var>method</var>] ... > ...
|
|
</Limit></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>Access controls are normally effective for
|
|
<strong>all</strong> access methods, and this is the usual
|
|
desired behavior. <strong>In the general case, access control
|
|
directives should not be placed within a
|
|
<directive type="section">Limit</directive> section.</strong></p>
|
|
|
|
<p>The purpose of the <directive type="section">Limit</directive>
|
|
directive is to restrict the effect of the access controls to the
|
|
nominated HTTP methods. For all other methods, the access
|
|
restrictions that are enclosed in the <directive
|
|
type="section">Limit</directive> bracket <strong>will have no
|
|
effect</strong>. The following example applies the access control
|
|
only to the methods <code>POST</code>, <code>PUT</code>, and
|
|
<code>DELETE</code>, leaving all other methods unprotected:</p>
|
|
|
|
<example>
|
|
<Limit POST PUT DELETE><br />
|
|
<indent>
|
|
Require valid-user<br />
|
|
</indent>
|
|
</Limit>
|
|
</example>
|
|
|
|
<p>The method names listed can be one or more of: <code>GET</code>,
|
|
<code>POST</code>, <code>PUT</code>, <code>DELETE</code>,
|
|
<code>CONNECT</code>, <code>OPTIONS</code>,
|
|
<code>PATCH</code>, <code>PROPFIND</code>, <code>PROPPATCH</code>,
|
|
<code>MKCOL</code>, <code>COPY</code>, <code>MOVE</code>,
|
|
<code>LOCK</code>, and <code>UNLOCK</code>. <strong>The method name is
|
|
case-sensitive.</strong> If <code>GET</code> is used it will also
|
|
restrict <code>HEAD</code> requests. The <code>TRACE</code> method
|
|
cannot be limited.</p>
|
|
|
|
<note type="warning">A <directive type="section"
|
|
module="core">LimitExcept</directive> section should always be
|
|
used in preference to a <directive type="section"
|
|
module="core">Limit</directive> section when restricting access,
|
|
since a <directive type="section"
|
|
module="core">LimitExcept</directive> section provides protection
|
|
against arbitrary methods.</note>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>LimitExcept</name>
|
|
<description>Restrict access controls to all HTTP methods
|
|
except the named ones</description>
|
|
<syntax><LimitExcept <var>method</var> [<var>method</var>] ... > ...
|
|
</LimitExcept></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p><directive type="section">LimitExcept</directive> and
|
|
<code></LimitExcept></code> are used to enclose
|
|
a group of access control directives which will then apply to any
|
|
HTTP access method <strong>not</strong> listed in the arguments;
|
|
i.e., it is the opposite of a <directive type="section"
|
|
module="core">Limit</directive> section and can be used to control
|
|
both standard and nonstandard/unrecognized methods. See the
|
|
documentation for <directive module="core"
|
|
type="section">Limit</directive> for more details.</p>
|
|
|
|
<p>For example:</p>
|
|
|
|
<example>
|
|
<LimitExcept POST GET><br />
|
|
<indent>
|
|
Require valid-user<br />
|
|
</indent>
|
|
</LimitExcept>
|
|
</example>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>LimitInternalRecursion</name>
|
|
<description>Determine maximum number of internal redirects and nested
|
|
subrequests</description>
|
|
<syntax>LimitInternalRecursion <var>number</var> [<var>number</var>]</syntax>
|
|
<default>LimitInternalRecursion 10</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
<compatibility>Available in Apache 2.0.47 and later</compatibility>
|
|
|
|
<usage>
|
|
<p>An internal redirect happens, for example, when using the <directive
|
|
module="mod_actions">Action</directive> directive, which internally
|
|
redirects the original request to a CGI script. A subrequest is Apache's
|
|
mechanism to find out what would happen for some URI if it were requested.
|
|
For example, <module>mod_dir</module> uses subrequests to look for the
|
|
files listed in the <directive module="mod_dir">DirectoryIndex</directive>
|
|
directive.</p>
|
|
|
|
<p><directive>LimitInternalRecursion</directive> prevents the server
|
|
from crashing when entering an infinite loop of internal redirects or
|
|
subrequests. Such loops are usually caused by misconfigurations.</p>
|
|
|
|
<p>The directive stores two different limits, which are evaluated on
|
|
per-request basis. The first <var>number</var> is the maximum number of
|
|
internal redirects, that may follow each other. The second <var>number</var>
|
|
determines, how deep subrequests may be nested. If you specify only one
|
|
<var>number</var>, it will be assigned to both limits.</p>
|
|
|
|
<example><title>Example</title>
|
|
LimitInternalRecursion 5
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>LimitRequestBody</name>
|
|
<description>Restricts the total size of the HTTP request body sent
|
|
from the client</description>
|
|
<syntax>LimitRequestBody <var>bytes</var></syntax>
|
|
<default>LimitRequestBody 0</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>This directive specifies the number of <var>bytes</var> from 0
|
|
(meaning unlimited) to 2147483647 (2GB) that are allowed in a
|
|
request body.</p>
|
|
|
|
<p>The <directive>LimitRequestBody</directive> directive allows
|
|
the user to set a limit on the allowed size of an HTTP request
|
|
message body within the context in which the directive is given
|
|
(server, per-directory, per-file or per-location). If the client
|
|
request exceeds that limit, the server will return an error
|
|
response instead of servicing the request. The size of a normal
|
|
request message body will vary greatly depending on the nature of
|
|
the resource and the methods allowed on that resource. CGI scripts
|
|
typically use the message body for retrieving form information.
|
|
Implementations of the <code>PUT</code> method will require
|
|
a value at least as large as any representation that the server
|
|
wishes to accept for that resource.</p>
|
|
|
|
<p>This directive gives the server administrator greater
|
|
control over abnormal client request behavior, which may be
|
|
useful for avoiding some forms of denial-of-service
|
|
attacks.</p>
|
|
|
|
<p>If, for example, you are permitting file upload to a particular
|
|
location, and wish to limit the size of the uploaded file to 100K,
|
|
you might use the following directive:</p>
|
|
|
|
<example>
|
|
LimitRequestBody 102400
|
|
</example>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>LimitRequestFields</name>
|
|
<description>Limits the number of HTTP request header fields that
|
|
will be accepted from the client</description>
|
|
<syntax>LimitRequestFields <var>number</var></syntax>
|
|
<default>LimitRequestFields 100</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p><var>Number</var> is an integer from 0 (meaning unlimited) to
|
|
32767. The default value is defined by the compile-time
|
|
constant <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> (100 as
|
|
distributed).</p>
|
|
|
|
<p>The <directive>LimitRequestFields</directive> directive allows
|
|
the server administrator to modify the limit on the number of
|
|
request header fields allowed in an HTTP request. A server needs
|
|
this value to be larger than the number of fields that a normal
|
|
client request might include. The number of request header fields
|
|
used by a client rarely exceeds 20, but this may vary among
|
|
different client implementations, often depending upon the extent
|
|
to which a user has configured their browser to support detailed
|
|
content negotiation. Optional HTTP extensions are often expressed
|
|
using request header fields.</p>
|
|
|
|
<p>This directive gives the server administrator greater
|
|
control over abnormal client request behavior, which may be
|
|
useful for avoiding some forms of denial-of-service attacks.
|
|
The value should be increased if normal clients see an error
|
|
response from the server that indicates too many fields were
|
|
sent in the request.</p>
|
|
|
|
<p>For example:</p>
|
|
|
|
<example>
|
|
LimitRequestFields 50
|
|
</example>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>LimitRequestFieldSize</name>
|
|
<description>Limits the size of the HTTP request header allowed from the
|
|
client</description>
|
|
<syntax>LimitRequestFieldsize <var>bytes</var></syntax>
|
|
<default>LimitRequestFieldsize 8190</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>This directive specifies the number of <var>bytes</var> from 0
|
|
to the value of the compile-time constant
|
|
<code>DEFAULT_LIMIT_REQUEST_FIELDSIZE</code> (8190 as
|
|
distributed) that will be allowed in an HTTP request
|
|
header.</p>
|
|
|
|
<p>The <directive>LimitRequestFieldSize</directive> directive
|
|
allows the server administrator to reduce the limit on the allowed
|
|
size of an HTTP request header field below the normal input buffer
|
|
size compiled with the server. A server needs this value to be
|
|
large enough to hold any one header field from a normal client
|
|
request. The size of a normal request header field will vary
|
|
greatly among different client implementations, often depending
|
|
upon the extent to which a user has configured their browser to
|
|
support detailed content negotiation.</p>
|
|
|
|
<p>This directive gives the server administrator greater
|
|
control over abnormal client request behavior, which may be
|
|
useful for avoiding some forms of denial-of-service attacks.</p>
|
|
|
|
<p>For example:</p>
|
|
|
|
<example>
|
|
LimitRequestFieldSize 4094
|
|
</example>
|
|
|
|
<note>Under normal conditions, the value should not be changed from
|
|
the default.</note>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>LimitRequestLine</name>
|
|
<description>Limit the size of the HTTP request line that will be accepted
|
|
from the client</description>
|
|
<syntax>LimitRequestLine <var>bytes</var></syntax>
|
|
<default>LimitRequestLine 8190</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>This directive sets the number of <var>bytes</var> from 0 to
|
|
the value of the compile-time constant
|
|
<code>DEFAULT_LIMIT_REQUEST_LINE</code> (8190 as distributed)
|
|
that will be allowed on the HTTP request-line.</p>
|
|
|
|
<p>The <directive>LimitRequestLine</directive> directive allows
|
|
the server administrator to reduce the limit on the allowed size
|
|
of a client's HTTP request-line below the normal input buffer size
|
|
compiled with the server. Since the request-line consists of the
|
|
HTTP method, URI, and protocol version, the
|
|
<directive>LimitRequestLine</directive> directive places a
|
|
restriction on the length of a request-URI allowed for a request
|
|
on the server. A server needs this value to be large enough to
|
|
hold any of its resource names, including any information that
|
|
might be passed in the query part of a <code>GET</code> request.</p>
|
|
|
|
<p>This directive gives the server administrator greater
|
|
control over abnormal client request behavior, which may be
|
|
useful for avoiding some forms of denial-of-service attacks.</p>
|
|
|
|
<p>For example:</p>
|
|
|
|
<example>
|
|
LimitRequestLine 4094
|
|
</example>
|
|
|
|
<note>Under normal conditions, the value should not be changed from
|
|
the default.</note>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>LimitXMLRequestBody</name>
|
|
<description>Limits the size of an XML-based request body</description>
|
|
<syntax>LimitXMLRequestBody <var>bytes</var></syntax>
|
|
<default>LimitXMLRequestBody 1000000</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context></contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>Limit (in bytes) on maximum size of an XML-based request
|
|
body. A value of <code>0</code> will disable any checking.</p>
|
|
|
|
<p>Example:</p>
|
|
|
|
<example>
|
|
LimitXMLRequestBody 0
|
|
</example>
|
|
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>Location</name>
|
|
<description>Applies the enclosed directives only to matching
|
|
URLs</description>
|
|
<syntax><Location
|
|
<var>URL-path</var>|<var>URL</var>> ... </Location></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive type="section">Location</directive> directive
|
|
limits the scope of the enclosed directives by URL. It is similar to the
|
|
<directive type="section" module="core">Directory</directive>
|
|
directive, and starts a subsection which is terminated with a
|
|
<code></Location></code> directive. <directive
|
|
type="section">Location</directive> sections are processed in the
|
|
order they appear in the configuration file, after the <directive
|
|
type="section" module="core">Directory</directive> sections and
|
|
<code>.htaccess</code> files are read, and after the <directive
|
|
type="section" module="core">Files</directive> sections.</p>
|
|
|
|
<p><directive type="section">Location</directive> sections operate
|
|
completely outside the filesystem. This has several consequences.
|
|
Most importantly, <directive type="section">Location</directive>
|
|
directives should not be used to control access to filesystem
|
|
locations. Since several different URLs may map to the same
|
|
filesystem location, such access controls may by circumvented.</p>
|
|
|
|
<note><title>When to use <directive
|
|
type="section">Location</directive></title>
|
|
|
|
<p>Use <directive type="section">Location</directive> to apply
|
|
directives to content that lives outside the filesystem. For
|
|
content that lives in the filesystem, use <directive
|
|
type="section" module="core">Directory</directive> and <directive
|
|
type="section" module="core">Files</directive>. An exception is
|
|
<code><Location /></code>, which is an easy way to
|
|
apply a configuration to the entire server.</p>
|
|
</note>
|
|
|
|
<p>For all origin (non-proxy) requests, the URL to be matched is a
|
|
URL-path of the form <code>/path/</code>. No scheme, hostname,
|
|
port, or query string may be included. For proxy requests, the
|
|
URL to be matched is of the form
|
|
<code>scheme://servername/path</code>, and you must include the
|
|
prefix.</p>
|
|
|
|
<p>The URL may use wildcards. In a wild-card string, <code>?</code> matches
|
|
any single character, and <code>*</code> matches any sequences of
|
|
characters.</p>
|
|
|
|
<p>Extended regular
|
|
expressions can also be used, with the addition of the
|
|
<code>~</code> character. For example:</p>
|
|
|
|
<example>
|
|
<Location ~ "/(extra|special)/data">
|
|
</example>
|
|
|
|
<p>would match URLs that contained the substring <code>/extra/data</code>
|
|
or <code>/special/data</code>. The directive <directive
|
|
type="section" module="core">LocationMatch</directive> behaves
|
|
identical to the regex version of <directive
|
|
type="section">Location</directive>.</p>
|
|
|
|
<p>The <directive type="section">Location</directive>
|
|
functionality is especially useful when combined with the
|
|
<directive module="core">SetHandler</directive>
|
|
directive. For example, to enable status requests, but allow them
|
|
only from browsers at <code>foo.com</code>, you might use:</p>
|
|
|
|
<example>
|
|
<Location /status><br />
|
|
<indent>
|
|
SetHandler server-status<br />
|
|
Order Deny,Allow<br />
|
|
Deny from all<br />
|
|
Allow from .foo.com<br />
|
|
</indent>
|
|
</Location>
|
|
</example>
|
|
|
|
<note><title>Note about / (slash)</title>
|
|
<p>The slash character has special meaning depending on where in a
|
|
URL it appears. People may be used to its behavior in the filesystem
|
|
where multiple adjacent slashes are frequently collapsed to a single
|
|
slash (<em>i.e.</em>, <code>/home///foo</code> is the same as
|
|
<code>/home/foo</code>). In URL-space this is not necessarily true.
|
|
The <directive type="section" module="core">LocationMatch</directive>
|
|
directive and the regex version of <directive type="section"
|
|
>Location</directive> require you to explicitly specify multiple
|
|
slashes if that is your intention.</p>
|
|
|
|
<p>For example, <code><LocationMatch ^/abc></code> would match
|
|
the request URL <code>/abc</code> but not the request URL <code>
|
|
//abc</code>. The (non-regex) <directive type="section"
|
|
>Location</directive> directive behaves similarly when used for
|
|
proxy requests. But when (non-regex) <directive type="section"
|
|
>Location</directive> is used for non-proxy requests it will
|
|
implicitly match multiple slashes with a single slash. For example,
|
|
if you specify <code><Location /abc/def></code> and the
|
|
request is to <code>/abc//def</code> then it will match.</p>
|
|
</note>
|
|
</usage>
|
|
<seealso><a href="../sections.html">How <Directory>, <Location>
|
|
and <Files> sections work</a> for an explanation of how these
|
|
different sections are combined when a request is received</seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>LocationMatch</name>
|
|
<description>Applies the enclosed directives only to regular-expression
|
|
matching URLs</description>
|
|
<syntax><LocationMatch
|
|
<var>regex</var>> ... </LocationMatch></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive type="section">LocationMatch</directive> directive
|
|
limits the scope of the enclosed directives by URL, in an identical manner
|
|
to <directive module="core" type="section">Location</directive>. However,
|
|
it takes a regular expression as an argument instead of a simple
|
|
string. For example:</p>
|
|
|
|
<example>
|
|
<LocationMatch "/(extra|special)/data">
|
|
</example>
|
|
|
|
<p>would match URLs that contained the substring <code>/extra/data</code>
|
|
or <code>/special/data</code>.</p>
|
|
</usage>
|
|
|
|
<seealso><a href="../sections.html">How <Directory>, <Location>
|
|
and <Files> sections work</a> for an explanation of how these
|
|
different sections are combined when a request is received</seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>LogLevel</name>
|
|
<description>Controls the verbosity of the ErrorLog</description>
|
|
<syntax>LogLevel <var>level</var></syntax>
|
|
<default>LogLevel warn</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p><directive>LogLevel</directive> adjusts the verbosity of the
|
|
messages recorded in the error logs (see <directive
|
|
module="core">ErrorLog</directive> directive). The following
|
|
<var>level</var>s are available, in order of decreasing
|
|
significance:</p>
|
|
|
|
<table border="1">
|
|
<tr>
|
|
<th><strong>Level</strong> </th>
|
|
|
|
<th><strong>Description</strong> </th>
|
|
|
|
<th><strong>Example</strong> </th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><code>emerg</code> </td>
|
|
|
|
<td>Emergencies - system is unusable.</td>
|
|
|
|
<td>"Child cannot open lock file. Exiting"</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><code>alert</code> </td>
|
|
|
|
<td>Action must be taken immediately.</td>
|
|
|
|
<td>"getpwuid: couldn't determine user name from uid"</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><code>crit</code> </td>
|
|
|
|
<td>Critical Conditions.</td>
|
|
|
|
<td>"socket: Failed to get a socket, exiting child"</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><code>error</code> </td>
|
|
|
|
<td>Error conditions.</td>
|
|
|
|
<td>"Premature end of script headers"</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><code>warn</code> </td>
|
|
|
|
<td>Warning conditions.</td>
|
|
|
|
<td>"child process 1234 did not exit, sending another
|
|
SIGHUP"</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><code>notice</code> </td>
|
|
|
|
<td>Normal but significant condition.</td>
|
|
|
|
<td>"httpd: caught SIGBUS, attempting to dump core in
|
|
..."</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><code>info</code> </td>
|
|
|
|
<td>Informational.</td>
|
|
|
|
<td>"Server seems busy, (you may need to increase
|
|
StartServers, or Min/MaxSpareServers)..."</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td><code>debug</code> </td>
|
|
|
|
<td>Debug-level messages</td>
|
|
|
|
<td>"Opening config file ..."</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>When a particular level is specified, messages from all
|
|
other levels of higher significance will be reported as well.
|
|
<em>E.g.</em>, when <code>LogLevel info</code> is specified,
|
|
then messages with log levels of <code>notice</code> and
|
|
<code>warn</code> will also be posted.</p>
|
|
|
|
<p>Using a level of at least <code>crit</code> is
|
|
recommended.</p>
|
|
|
|
<p>For example:</p>
|
|
|
|
<example>
|
|
LogLevel notice
|
|
</example>
|
|
|
|
<note><title>Note</title>
|
|
<p>When logging to a regular file messages of the level
|
|
<code>notice</code> cannot be suppressed and thus are always
|
|
logged. However, this doesn't apply when logging is done
|
|
using <code>syslog</code>.</p>
|
|
</note>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>MaxKeepAliveRequests</name>
|
|
<description>Number of requests allowed on a persistent
|
|
connection</description>
|
|
<syntax>MaxKeepAliveRequests <var>number</var></syntax>
|
|
<default>MaxKeepAliveRequests 100</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>MaxKeepAliveRequests</directive> directive
|
|
limits the number of requests allowed per connection when
|
|
<directive module="core" >KeepAlive</directive> is on. If it is
|
|
set to <code>0</code>, unlimited requests will be allowed. We
|
|
recommend that this setting be kept to a high value for maximum
|
|
server performance.</p>
|
|
|
|
<p>For example:</p>
|
|
|
|
<example>
|
|
MaxKeepAliveRequests 500
|
|
</example>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>NameVirtualHost</name>
|
|
<description>Designates an IP address for name-virtual
|
|
hosting</description>
|
|
<syntax>NameVirtualHost <var>addr</var>[:<var>port</var>]</syntax>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>NameVirtualHost</directive> directive is a
|
|
required directive if you want to configure <a
|
|
href="../vhosts/">name-based virtual hosts</a>.</p>
|
|
|
|
<p>Although <var>addr</var> can be hostname it is recommended
|
|
that you always use an IP address, e.g.</p>
|
|
|
|
<example>
|
|
NameVirtualHost 111.22.33.44
|
|
</example>
|
|
|
|
<p>With the <directive>NameVirtualHost</directive> directive you
|
|
specify the IP address on which the server will receive requests
|
|
for the name-based virtual hosts. This will usually be the address
|
|
to which your name-based virtual host names resolve. In cases
|
|
where a firewall or other proxy receives the requests and forwards
|
|
them on a different IP address to the server, you must specify the
|
|
IP address of the physical interface on the machine which will be
|
|
servicing the requests. If you have multiple name-based hosts on
|
|
multiple addresses, repeat the directive for each address.</p>
|
|
|
|
<note><title>Note</title>
|
|
<p>Note, that the "main server" and any <code>_default_</code> servers
|
|
will <strong>never</strong> be served for a request to a
|
|
<directive>NameVirtualHost</directive> IP Address (unless for some
|
|
reason you specify <directive>NameVirtualHost</directive> but then
|
|
don't define any <directive>VirtualHost</directive>s for that
|
|
address).</p>
|
|
</note>
|
|
|
|
<p>Optionally you can specify a port number on which the
|
|
name-based virtual hosts should be used, e.g.</p>
|
|
|
|
<example>
|
|
NameVirtualHost 111.22.33.44:8080
|
|
</example>
|
|
|
|
<p>IPv6 addresses must be enclosed in square brackets, as shown
|
|
in the following example:</p>
|
|
|
|
<example>
|
|
NameVirtualHost [fe80::a00:20ff:fea7:ccea]:8080
|
|
</example>
|
|
|
|
<p>To receive requests on all interfaces, you can use an argument of
|
|
<code>*</code></p>
|
|
|
|
<example>
|
|
NameVirtualHost *
|
|
</example>
|
|
|
|
<note><title>Argument to <directive type="section">VirtualHost</directive>
|
|
directive</title>
|
|
<p>Note that the argument to the <directive
|
|
type="section">VirtualHost</directive> directive must
|
|
exactly match the argument to the <directive
|
|
>NameVirtualHost</directive> directive.</p>
|
|
|
|
<example>
|
|
NameVirtualHost 1.2.3.4<br />
|
|
<VirtualHost 1.2.3.4><br />
|
|
# ...<br />
|
|
</VirtualHost><br />
|
|
</example>
|
|
</note>
|
|
</usage>
|
|
|
|
<seealso><a href="../vhosts/">Virtual Hosts
|
|
documentation</a></seealso>
|
|
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>Options</name>
|
|
<description>Configures what features are available in a particular
|
|
directory</description>
|
|
<syntax>Options
|
|
[+|-]<var>option</var> [[+|-]<var>option</var>] ...</syntax>
|
|
<default>Options All</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>Options</override>
|
|
|
|
<usage>
|
|
<p>The <directive>Options</directive> directive controls which
|
|
server features are available in a particular directory.</p>
|
|
|
|
<p><var>option</var> can be set to <code>None</code>, in which
|
|
case none of the extra features are enabled, or one or more of
|
|
the following:</p>
|
|
|
|
<dl>
|
|
<dt><code>All</code></dt>
|
|
|
|
<dd>All options except for <code>MultiViews</code>. This is the default
|
|
setting.</dd>
|
|
|
|
<dt><code>ExecCGI</code></dt>
|
|
|
|
<dd>
|
|
Execution of CGI scripts using <module>mod_cgi</module>
|
|
is permitted.</dd>
|
|
|
|
<dt><code>FollowSymLinks</code></dt>
|
|
|
|
<dd>
|
|
|
|
The server will follow symbolic links in this directory.
|
|
<note>
|
|
<p>Even though the server follows the symlink it does <em>not</em>
|
|
change the pathname used to match against <directive type="section"
|
|
module="core">Directory</directive> sections.</p>
|
|
<p>Note also, that this option <strong>gets ignored</strong> if set
|
|
inside a <directive type="section" module="core">Location</directive>
|
|
section.</p>
|
|
</note></dd>
|
|
|
|
<dt><code>Includes</code></dt>
|
|
|
|
<dd>
|
|
Server-side includes provided by <module>mod_include</module>
|
|
are permitted.</dd>
|
|
|
|
<dt><code>IncludesNOEXEC</code></dt>
|
|
|
|
<dd>
|
|
|
|
Server-side includes are permitted, but the <code>#exec
|
|
cmd</code> and <code>#exec cgi</code> are disabled. It is still
|
|
possible to <code>#include virtual</code> CGI scripts from
|
|
<directive module="mod_alias">ScriptAlias</directive>ed
|
|
directories.</dd>
|
|
|
|
<dt><code>Indexes</code></dt>
|
|
|
|
<dd>
|
|
If a URL which maps to a directory is requested, and there
|
|
is no <directive module="mod_dir">DirectoryIndex</directive>
|
|
(<em>e.g.</em>, <code>index.html</code>) in that directory, then
|
|
<module>mod_autoindex</module> will return a formatted listing
|
|
of the directory.</dd>
|
|
|
|
<dt><code>MultiViews</code></dt>
|
|
|
|
<dd>
|
|
<a href="../content-negotiation.html">Content negotiated</a>
|
|
"MultiViews" are allowed using
|
|
<module>mod_negotiation</module>.</dd>
|
|
|
|
<dt><code>SymLinksIfOwnerMatch</code></dt>
|
|
|
|
<dd>The server will only follow symbolic links for which the
|
|
target file or directory is owned by the same user id as the
|
|
link.
|
|
|
|
<note><title>Note</title> This option gets ignored if
|
|
set inside a <directive module="core"
|
|
type="section">Location</directive> section.</note>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>Normally, if multiple <directive>Options</directive> could
|
|
apply to a directory, then the most specific one is used and
|
|
others are ignored; the options are not merged. (See <a
|
|
href="../sections.html#mergin">how sections are merged</a>.)
|
|
However if <em>all</em> the options on the
|
|
<directive>Options</directive> directive are preceded by a
|
|
<code>+</code> or <code>-</code> symbol, the options are
|
|
merged. Any options preceded by a <code>+</code> are added to the
|
|
options currently in force, and any options preceded by a
|
|
<code>-</code> are removed from the options currently in
|
|
force. </p>
|
|
|
|
<p>For example, without any <code>+</code> and <code>-</code> symbols:</p>
|
|
|
|
<example>
|
|
<Directory /web/docs><br />
|
|
<indent>
|
|
Options Indexes FollowSymLinks<br />
|
|
</indent>
|
|
</Directory><br />
|
|
<br />
|
|
<Directory /web/docs/spec><br />
|
|
<indent>
|
|
Options Includes<br />
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
|
|
<p>then only <code>Includes</code> will be set for the
|
|
<code>/web/docs/spec</code> directory. However if the second
|
|
<directive>Options</directive> directive uses the <code>+</code> and
|
|
<code>-</code> symbols:</p>
|
|
|
|
<example>
|
|
<Directory /web/docs><br />
|
|
<indent>
|
|
Options Indexes FollowSymLinks<br />
|
|
</indent>
|
|
</Directory><br />
|
|
<br />
|
|
<Directory /web/docs/spec><br />
|
|
<indent>
|
|
Options +Includes -Indexes<br />
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
|
|
<p>then the options <code>FollowSymLinks</code> and
|
|
<code>Includes</code> are set for the <code>/web/docs/spec</code>
|
|
directory.</p>
|
|
|
|
<note><title>Note</title>
|
|
<p>Using <code>-IncludesNOEXEC</code> or
|
|
<code>-Includes</code> disables server-side includes completely
|
|
regardless of the previous setting.</p>
|
|
</note>
|
|
|
|
<p>The default in the absence of any other settings is
|
|
<code>All</code>.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>Require</name>
|
|
<description>Selects which authenticated users can access
|
|
a resource</description>
|
|
<syntax>Require <var>entity-name</var> [<var>entity-name</var>] ...</syntax>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>This directive selects which authenticated users can access
|
|
a directory. The allowed syntaxes are:</p>
|
|
|
|
<dl>
|
|
<dt><code>Require user <var>userid</var> [<var>userid</var>]
|
|
...</code></dt>
|
|
<dd>Only the named users can access the resource.</dd>
|
|
|
|
<dt><code>Require group <var>group-name</var> [<var>group-name</var>]
|
|
...</code></dt>
|
|
<dd>Only users in the named groups can access the resource.</dd>
|
|
|
|
<dt><code>Require valid-user</code></dt>
|
|
<dd>All valid users can access the resource.</dd>
|
|
</dl>
|
|
|
|
<p><directive>Require</directive> must be accompanied by
|
|
<directive module="core">AuthName</directive> and <directive
|
|
module="core">AuthType</directive> directives, and directives such
|
|
as <directive module="mod_authn_file">AuthUserFile</directive>
|
|
and <directive module="mod_authz_groupfile">AuthGroupFile</directive> (to
|
|
define users and groups) in order to work correctly. Example:</p>
|
|
|
|
<example>
|
|
AuthType Basic<br />
|
|
AuthName "Restricted Directory"<br />
|
|
AuthUserFile /web/users<br />
|
|
AuthGroupFile /web/groups<br />
|
|
Require group admin
|
|
</example>
|
|
|
|
<p>Access controls which are applied in this way are effective for
|
|
<strong>all</strong> methods. <strong>This is what is normally
|
|
desired.</strong> If you wish to apply access controls only to
|
|
specific methods, while leaving other methods unprotected, then
|
|
place the <directive>Require</directive> statement into a
|
|
<directive module="core" type="section">Limit</directive>
|
|
section.</p>
|
|
</usage>
|
|
<seealso><directive module="core">Satisfy</directive></seealso>
|
|
<seealso><module>mod_authz_host</module></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>RLimitCPU</name>
|
|
<description>Limits the CPU consumption of processes launched
|
|
by Apache children</description>
|
|
<syntax>RLimitCPU <var>seconds</var>|max [<var>seconds</var>|max]</syntax>
|
|
<default>Unset; uses operating system defaults</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context></contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>Takes 1 or 2 parameters. The first parameter sets the soft
|
|
resource limit for all processes and the second parameter sets
|
|
the maximum resource limit. Either parameter can be a number,
|
|
or <code>max</code> to indicate to the server that the limit should
|
|
be set to the maximum allowed by the operating system
|
|
configuration. Raising the maximum resource limit requires that
|
|
the server is running as <code>root</code>, or in the initial startup
|
|
phase.</p>
|
|
|
|
<p>This applies to processes forked off from Apache children
|
|
servicing requests, not the Apache children themselves. This
|
|
includes CGI scripts and SSI exec commands, but not any
|
|
processes forked off from the Apache parent such as piped
|
|
logs.</p>
|
|
|
|
<p>CPU resource limits are expressed in seconds per
|
|
process.</p>
|
|
</usage>
|
|
<seealso><directive module="core">RLimitMEM</directive></seealso>
|
|
<seealso><directive module="core">RLimitNPROC</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>RLimitMEM</name>
|
|
<description>Limits the memory consumption of processes launched
|
|
by Apache children</description>
|
|
<syntax>RLimitMEM <var>bytes</var>|max [<var>bytes</var>|max]</syntax>
|
|
<default>Unset; uses operating system defaults</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context></contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>Takes 1 or 2 parameters. The first parameter sets the soft
|
|
resource limit for all processes and the second parameter sets
|
|
the maximum resource limit. Either parameter can be a number,
|
|
or <code>max</code> to indicate to the server that the limit should
|
|
be set to the maximum allowed by the operating system
|
|
configuration. Raising the maximum resource limit requires that
|
|
the server is running as <code>root</code>, or in the initial startup
|
|
phase.</p>
|
|
|
|
<p>This applies to processes forked off from Apache children
|
|
servicing requests, not the Apache children themselves. This
|
|
includes CGI scripts and SSI exec commands, but not any
|
|
processes forked off from the Apache parent such as piped
|
|
logs.</p>
|
|
|
|
<p>Memory resource limits are expressed in bytes per
|
|
process.</p>
|
|
</usage>
|
|
<seealso><directive module="core">RLimitCPU</directive></seealso>
|
|
<seealso><directive module="core">RLimitNPROC</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>RLimitNPROC</name>
|
|
<description>Limits the number of processes that can be launched by
|
|
processes launched by Apache children</description>
|
|
<syntax>RLimitNPROC <var>number</var>|max [<var>number</var>|max]</syntax>
|
|
<default>Unset; uses operating system defaults</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context></contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>Takes 1 or 2 parameters. The first parameter sets the soft
|
|
resource limit for all processes and the second parameter sets
|
|
the maximum resource limit. Either parameter can be a number,
|
|
or <code>max</code> to indicate to the server that the limit
|
|
should be set to the maximum allowed by the operating system
|
|
configuration. Raising the maximum resource limit requires that
|
|
the server is running as <code>root</code>, or in the initial startup
|
|
phase.</p>
|
|
|
|
<p>This applies to processes forked off from Apache children
|
|
servicing requests, not the Apache children themselves. This
|
|
includes CGI scripts and SSI exec commands, but not any
|
|
processes forked off from the Apache parent such as piped
|
|
logs.</p>
|
|
|
|
<p>Process limits control the number of processes per user.</p>
|
|
|
|
<note><title>Note</title>
|
|
<p>If CGI processes are <strong>not</strong> running
|
|
under userids other than the web server userid, this directive
|
|
will limit the number of processes that the server itself can
|
|
create. Evidence of this situation will be indicated by
|
|
<strong><code>cannot fork</code></strong> messages in the
|
|
<code>error_log</code>.</p>
|
|
</note>
|
|
</usage>
|
|
<seealso><directive module="core">RLimitMEM</directive></seealso>
|
|
<seealso><directive module="core">RLimitCPU</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>Satisfy</name>
|
|
<description>Interaction between host-level access control and
|
|
user authentication</description>
|
|
<syntax>Satisfy Any|All</syntax>
|
|
<default>Satisfy All</default>
|
|
<contextlist><context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>AuthConfig</override>
|
|
|
|
<usage>
|
|
<p>Access policy if both <directive
|
|
module="mod_authz_host">Allow</directive> and <directive
|
|
module="core">Require</directive> used. The parameter can be
|
|
either <code>All</code> or <code>Any</code>. This directive is only
|
|
useful if access to a particular area is being restricted by both
|
|
username/password <em>and</em> client host address. In this case
|
|
the default behavior (<code>All</code>) is to require that the client
|
|
passes the address access restriction <em>and</em> enters a valid
|
|
username and password. With the <code>Any</code> option the client will be
|
|
granted access if they either pass the host restriction or enter a
|
|
valid username and password. This can be used to password restrict
|
|
an area, but to let clients from particular addresses in without
|
|
prompting for a password.</p>
|
|
|
|
<p>For example, if you wanted to let people on your network have
|
|
unrestricted access to a portion of your website, but require that
|
|
people outside of your network provide a password, you could use a
|
|
configuration similar to the following:</p>
|
|
|
|
<example>
|
|
Require valid-user<br />
|
|
Allow from 192.168.1<br />
|
|
Satisfy Any
|
|
</example>
|
|
|
|
</usage>
|
|
<seealso><directive module="mod_authz_host">Allow</directive></seealso>
|
|
<seealso><directive module="core">Require</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ScriptInterpreterSource</name>
|
|
<description>Technique for locating the interpreter for CGI
|
|
scripts</description>
|
|
<syntax>ScriptInterpreterSource Registry|Registry-Strict|Script</syntax>
|
|
<default>ScriptInterpreterSource Script</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context></contextlist>
|
|
<override>FileInfo</override>
|
|
<compatibility>Win32 only;
|
|
option <code>Registry-Strict</code> is available in Apache 2.0 and
|
|
later</compatibility>
|
|
|
|
<usage>
|
|
<p>This directive is used to control how Apache finds the
|
|
interpreter used to run CGI scripts. The default setting is
|
|
<code>Script</code>. This causes Apache to use the interpreter pointed to
|
|
by the shebang line (first line, starting with <code>#!</code>) in the
|
|
script. On Win32 systems this line usually looks like:</p>
|
|
|
|
<example>
|
|
#!C:/Perl/bin/perl.exe
|
|
</example>
|
|
|
|
<p>or, if perl is in the <code>PATH</code>, simply:</p>
|
|
|
|
<example>
|
|
#!perl
|
|
</example>
|
|
|
|
<p>Setting <code>ScriptInterpreterSource Registry</code> will
|
|
cause the Windows Registry tree <code>HKEY_CLASSES_ROOT</code> to be
|
|
searched using the script file extension (e.g., <code>.pl</code>) as a
|
|
search key. The command defined by the registry subkey
|
|
<code>Shell\ExecCGI\Command</code> or, if it does not exist, by the subkey
|
|
<code>Shell\Open\Command</code> is used to open the script file. If the
|
|
registry keys cannot be found, Apache falls back to the behavior of the
|
|
<code>Script</code> option.</p>
|
|
|
|
<note type="warning"><title>Security</title>
|
|
<p>Be careful when using <code>ScriptInterpreterSource
|
|
Registry</code> with <directive
|
|
module="mod_alias">ScriptAlias</directive>'ed directories, because
|
|
Apache will try to execute <strong>every</strong> file within this
|
|
directory. The <code>Registry</code> setting may cause undesired
|
|
program calls on files which are typically not executed. For
|
|
example, the default open command on <code>.htm</code> files on
|
|
most Windows systems will execute Microsoft Internet Explorer, so
|
|
any HTTP request for an <code>.htm</code> file existing within the
|
|
script directory would start the browser in the background on the
|
|
server. This is a good way to crash your system within a minute or
|
|
so.</p>
|
|
</note>
|
|
|
|
<p>The option <code>Registry-Strict</code> which is new in Apache
|
|
2.0 does the same thing as <code>Registry</code> but uses only the
|
|
subkey <code>Shell\ExecCGI\Command</code>. The
|
|
<code>ExecCGI</code> key is not a common one. It must be
|
|
configured manually in the windows registry and hence prevents
|
|
accidental program calls on your system.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ServerAdmin</name>
|
|
<description>Email address that the server includes in error
|
|
messages sent to the client</description>
|
|
<syntax>ServerAdmin <var>email-address</var></syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>ServerAdmin</directive> sets the e-mail address
|
|
that the server includes in any error messages it returns to the
|
|
client.</p>
|
|
|
|
<p>It may be worth setting up a dedicated address for this, e.g.</p>
|
|
|
|
<example>
|
|
ServerAdmin www-admin@foo.example.com
|
|
</example>
|
|
<p>as users do not always mention that they are talking about the
|
|
server!</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ServerAlias</name>
|
|
<description>Alternate names for a host used when matching requests
|
|
to name-virtual hosts</description>
|
|
<syntax>ServerAlias <var>hostname</var> [<var>hostname</var>] ...</syntax>
|
|
<contextlist><context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>ServerAlias</directive> directive sets the
|
|
alternate names for a host, for use with <a
|
|
href="../vhosts/name-based.html">name-based virtual hosts</a>.</p>
|
|
|
|
<example>
|
|
<VirtualHost *><br />
|
|
ServerName server.domain.com<br />
|
|
ServerAlias server server2.domain.com server2<br />
|
|
# ...<br />
|
|
</VirtualHost>
|
|
</example>
|
|
</usage>
|
|
<seealso><a href="../vhosts/">Apache Virtual Host documentation</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ServerName</name>
|
|
<description>Hostname and port that the server uses to identify
|
|
itself</description>
|
|
<syntax>ServerName <var>fully-qualified-domain-name</var>[:<var>port</var>]</syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
</contextlist>
|
|
<compatibility>In version 2.0, this
|
|
directive supersedes the functionality of the <directive>Port</directive>
|
|
directive from version 1.3.</compatibility>
|
|
|
|
<usage>
|
|
<p>The <directive>ServerName</directive> directive sets the hostname and
|
|
port that the server uses to identify itself. This is used when
|
|
creating redirection URLs. For example, if the name of the
|
|
machine hosting the webserver is <code>simple.example.com</code>,
|
|
but the machine also has the DNS alias <code>www.example.com</code>
|
|
and you wish the webserver to be so identified, the following
|
|
directive should be used:</p>
|
|
|
|
<example>
|
|
ServerName www.example.com:80
|
|
</example>
|
|
|
|
<p>If no <directive>ServerName</directive> is specified, then the
|
|
server attempts to deduce the hostname by performing a reverse
|
|
lookup on the IP address. If no port is specified in the
|
|
servername, then the server will use the port from the incoming
|
|
request. For optimal reliability and predictability, you should
|
|
specify an explicit hostname and port using the
|
|
<directive>ServerName</directive> directive.</p>
|
|
|
|
<p>If you are using <a
|
|
href="../vhosts/name-based.html">name-based virtual hosts</a>,
|
|
the <directive>ServerName</directive> inside a
|
|
<directive type="section" module="core">VirtualHost</directive>
|
|
section specifies what hostname must appear in the request's
|
|
<code>Host:</code> header to match this virtual host.</p>
|
|
|
|
<p>See the description of the
|
|
<directive module="core">UseCanonicalName</directive> directive for
|
|
settings which determine whether self-referential URL's (e.g., by the
|
|
<module>mod_dir</module> module) will refer to the
|
|
specified port, or to the port number given in the client's request.
|
|
</p>
|
|
</usage>
|
|
|
|
<seealso><a href="../dns-caveats.html">Issues Regarding DNS and
|
|
Apache</a></seealso>
|
|
<seealso><a href="../vhosts/">Apache virtual host
|
|
documentation</a></seealso>
|
|
<seealso><directive module="core">UseCanonicalName</directive></seealso>
|
|
<seealso><directive module="core">NameVirtualHost</directive></seealso>
|
|
<seealso><directive module="core">ServerAlias</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ServerPath</name>
|
|
<description>Legacy URL pathname for a name-based virtual host that
|
|
is accessed by an incompatible browser</description>
|
|
<syntax>ServerPath <var>URL-path</var></syntax>
|
|
<contextlist><context>virtual host</context></contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>ServerPath</directive> directive sets the legacy
|
|
URL pathname for a host, for use with <a
|
|
href="../vhosts/">name-based virtual hosts</a>.</p>
|
|
</usage>
|
|
<seealso><a href="../vhosts/">Apache Virtual Host documentation</a></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ServerRoot</name>
|
|
<description>Base directory for the server installation</description>
|
|
<syntax>ServerRoot <var>directory-path</var></syntax>
|
|
<default>ServerRoot /usr/local/apache</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>ServerRoot</directive> directive sets the
|
|
directory in which the server lives. Typically it will contain the
|
|
subdirectories <code>conf/</code> and <code>logs/</code>. Relative
|
|
paths for other configuration files are taken as relative to this
|
|
directory.</p>
|
|
|
|
<example><title>Example</title>
|
|
ServerRoot /home/httpd
|
|
</example>
|
|
|
|
</usage>
|
|
<seealso><a href="../invoking.html">the <code>-d</code>
|
|
option to <code>httpd</code></a></seealso>
|
|
<seealso><a href="../misc/security_tips.html#serverroot">the
|
|
security tips</a> for information on how to properly set
|
|
permissions on the <directive>ServerRoot</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ServerSignature</name>
|
|
<description>Configures the footer on server-generated documents</description>
|
|
<syntax>ServerSignature On|Off|EMail</syntax>
|
|
<default>ServerSignature Off</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>All</override>
|
|
|
|
<usage>
|
|
<p>The <directive>ServerSignature</directive> directive allows the
|
|
configuration of a trailing footer line under server-generated
|
|
documents (error messages, <module>mod_proxy</module> ftp directory
|
|
listings, <module>mod_info</module> output, ...). The reason why you
|
|
would want to enable such a footer line is that in a chain of proxies,
|
|
the user often has no possibility to tell which of the chained servers
|
|
actually produced a returned error message.</p>
|
|
|
|
<p>The <code>Off</code>
|
|
setting, which is the default, suppresses the footer line (and is
|
|
therefore compatible with the behavior of Apache-1.2 and
|
|
below). The <code>On</code> setting simply adds a line with the
|
|
server version number and <directive
|
|
module="core">ServerName</directive> of the serving virtual host,
|
|
and the <code>EMail</code> setting additionally creates a
|
|
"mailto:" reference to the <directive
|
|
module="core">ServerAdmin</directive> of the referenced
|
|
document.</p>
|
|
|
|
<p>After version 2.0.44, the details of the server version number
|
|
presented are controlled by the <directive
|
|
module="core">ServerTokens</directive> directive.</p>
|
|
</usage>
|
|
<seealso><directive module="core">ServerTokens</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>ServerTokens</name>
|
|
<description>Configures the <code>Server</code> HTTP response
|
|
header</description>
|
|
<syntax>ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full</syntax>
|
|
<default>ServerTokens Full</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>This directive controls whether <code>Server</code> response
|
|
header field which is sent back to clients includes a
|
|
description of the generic OS-type of the server as well as
|
|
information about compiled-in modules.</p>
|
|
|
|
<dl>
|
|
<dt><code>ServerTokens Prod[uctOnly]</code></dt>
|
|
|
|
<dd>Server sends (<em>e.g.</em>): <code>Server:
|
|
Apache</code></dd>
|
|
|
|
<dt><code>ServerTokens Major</code></dt>
|
|
|
|
<dd>Server sends (<em>e.g.</em>): <code>Server:
|
|
Apache/2</code></dd>
|
|
|
|
<dt><code>ServerTokens Minor</code></dt>
|
|
|
|
<dd>Server sends (<em>e.g.</em>): <code>Server:
|
|
Apache/2.0</code></dd>
|
|
|
|
<dt><code>ServerTokens Min[imal]</code></dt>
|
|
|
|
<dd>Server sends (<em>e.g.</em>): <code>Server:
|
|
Apache/2.0.41</code></dd>
|
|
|
|
<dt><code>ServerTokens OS</code></dt>
|
|
|
|
<dd>Server sends (<em>e.g.</em>): <code>Server: Apache/2.0.41
|
|
(Unix)</code></dd>
|
|
|
|
<dt><code>ServerTokens Full</code> (or not specified)</dt>
|
|
|
|
<dd>Server sends (<em>e.g.</em>): <code>Server: Apache/2.0.41
|
|
(Unix) PHP/4.2.2 MyMod/1.2</code></dd>
|
|
</dl>
|
|
|
|
<p>This setting applies to the entire server, and cannot be
|
|
enabled or disabled on a virtualhost-by-virtualhost basis.</p>
|
|
|
|
<p>After version 2.0.44, this directive also controls the
|
|
information presented by the <directive
|
|
module="core">ServerSignature</directive> directive.</p>
|
|
</usage>
|
|
<seealso><directive module="core">ServerSignature</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SetHandler</name>
|
|
<description>Forces all matching files to be processed by a
|
|
handler</description>
|
|
<syntax>SetHandler <var>handler-name</var>|None</syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
<compatibility>Moved into the core in Apache 2.0</compatibility>
|
|
|
|
<usage>
|
|
<p>When placed into an <code>.htaccess</code> file or a
|
|
<directive type="section" module="core">Directory</directive> or
|
|
<directive type="section" module="core">Location</directive>
|
|
section, this directive forces all matching files to be parsed
|
|
through the <a href="../handler.html">handler</a> given by
|
|
<var>handler-name</var>. For example, if you had a directory you
|
|
wanted to be parsed entirely as imagemap rule files, regardless
|
|
of extension, you might put the following into an
|
|
<code>.htaccess</code> file in that directory:</p>
|
|
|
|
<example>
|
|
SetHandler imap-file
|
|
</example>
|
|
|
|
<p>Another example: if you wanted to have the server display a
|
|
status report whenever a URL of
|
|
<code>http://servername/status</code> was called, you might put
|
|
the following into <code>httpd.conf</code>:</p>
|
|
|
|
<example>
|
|
<Location /status><br />
|
|
<indent>
|
|
SetHandler server-status<br />
|
|
</indent>
|
|
</Location>
|
|
</example>
|
|
|
|
<p>You can override an earlier defined <directive>SetHandler</directive>
|
|
directive by using the value <code>None</code>.</p>
|
|
</usage>
|
|
|
|
<seealso><directive module="mod_mime">AddHandler</directive></seealso>
|
|
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SetInputFilter</name>
|
|
<description>Sets the filters that will process client requests and POST
|
|
input</description>
|
|
<syntax>SetInputFilter <var>filter</var>[;<var>filter</var>...]</syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
|
|
<usage>
|
|
<p>The <directive>SetInputFilter</directive> directive sets the
|
|
filter or filters which will process client requests and POST
|
|
input when they are received by the server. This is in addition to
|
|
any filters defined elsewhere, including the
|
|
<directive module="mod_mime">AddInputFilter</directive>
|
|
directive.</p>
|
|
|
|
<p>If more than one filter is specified, they must be separated
|
|
by semicolons in the order in which they should process the
|
|
content.</p>
|
|
</usage>
|
|
<seealso><a href="../filter.html">Filters</a> documentation</seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>SetOutputFilter</name>
|
|
<description>Sets the filters that will process responses from the
|
|
server</description>
|
|
<syntax>SetOutputFilter <var>filter</var>[;<var>filter</var>...]</syntax>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context><context>.htaccess</context>
|
|
</contextlist>
|
|
<override>FileInfo</override>
|
|
|
|
<usage>
|
|
<p>The <directive>SetOutputFilter</directive> directive sets the filters
|
|
which will process responses from the server before they are
|
|
sent to the client. This is in addition to any filters defined
|
|
elsewhere, including the
|
|
<directive module="mod_mime">AddOutputFilter</directive>
|
|
directive.</p>
|
|
|
|
<p>For example, the following configuration will process all files
|
|
in the <code>/www/data/</code> directory for server-side
|
|
includes.</p>
|
|
|
|
<example>
|
|
<Directory /www/data/><br />
|
|
<indent>
|
|
SetOutputFilter INCLUDES<br />
|
|
</indent>
|
|
</Directory>
|
|
</example>
|
|
|
|
<p>If more than one filter is specified, they must be separated
|
|
by semicolons in the order in which they should process the
|
|
content.</p>
|
|
</usage>
|
|
<seealso><a href="../filter.html">Filters</a> documentation</seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>TimeOut</name>
|
|
<description>Amount of time the server will wait for
|
|
certain events before failing a request</description>
|
|
<syntax>TimeOut <var>seconds</var></syntax>
|
|
<default>TimeOut 300</default>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p>The <directive>TimeOut</directive> directive currently defines
|
|
the amount of time Apache will wait for three things:</p>
|
|
|
|
<ol>
|
|
<li>The total amount of time it takes to receive a GET
|
|
request.</li>
|
|
|
|
<li>The amount of time between receipt of TCP packets on a
|
|
POST or PUT request.</li>
|
|
|
|
<li>The amount of time between ACKs on transmissions of TCP
|
|
packets in responses.</li>
|
|
</ol>
|
|
|
|
<p>We plan on making these separately configurable at some point
|
|
down the road. The timer used to default to 1200 before 1.2,
|
|
but has been lowered to 300 which is still far more than
|
|
necessary in most situations. It is not set any lower by
|
|
default because there may still be odd places in the code where
|
|
the timer is not reset when a packet is sent. </p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>UseCanonicalName</name>
|
|
<description>Configures how the server determines its own name and
|
|
port</description>
|
|
<syntax>UseCanonicalName On|Off|DNS</syntax>
|
|
<default>UseCanonicalName On</default>
|
|
<contextlist><context>server config</context><context>virtual host</context>
|
|
<context>directory</context></contextlist>
|
|
|
|
<usage>
|
|
<p>In many situations Apache must construct a <em>self-referential</em>
|
|
URL -- that is, a URL that refers back to the same server. With
|
|
<code>UseCanonicalName On</code> Apache will use the hostname and port
|
|
specified in the <directive module="core">ServerName</directive>
|
|
directive to construct the canonical name for the server. This name
|
|
is used in all self-referential URLs, and for the values of
|
|
<code>SERVER_NAME</code> and <code>SERVER_PORT</code> in CGIs.</p>
|
|
|
|
<p>With <code>UseCanonicalName Off</code> Apache will form
|
|
self-referential URLs using the hostname and port supplied by
|
|
the client if any are supplied (otherwise it will use the
|
|
canonical name, as defined above). These values are the same
|
|
that are used to implement <a
|
|
href="../vhosts/name-based.html">name based virtual hosts</a>,
|
|
and are available with the same clients. The CGI variables
|
|
<code>SERVER_NAME</code> and <code>SERVER_PORT</code> will be
|
|
constructed from the client supplied values as well.</p>
|
|
|
|
<p>An example where this may be useful is on an intranet server
|
|
where you have users connecting to the machine using short
|
|
names such as <code>www</code>. You'll notice that if the users
|
|
type a shortname, and a URL which is a directory, such as
|
|
<code>http://www/splat</code>, <em>without the trailing
|
|
slash</em> then Apache will redirect them to
|
|
<code>http://www.domain.com/splat/</code>. If you have
|
|
authentication enabled, this will cause the user to have to
|
|
authenticate twice (once for <code>www</code> and once again
|
|
for <code>www.domain.com</code> -- see <a
|
|
href="http://httpd.apache.org/docs/misc/FAQ.html#prompted-twice">the
|
|
FAQ on this subject for more information</a>). But if
|
|
<directive>UseCanonicalName</directive> is set <code>Off</code>, then
|
|
Apache will redirect to <code>http://www/splat/</code>.</p>
|
|
|
|
<p>There is a third option, <code>UseCanonicalName DNS</code>,
|
|
which is intended for use with mass IP-based virtual hosting to
|
|
support ancient clients that do not provide a
|
|
<code>Host:</code> header. With this option Apache does a
|
|
reverse DNS lookup on the server IP address that the client
|
|
connected to in order to work out self-referential URLs.</p>
|
|
|
|
<note type="warning"><title>Warning</title>
|
|
<p>If CGIs make assumptions about the values of <code>SERVER_NAME</code>
|
|
they may be broken by this option. The client is essentially free
|
|
to give whatever value they want as a hostname. But if the CGI is
|
|
only using <code>SERVER_NAME</code> to construct self-referential URLs
|
|
then it should be just fine.</p>
|
|
</note>
|
|
</usage>
|
|
<seealso><directive module="core">ServerName</directive></seealso>
|
|
<seealso><directive module="mpm_common">Listen</directive></seealso>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis type="section">
|
|
<name>VirtualHost</name>
|
|
<description>Contains directives that apply only to a specific
|
|
hostname or IP address</description>
|
|
<syntax><VirtualHost
|
|
<var>addr</var>[:<var>port</var>] [<var>addr</var>[:<var>port</var>]]
|
|
...> ... </VirtualHost></syntax>
|
|
<contextlist><context>server config</context></contextlist>
|
|
|
|
<usage>
|
|
<p><directive type="section">VirtualHost</directive> and
|
|
<code></VirtualHost></code> are used to enclose a group of
|
|
directives that will apply only to a particular virtual host. Any
|
|
directive that is allowed in a virtual host context may be
|
|
used. When the server receives a request for a document on a
|
|
particular virtual host, it uses the configuration directives
|
|
enclosed in the <directive type="section">VirtualHost</directive>
|
|
section. <var>Addr</var> can be:</p>
|
|
|
|
<ul>
|
|
<li>The IP address of the virtual host;</li>
|
|
|
|
<li>A fully qualified domain name for the IP address of the
|
|
virtual host;</li>
|
|
|
|
<li>The character <code>*</code>, which is used only in combination with
|
|
<code>NameVirtualHost *</code> to match all IP addresses; or</li>
|
|
|
|
<li>The string <code>_default_</code>, which is used only
|
|
with IP virtual hosting to catch unmatched IP addresses.</li>
|
|
</ul>
|
|
|
|
<example><title>Example</title>
|
|
<VirtualHost 10.1.2.3><br />
|
|
<indent>
|
|
ServerAdmin webmaster@host.foo.com<br />
|
|
DocumentRoot /www/docs/host.foo.com<br />
|
|
ServerName host.foo.com<br />
|
|
ErrorLog logs/host.foo.com-error_log<br />
|
|
TransferLog logs/host.foo.com-access_log<br />
|
|
</indent>
|
|
</VirtualHost>
|
|
</example>
|
|
|
|
|
|
<p>IPv6 addresses must be specified in square brackets because
|
|
the optional port number could not be determined otherwise. An
|
|
IPv6 example is shown below:</p>
|
|
|
|
<example>
|
|
<VirtualHost [fe80::a00:20ff:fea7:ccea]><br />
|
|
<indent>
|
|
ServerAdmin webmaster@host.example.com<br />
|
|
DocumentRoot /www/docs/host.example.com<br />
|
|
ServerName host.example.com<br />
|
|
ErrorLog logs/host.example.com-error_log<br />
|
|
TransferLog logs/host.example.com-access_log<br />
|
|
</indent>
|
|
</VirtualHost>
|
|
</example>
|
|
|
|
<p>Each Virtual Host must correspond to a different IP address,
|
|
different port number or a different host name for the server,
|
|
in the former case the server machine must be configured to
|
|
accept IP packets for multiple addresses. (If the machine does
|
|
not have multiple network interfaces, then this can be
|
|
accomplished with the <code>ifconfig alias</code> command -- if
|
|
your OS supports it).</p>
|
|
|
|
<note><title>Note</title>
|
|
<p>The use of <directive type="section">VirtualHost</directive> does
|
|
<strong>not</strong> affect what addresses Apache listens on. You
|
|
may need to ensure that Apache is listening on the correct addresses
|
|
using <directive module="mpm_common">Listen</directive>.</p>
|
|
</note>
|
|
|
|
<p>When using IP-based virtual hosting, the special name
|
|
<code>_default_</code> can be specified in
|
|
which case this virtual host will match any IP address that is
|
|
not explicitly listed in another virtual host. In the absence
|
|
of any <code>_default_</code> virtual host the "main" server config,
|
|
consisting of all those definitions outside any VirtualHost
|
|
section, is used when no IP-match occurs. (But note that any IP
|
|
address that matches a <directive
|
|
module="core">NameVirtualHost</directive> directive will use neither
|
|
the "main" server config nor the <code>_default_</code> virtual host.
|
|
See the <a href="../vhosts/name-based.html">name-based virtual hosting</a>
|
|
documentation for further details.)</p>
|
|
|
|
<p>You can specify a <code>:port</code> to change the port that is
|
|
matched. If unspecified then it defaults to the same port as the
|
|
most recent <directive module="mpm_common">Listen</directive>
|
|
statement of the main server. You may also specify <code>:*</code>
|
|
to match all ports on that address. (This is recommended when used
|
|
with <code>_default_</code>.)</p>
|
|
|
|
<note type="warning"><title>Security</title>
|
|
<p>See the <a href="../misc/security_tips.html">security tips</a>
|
|
document for details on why your security could be compromised if the
|
|
directory where logfiles are stored is writable by anyone other
|
|
than the user that starts the server.</p>
|
|
</note>
|
|
</usage>
|
|
<seealso><a href="../vhosts/">Apache Virtual Host documentation</a></seealso>
|
|
<seealso><a href="../dns-caveats.html">Issues Regarding DNS and
|
|
Apache</a></seealso>
|
|
<seealso><a href="../bind.html">Setting
|
|
which addresses and ports Apache uses</a></seealso>
|
|
<seealso><a href="../sections.html">How <Directory>, <Location>
|
|
and <Files> sections work</a> for an explanation of how these
|
|
different sections are combined when a request is received</seealso>
|
|
</directivesynopsis>
|
|
|
|
</modulesynopsis>
|