]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_authz_host.html.en
Update transformations after version bump.
[apache] / docs / manual / mod / mod_authz_host.html.en
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
4         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5               This file is generated from xml source: DO NOT EDIT
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7       -->
8 <title>mod_authz_host - Apache HTTP Server</title>
9 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body>
14 <div id="page-header">
15 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
16 <p class="apache">Apache HTTP Server Version 2.3</p>
17 <img alt="" src="../images/feather.gif" /></div>
18 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
19 <div id="path">
20 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs-project/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Modules</a></div>
21 <div id="page-content">
22 <div id="preamble"><h1>Apache Module mod_authz_host</h1>
23 <div class="toplang">
24 <p><span>Available Languages: </span><a href="../en/mod/mod_authz_host.html" title="English">&nbsp;en&nbsp;</a> |
25 <a href="../ja/mod/mod_authz_host.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
26 <a href="../ko/mod/mod_authz_host.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
27 </div>
28 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Group authorizations based on host (name or IP
29 address)</td></tr>
30 <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
31 <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>authz_host_module</td></tr>
32 <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_authz_host.c</td></tr>
33 <tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1 and later</td></tr></table>
34 <h3>Summary</h3>
35
36     <p>The directives provided by <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> are
37     used in <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>,
38     <code class="directive"><a href="../mod/core.html#files">&lt;Files&gt;</a></code>, and
39     <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> sections
40     as well as <code><a href="core.html#accessfilename">.htaccess</a>
41     </code> files to control access to particular parts of the server.
42     Access can be controlled based on the client hostname, IP address, or
43     other characteristics of the client request, as captured in <a href="../env.html">environment variables</a>. The <code class="directive"><a href="#allow">Allow</a></code> and <code class="directive"><a href="#deny">Deny</a></code> directives are used to
44     specify which clients are or are not allowed access to the server,
45     while the <code class="directive"><a href="#order">Order</a></code>
46     directive sets the default access state, and configures how the
47     <code class="directive"><a href="#allow">Allow</a></code> and <code class="directive"><a href="#deny">Deny</a></code> directives interact with each
48     other.</p>
49
50     <p>Both host-based access restrictions and password-based
51     authentication may be implemented simultaneously. In that case,
52     the <code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code> directive is used
53     to determine how the two sets of restrictions interact.</p>
54
55     <p>In general, access restriction directives apply to all
56     access methods (<code>GET</code>, <code>PUT</code>,
57     <code>POST</code>, etc). This is the desired behavior in most
58     cases. However, it is possible to restrict some methods, while
59     leaving other methods unrestricted, by enclosing the directives
60     in a <code class="directive"><a href="../mod/core.html#limit">&lt;Limit&gt;</a></code> section.</p>
61 </div>
62 <div id="quickview"><h3 class="directives">Directives</h3>
63 <ul id="toc">
64 <li><img alt="" src="../images/down.gif" /> <a href="#allow">Allow</a></li>
65 <li><img alt="" src="../images/down.gif" /> <a href="#deny">Deny</a></li>
66 <li><img alt="" src="../images/down.gif" /> <a href="#order">Order</a></li>
67 </ul>
68 <h3>See also</h3>
69 <ul class="seealso">
70 <li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li>
71 <li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li>
72 </ul></div>
73
74 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
75 <div class="directive-section"><h2><a name="Allow" id="Allow">Allow</a> <a name="allow" id="allow">Directive</a></h2>
76 <table class="directive">
77 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Controls which hosts can access an area of the
78 server</td></tr>
79 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code> Allow from all|<var>host</var>|env=<var>env-variable</var>
80 [<var>host</var>|env=<var>env-variable</var>] ...</code></td></tr>
81 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
82 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Limit</td></tr>
83 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
84 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_host</td></tr>
85 </table>
86     <p>The <code class="directive">Allow</code> directive affects which hosts can
87     access an area of the server. Access can be controlled by
88     hostname, IP Address, IP Address range, or by other
89     characteristics of the client request captured in environment
90     variables.</p>
91
92     <p>The first argument to this directive is always
93     <code>from</code>. The subsequent arguments can take three
94     different forms. If <code>Allow from all</code> is specified, then
95     all hosts are allowed access, subject to the configuration of the
96     <code class="directive"><a href="#deny">Deny</a></code> and <code class="directive"><a href="#order">Order</a></code> directives as discussed
97     below. To allow only particular hosts or groups of hosts to access
98     the server, the <em>host</em> can be specified in any of the
99     following formats:</p>
100
101     <dl>
102       <dt>A (partial) domain-name</dt>
103
104       <dd>
105       <div class="example"><h3>Example:</h3><p><code>
106         Allow from apache.org<br />
107         Allow from .net example.edu
108       </code></p></div>
109       <p>Hosts whose names match, or end in, this string are allowed
110       access. Only complete components are matched, so the above
111       example will match <code>foo.apache.org</code> but it will not
112       match <code>fooapache.org</code>. This configuration will cause
113       Apache to perform a double reverse DNS lookup on the client IP
114       address, regardless of the setting of the <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code> directive.  It will do
115       a reverse DNS lookup on the IP address to find the associated
116       hostname, and then do a forward lookup on the hostname to assure
117       that it matches the original IP address.  Only if the forward
118       and reverse DNS are consistent and the hostname matches will
119       access be allowed.</p></dd>
120
121       <dt>A full IP address</dt>
122
123       <dd>
124       <div class="example"><h3>Example:</h3><p><code>
125         Allow from 10.1.2.3<br />
126         Allow from 192.168.1.104 192.168.1.205
127       </code></p></div>
128       <p>An IP address of a host allowed access</p></dd>
129
130       <dt>A partial IP address</dt>
131
132       <dd>
133       <div class="example"><h3>Example:</h3><p><code>
134         Allow from 10.1<br />
135         Allow from 10 172.20 192.168.2
136       </code></p></div>
137       <p>The first 1 to 3 bytes of an IP address, for subnet
138       restriction.</p></dd>
139
140       <dt>A network/netmask pair</dt>
141
142       <dd>
143       <div class="example"><h3>Example:</h3><p><code>
144         Allow from 10.1.0.0/255.255.0.0
145       </code></p></div>
146       <p>A network a.b.c.d, and a netmask w.x.y.z. For more
147       fine-grained subnet restriction.</p></dd>
148
149       <dt>A network/nnn CIDR specification</dt>
150
151       <dd>
152       <div class="example"><h3>Example:</h3><p><code>
153         Allow from 10.1.0.0/16
154       </code></p></div>
155       <p>Similar to the previous case, except the netmask consists of
156       nnn high-order 1 bits.</p></dd>
157     </dl>
158
159     <p>Note that the last three examples above match exactly the
160     same set of hosts.</p>
161
162     <p>IPv6 addresses and IPv6 subnets can be specified as shown
163     below:</p>
164
165     <div class="example"><p><code>
166        Allow from 2001:db8::a00:20ff:fea7:ccea<br />
167        Allow from 2001:db8::a00:20ff:fea7:ccea/10
168     </code></p></div>
169
170     <p>The third format of the arguments to the
171     <code class="directive">Allow</code> directive allows access to the server
172     to be controlled based on the existence of an <a href="../env.html">environment variable</a>. When <code>Allow from
173     env=<var>env-variable</var></code> is specified, then the request is
174     allowed access if the environment variable <var>env-variable</var>
175     exists. The server provides the ability to set environment
176     variables in a flexible way based on characteristics of the client
177     request using the directives provided by
178     <code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code>. Therefore, this directive can be
179     used to allow access based on such factors as the clients
180     <code>User-Agent</code> (browser type), <code>Referer</code>, or
181     other HTTP request header fields.</p>
182
183     <div class="example"><h3>Example:</h3><p><code>
184       SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in<br />
185       &lt;Directory /docroot&gt;<br />
186       <span class="indent">
187         Order Deny,Allow<br />
188         Deny from all<br />
189         Allow from env=let_me_in<br />
190       </span>
191       &lt;/Directory&gt;
192     </code></p></div>
193
194     <p>In this case, browsers with a user-agent string beginning
195     with <code>KnockKnock/2.0</code> will be allowed access, and all
196     others will be denied.</p>
197
198 </div>
199 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
200 <div class="directive-section"><h2><a name="Deny" id="Deny">Deny</a> <a name="deny" id="deny">Directive</a></h2>
201 <table class="directive">
202 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Controls which hosts are denied access to the
203 server</td></tr>
204 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code> Deny from all|<var>host</var>|env=<var>env-variable</var>
205 [<var>host</var>|env=<var>env-variable</var>] ...</code></td></tr>
206 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
207 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Limit</td></tr>
208 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
209 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_host</td></tr>
210 </table>
211     <p>This directive allows access to the server to be restricted
212     based on hostname, IP address, or environment variables. The
213     arguments for the <code class="directive">Deny</code> directive are
214     identical to the arguments for the <code class="directive"><a href="#allow">Allow</a></code> directive.</p>
215
216 </div>
217 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
218 <div class="directive-section"><h2><a name="Order" id="Order">Order</a> <a name="order" id="order">Directive</a></h2>
219 <table class="directive">
220 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Controls the default access state and the order in which
221 <code class="directive">Allow</code> and <code class="directive">Deny</code> are
222 evaluated.</td></tr>
223 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code> Order <var>ordering</var></code></td></tr>
224 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Order Deny,Allow</code></td></tr>
225 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr>
226 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Limit</td></tr>
227 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
228 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_host</td></tr>
229 </table>
230     <p>The <code class="directive">Order</code> directive controls the default
231     access state and the order in which <code class="directive"><a href="#allow">Allow</a></code> and <code class="directive"><a href="#deny">Deny</a></code> directives are evaluated.
232     <var>Ordering</var> is one of</p>
233
234     <dl>
235       <dt><code>Deny,Allow</code></dt>
236
237       <dd>The <code class="directive"><a href="#deny">Deny</a></code> directives
238       are evaluated before the <code class="directive"><a href="#allow">Allow</a></code> directives. Access is
239       allowed by default. Any client which does not match a
240       <code class="directive"><a href="#deny">Deny</a></code> directive or does
241       match an <code class="directive"><a href="#allow">Allow</a></code>
242       directive will be allowed access to the server.</dd>
243
244       <dt><code>Allow,Deny</code></dt>
245
246       <dd>The <code class="directive"><a href="#allow">Allow</a></code>
247       directives are evaluated before the <code class="directive"><a href="#deny">Deny</a></code> directives. Access is denied
248       by default. Any client which does not match an <code class="directive"><a href="#allow">Allow</a></code> directive or does match a
249       <code class="directive"><a href="#deny">Deny</a></code> directive will be
250       denied access to the server.</dd>
251
252       <dt><code>Mutual-failure</code></dt>
253
254       <dd>Only those hosts which appear on the <code class="directive"><a href="#allow">Allow</a></code> list and do not appear on
255       the <code class="directive"><a href="#deny">Deny</a></code> list are
256       granted access. This ordering has the same effect as <code>Order
257       Allow,Deny</code> and is deprecated in favor of that
258       configuration.</dd>
259     </dl>
260
261     <p>Keywords may only be separated by a comma; <em>no whitespace</em> is
262     allowed between them. Note that in all cases every <code class="directive"><a href="#allow">Allow</a></code> and <code class="directive"><a href="#deny">Deny</a></code> statement is evaluated.</p>
263
264     <p>In the following example, all hosts in the apache.org domain
265     are allowed access; all other hosts are denied access.</p>
266
267     <div class="example"><p><code>
268       Order Deny,Allow<br />
269       Deny from all<br />
270       Allow from apache.org
271     </code></p></div>
272
273     <p>In the next example, all hosts in the apache.org domain are
274     allowed access, except for the hosts which are in the
275     foo.apache.org subdomain, who are denied access. All hosts not
276     in the apache.org domain are denied access because the default
277     state is to deny access to the server.</p>
278
279     <div class="example"><p><code>
280       Order Allow,Deny<br />
281       Allow from apache.org<br />
282       Deny from foo.apache.org
283     </code></p></div>
284
285     <p>On the other hand, if the <code class="directive">Order</code> in the last
286     example is changed to <code>Deny,Allow</code>, all hosts will
287     be allowed access. This happens because, regardless of the
288     actual ordering of the directives in the configuration file,
289     the <code>Allow from apache.org</code> will be evaluated last
290     and will override the <code>Deny from foo.apache.org</code>.
291     All hosts not in the <code>apache.org</code> domain will also
292     be allowed access because the default state will change to
293     <em>allow</em>.</p>
294
295     <p>The presence of an <code class="directive">Order</code> directive can affect
296     access to a part of the server even in the absence of accompanying
297     <code class="directive"><a href="#allow">Allow</a></code> and <code class="directive"><a href="#deny">Deny</a></code> directives because of its effect
298     on the default access state. For example,</p>
299
300     <div class="example"><p><code>
301       &lt;Directory /www&gt;<br />
302       <span class="indent">
303         Order Allow,Deny<br />
304       </span>
305       &lt;/Directory&gt;
306     </code></p></div>
307
308     <p>will deny all access to the <code>/www</code> directory
309     because the default access state will be set to
310     <em>deny</em>.</p>
311
312     <p>The <code class="directive">Order</code> directive controls the order of access
313     directive processing only within each phase of the server's
314     configuration processing. This implies, for example, that an
315     <code class="directive"><a href="#allow">Allow</a></code> or <code class="directive"><a href="#deny">Deny</a></code> directive occurring in a
316     <code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code> section will
317     always be evaluated after an <code class="directive"><a href="#allow">Allow</a></code> or <code class="directive"><a href="#deny">Deny</a></code> directive occurring in a
318     <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> section or
319     <code>.htaccess</code> file, regardless of the setting of the
320     <code class="directive">Order</code> directive. For details on the merging
321     of configuration sections, see the documentation on <a href="../sections.html">How Directory, Location and Files sections
322     work</a>.</p>
323
324 </div>
325 </div>
326 <div class="bottomlang">
327 <p><span>Available Languages: </span><a href="../en/mod/mod_authz_host.html" title="English">&nbsp;en&nbsp;</a> |
328 <a href="../ja/mod/mod_authz_host.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
329 <a href="../ko/mod/mod_authz_host.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
330 </div><div id="footer">
331 <p class="apache">Copyright 1995-2005 The Apache Software Foundation or its licensors, as applicable.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
332 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
333 </body></html>