home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F278218_mod_access.xml < prev    next >
Extensible Markup Language  |  2004-04-17  |  14KB  |  337 lines

  1. <?xml version="1.0"?>
  2. <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
  3. <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
  4. <!-- $Revision: 1.7.2.8 $ -->
  5.  
  6. <!--
  7.  Copyright 2002-2004 The Apache Software Foundation
  8.  
  9.  Licensed under the Apache License, Version 2.0 (the "License");
  10.  you may not use this file except in compliance with the License.
  11.  You may obtain a copy of the License at
  12.  
  13.      http://www.apache.org/licenses/LICENSE-2.0
  14.  
  15.  Unless required by applicable law or agreed to in writing, software
  16.  distributed under the License is distributed on an "AS IS" BASIS,
  17.  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18.  See the License for the specific language governing permissions and
  19.  limitations under the License.
  20. -->
  21.  
  22. <modulesynopsis metafile="mod_access.xml.meta">
  23.  
  24. <name>mod_access</name> 
  25. <description>Provides access control based on client hostname, IP
  26. address, or other characteristics of the client request.</description>
  27. <status>Base</status>
  28. <sourcefile>mod_access.c</sourcefile>
  29. <identifier>access_module</identifier>
  30. <compatibility>Available only in versions prior to 2.1</compatibility>
  31.  
  32. <summary>
  33.     <p>The directives provided by <module>mod_access</module> are used
  34.     in <directive module="core" type="section">Directory</directive>,
  35.     <directive module="core" type="section">Files</directive>, and
  36.     <directive module="core" type="section">Location</directive> sections
  37.     as well as <code><a href="core.html#accessfilename">.htaccess</a></code>
  38.     files to control access to particular parts of the server. Access
  39.     can be controlled based on the client hostname, IP address, or
  40.     other characteristics of the client request, as captured in <a
  41.     href="../env.html">environment variables</a>. The <directive
  42.     module="mod_access">Allow</directive> and <directive
  43.     module="mod_access">Deny</directive> directives are used to
  44.     specify which clients are or are not allowed access to the server,
  45.     while the <directive module="mod_access">Order</directive>
  46.     directive sets the default access state, and configures how the
  47.     <directive module="mod_access">Allow</directive> and <directive
  48.     module="mod_access">Deny</directive> directives interact with each
  49.     other.</p>
  50.  
  51.     <p>Both host-based access restrictions and password-based
  52.     authentication may be implemented simultaneously. In that case,
  53.     the <directive module="core">Satisfy</directive> directive is used
  54.     to determine how the two sets of restrictions interact.</p>
  55.  
  56.     <p>In general, access restriction directives apply to all
  57.     access methods (<code>GET</code>, <code>PUT</code>,
  58.     <code>POST</code>, etc). This is the desired behavior in most
  59.     cases. However, it is possible to restrict some methods, while
  60.     leaving other methods unrestricted, by enclosing the directives
  61.     in a <directive module="core" type="section">Limit</directive> section.</p>
  62. </summary>
  63.  
  64. <seealso><directive module="core">Satisfy</directive></seealso>
  65. <seealso><directive module="core">Require</directive></seealso>
  66.  
  67. <directivesynopsis>
  68. <name>Allow</name>
  69.  
  70. <description>Controls which hosts can access an area of the
  71. server</description>
  72. <syntax> Allow from
  73.     all|<var>host</var>|env=<var>env-variable</var>
  74.     [<var>host</var>|env=<var>env-variable</var>] ...</syntax>
  75. <contextlist><context>directory</context><context>.htaccess</context>
  76. </contextlist>
  77. <override>Limit</override>
  78.  
  79. <usage>
  80.  
  81.     <p>The <directive>Allow</directive> directive affects which hosts can
  82.     access an area of the server. Access can be controlled by
  83.     hostname, IP Address, IP Address range, or by other
  84.     characteristics of the client request captured in environment
  85.     variables.</p>
  86.  
  87.     <p>The first argument to this directive is always
  88.     <code>from</code>. The subsequent arguments can take three
  89.     different forms. If <code>Allow from all</code> is specified, then
  90.     all hosts are allowed access, subject to the configuration of the
  91.     <directive module="mod_access">Deny</directive> and <directive
  92.     module="mod_access">Order</directive> directives as discussed
  93.     below. To allow only particular hosts or groups of hosts to access
  94.     the server, the <var>host</var> can be specified in any of the
  95.     following formats:</p>
  96.  
  97.     <dl>
  98.       <dt>A (partial) domain-name</dt>
  99.  
  100.       <dd>
  101.       <example><title>Example:</title>
  102.         Allow from apache.org
  103.       </example>
  104.       <p>Hosts whose names match, or end in, this string are allowed
  105.       access. Only complete components are matched, so the above
  106.       example will match <code>foo.apache.org</code> but it will not
  107.       match <code>fooapache.org</code>. This configuration will cause
  108.       Apache to perform a double reverse DNS lookup on the client IP
  109.       address, regardless of the setting of the <directive
  110.       module="core">HostnameLookups</directive> directive.  It will do
  111.       a reverse DNS lookup on the IP address to find the associated
  112.       hostname, and then do a forward lookup on the hostname to assure
  113.       that it matches the original IP address.  Only if the forward
  114.       and reverse DNS are consistent and the hostname matches will
  115.       access be allowed.</p></dd>
  116.  
  117.       <dt>A full IP address</dt>
  118.  
  119.       <dd>
  120.       <example><title>Example:</title>
  121.         Allow from 10.1.2.3
  122.       </example>
  123.       <p>An IP address of a host allowed access</p></dd>
  124.  
  125.       <dt>A partial IP address</dt>
  126.  
  127.       <dd>
  128.       <example><title>Example:</title>
  129.         Allow from 10.1
  130.       </example>
  131.       <p>The first 1 to 3 bytes of an IP address, for subnet
  132.       restriction.</p></dd>
  133.  
  134.       <dt>A network/netmask pair</dt>
  135.  
  136.       <dd>
  137.       <example><title>Example:</title>
  138.         Allow from 10.1.0.0/255.255.0.0
  139.       </example>
  140.       <p>A network a.b.c.d, and a netmask w.x.y.z. For more
  141.       fine-grained subnet restriction.</p></dd>
  142.  
  143.       <dt>A network/nnn CIDR specification</dt>
  144.  
  145.       <dd>
  146.       <example><title>Example:</title>
  147.         Allow from 10.1.0.0/16
  148.       </example>
  149.       <p>Similar to the previous case, except the netmask consists of
  150.       nnn high-order 1 bits.</p></dd>
  151.     </dl>
  152.  
  153.     <p>Note that the last three examples above match exactly the
  154.     same set of hosts.</p>
  155.  
  156.     <p>IPv6 addresses and IPv6 subnets can be specified as shown
  157.     below:</p>
  158.  
  159.     <example>
  160.        Allow from fe80::a00:20ff:fea7:ccea<br />
  161.        Allow from fe80::a00:20ff:fea7:ccea/10
  162.     </example>
  163.  
  164.     <p>The third format of the arguments to the
  165.     <directive>Allow</directive> directive allows access to the server
  166.     to be controlled based on the existence of an <a
  167.     href="../env.html">environment variable</a>. When <code>Allow from
  168.     env=<var>env-variable</var></code> is specified, then the request is
  169.     allowed access if the environment variable <var>env-variable</var>
  170.     exists. The server provides the ability to set environment
  171.     variables in a flexible way based on characteristics of the client
  172.     request using the directives provided by
  173.     <module>mod_setenvif</module>.  Therefore, this directive can be
  174.     used to allow access based on such factors as the clients
  175.     <code>User-Agent</code> (browser type), <code>Referer</code>, or
  176.     other HTTP request header fields.</p>
  177.  
  178.     <example><title>Example:</title>
  179.       SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in<br />
  180.       <Directory /docroot><br />
  181.       <indent>
  182.         Order Deny,Allow<br />
  183.         Deny from all<br />
  184.         Allow from env=let_me_in<br />
  185.       </indent>
  186.       </Directory>
  187.     </example>
  188.  
  189.     <p>In this case, browsers with a user-agent string beginning
  190.     with <code>KnockKnock/2.0</code> will be allowed access, and all
  191.     others will be denied.</p>
  192. </usage>
  193. </directivesynopsis>
  194.  
  195. <directivesynopsis>
  196. <name>Deny</name>
  197. <description>Controls which hosts are denied access to the
  198. server</description>
  199. <syntax> Deny from all|<var>host</var>|env=<var>env-variable</var>
  200. [<var>host</var>|env=<var>env-variable</var>] ...</syntax>
  201. <contextlist><context>directory</context><context>.htaccess</context>
  202. </contextlist>
  203. <override>Limit</override>
  204.  
  205. <usage>
  206.     <p>This directive allows access to the server to be restricted
  207.     based on hostname, IP address, or environment variables. The
  208.     arguments for the <directive>Deny</directive> directive are
  209.     identical to the arguments for the <directive
  210.     module="mod_access">Allow</directive> directive.</p>
  211. </usage>
  212. </directivesynopsis>
  213.  
  214. <directivesynopsis>
  215. <name>Order</name>
  216. <description>Controls the default access state and the order in which
  217. <directive>Allow</directive> and <directive>Deny</directive> are
  218. evaluated.</description>
  219. <syntax> Order <var>ordering</var></syntax>
  220. <default>Order Deny,Allow</default>
  221. <contextlist><context>directory</context><context>.htaccess</context>
  222. </contextlist>
  223. <override>Limit</override>
  224.  
  225. <usage>
  226.  
  227.     <p>The <directive>Order</directive> directive controls the default
  228.     access state and the order in which <directive
  229.     module="mod_access">Allow</directive> and <directive
  230.     module="mod_access">Deny</directive> directives are evaluated.
  231.     <var>Ordering</var> is one of</p>
  232.  
  233.     <dl>
  234.       <dt><code>Deny,Allow</code></dt>
  235.  
  236.       <dd>The <directive module="mod_access">Deny</directive> directives
  237.       are evaluated before the <directive
  238.       module="mod_access">Allow</directive> directives. Access is
  239.       allowed by default.  Any client which does not match a
  240.       <directive module="mod_access">Deny</directive> directive or does
  241.       match an <directive module="mod_access">Allow</directive>
  242.       directive will be allowed access to the server.</dd>
  243.  
  244.       <dt><code>Allow,Deny</code></dt>
  245.  
  246.       <dd>The <directive module="mod_access">Allow</directive>
  247.       directives are evaluated before the <directive
  248.       module="mod_access">Deny</directive> directives. Access is denied
  249.       by default. Any client which does not match an <directive
  250.       module="mod_access">Allow</directive> directive or does match a
  251.       <directive module="mod_access">Deny</directive> directive will be
  252.       denied access to the server.</dd>
  253.  
  254.       <dt><code>Mutual-failure</code></dt>
  255.  
  256.       <dd>Only those hosts which appear on the <directive
  257.       module="mod_access">Allow</directive> list and do not appear on
  258.       the <directive module="mod_access">Deny</directive> list are
  259.       granted access. This ordering has the same effect as <code>Order
  260.       Allow,Deny</code> and is deprecated in favor of that
  261.       configuration.</dd>
  262.     </dl>
  263.  
  264.     <p>Keywords may only be separated by a comma; <em>no whitespace</em> is
  265.     allowed between them. Note that in all cases every <directive
  266.     module="mod_access">Allow</directive> and <directive
  267.     module="mod_access">Deny</directive> statement is evaluated.</p>
  268.  
  269.     <p>In the following example, all hosts in the apache.org domain
  270.     are allowed access; all other hosts are denied access.</p>
  271.  
  272.     <example>
  273.       Order Deny,Allow<br />
  274.       Deny from all<br />
  275.       Allow from apache.org
  276.     </example>
  277.  
  278.     <p>In the next example, all hosts in the apache.org domain are
  279.     allowed access, except for the hosts which are in the
  280.     foo.apache.org subdomain, who are denied access. All hosts not
  281.     in the apache.org domain are denied access because the default
  282.     state is to deny access to the server.</p>
  283.  
  284.     <example>
  285.       Order Allow,Deny<br />
  286.       Allow from apache.org<br />
  287.       Deny from foo.apache.org
  288.     </example>
  289.  
  290.     <p>On the other hand, if the <directive>Order</directive> in the last
  291.     example is changed to <code>Deny,Allow</code>, all hosts will
  292.     be allowed access. This happens because, regardless of the
  293.     actual ordering of the directives in the configuration file,
  294.     the <code>Allow from apache.org</code> will be evaluated last
  295.     and will override the <code>Deny from foo.apache.org</code>.
  296.     All hosts not in the <code>apache.org</code> domain will also
  297.     be allowed access because the default state will change to
  298.     <var>allow</var>.</p>
  299.  
  300.     <p>The presence of an <directive>Order</directive> directive can affect
  301.     access to a part of the server even in the absence of accompanying
  302.     <directive module="mod_access">Allow</directive> and <directive
  303.     module="mod_access">Deny</directive> directives because of its effect
  304.     on the default access state.  For example,</p>
  305.  
  306.     <example>
  307.       <Directory /www><br />
  308.       <indent>
  309.         Order Allow,Deny<br />
  310.       </indent>
  311.       </Directory>
  312.     </example>
  313.  
  314.     <p>will deny all access to the <code>/www</code> directory
  315.     because the default access state will be set to
  316.     <var>deny</var>.</p>
  317.  
  318.     <p>The <directive>Order</directive> directive controls the order of access
  319.     directive processing only within each phase of the server's
  320.     configuration processing. This implies, for example, that an
  321.     <directive module="mod_access">Allow</directive> or <directive
  322.     module="mod_access">Deny</directive> directive occurring in a
  323.     <directive module="core" type="section">Location</directive> section will
  324.     always be evaluated after an <directive
  325.     module="mod_access">Allow</directive> or <directive
  326.     module="mod_access">Deny</directive> directive occurring in a
  327.     <directive module="core" type="section">Directory</directive> section or
  328.     <code>.htaccess</code> file, regardless of the setting of the
  329.     <directive>Order</directive> directive. For details on the merging
  330.     of configuration sections, see the documentation on <a
  331.     href="../sections.html">How Directory, Location and Files sections
  332.     work</a>.</p>
  333. </usage>
  334. </directivesynopsis>
  335.  
  336. </modulesynopsis>
  337.