<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>Apache module mod_access</title>
</head>
<!-- English revision: 1.26 -->

<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<body
 bgcolor="#FFFFFF"
 text="#000000"
 link="#0000FF"
 vlink="#000080"
 alink="#FF0000"
>
    <div align="CENTER">
      <img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]" /> 

      <h3>Apache HTTP Server Version 1.3</h3>
    </div>


<h1 align="CENTER">mod_access モジュール</h1>
<p>
このモジュールはクライアントのホスト名、IP アドレス、その他のクライアントの
リクエストの特徴に基づいたアクセス制御機能を提供します。</p>

<p><a
href="module-dict.html#Status"
rel="Help"
><strong>ステータス:</strong></a> Base
<br>
<a
href="module-dict.html#SourceFile"
rel="Help"
><strong>ソースファイル:</strong></a> mod_access.c
<br>
<a
href="module-dict.html#ModuleIdentifier"
rel="Help"
><strong>モジュール識別子:</strong></a> access_module
</p>

<h2>概要</h2>

<p>mod_access により提供されるディレクティブはサーバの特定の部分への
アクセスを制御するために <code><a
href="core.html#directory">&lt;Directory&gt;</a>, <a
href="core.html#files">&lt;Files&gt;</a></code>, <code><a
href="core.html#location">&lt;Location&gt;</a></code> と
<code><a href="core.html#accessfilename">.htaccess</a></code> ファイルで
使用されます。クライアントのホスト名、IP アドレスや
<a href="../env.html">環境変数</a>として取得された、その他のリクエストの
特徴に基づいてアクセス制御を行なうことができます。<code>Allow</code> と
<code>Deny</code> ディレクティブはどのようなクライアントにアクセスを
許可する、しないかを指定するために使用されます。
一方、<code>Order</code> ディレクティブは
デフォルトのアクセス状態と、<code>Allow</code> ディレクティブと
<code>Deny</code> ディレクティブとのお互いへの影響の仕方を
設定します。</p>

<p>ホストによるアクセス制限とパスワードによる認証を同時に行なうことが
可能です。その場合、その二つの制限の関係を指定するために
<a href="core.html#satisfy">Satisfy</a> ディレクティブを使用します。</p>

<p>一般的には、アクセス制限ディレクティブはすべてのアクセスメソッド
(<code>GET</code>, <code>PUT</code>, <code>POST</code> など) に
適用されます。そして、ほとんどの場合これが望ましい動作です。
しかし、<a href="core.html#limit">&lt;Limit&gt;</a>
セクションの中にディレクティブを書くことで、
一部のメソッドにのみ制限をかけることもできます。</p>

<h2>ディレクティブ</h2>

<ul>
<li><a href="#allow">Allow</a>
<li><a href="#deny">Deny</a>
<li><a href="#order">Order</a>
</ul>

<p><a href="core.html#satisfy">Satisfy</a>
    と <a href="core.html#require">Require</a> も参照してください。</p>
<hr>


<h2><a name="allow">Allow</a> <a name="allowfromenv">ディレクティブ</a></h2>
<p>
<!--%plaintext &lt;?INDEX {\tt Allow} directive&gt; -->
<a
 href="directive-dict.html#Syntax"
 rel="Help"
><strong>構文:</strong></a> Allow from 
   all|<EM>host</em>|env=<em>variablename</em> 
   [<em>host</em>|env=<em>variablename</em>] ...<br>
<a
 href="directive-dict.html#Context"
 rel="Help"
><strong>コンテキスト:</strong></a> ディレクトリ、.htaccess<br>
<a
 href="directive-dict.html#Override"
 rel="Help"
><strong>上書き:</strong></a> Limit<br>
<a
 href="directive-dict.html#Status"
 rel="Help"
><strong>ステータス:</strong></a> Base<br>
<a
 href="directive-dict.html#Module"
 rel="Help"
><strong>モジュール:</strong></a> mod_access
</p>

<p>
<code>Allow</code> ディレクティブはどのホストがサーバのある領域を
アクセスできるかに影響を与えます。アクセスはホスト名、
IP アドレス、IP アドレスの範囲や、環境変数として取得された、その他の
クライアントのリクエストの特徴によって制御することができます。</p> 

<p>このディレクティブの最初の引数は常に <code>from</code> です。
それに続く引数は三つの違った形式があります。<code>Allow from all</code> が
指定されていれば、すべてのホストにアクセスを許可し、アクセス制限は
下で説明されているように、<code>Deny</code> ディレクティブと
<code>Order</code> ディレクティブの
設定で決まります。特定のホストやホスト群にのみ
サーバへのアクセスを許可するためには、以下のどれかの形式で
<em>host</em> を指定することができます:</p>
<dl>

<dt>ドメイン名 (の一部)</dt> <dd>例: <code>Allow from apache.org</code><br>
この文字列に合うか、これで終わる名前のホストのアクセスが許可されます。
各部分が完全に合うものだけに適用されますので、上の例は <code>foo.apache.org</code>
にはマッチしますが、<code>fooapache.org</code> にはマッチしません。
この設定をすると、サーバは <a
href="core.html#hostnamelookups">HostNameLookups</a> の
設定に関わらず、クライアントの IP アドレスに対して DNS の逆引きを行ないます。</dd>

<dt>完全な IP アドレス</dt>
<dd>例: <code>Allow from 10.1.2.3</code><br>
アクセスを許可する IP アドレスです。</dd>

<dt>IP アドレスの一部</dt>
<dd>例: <code>Allow from 10.1</code><br>
サブネットの制限用の、IP アドレスの最初の一つから三つまでの
バイトです。</dd>

<dt>ネットワーク/ネットマスク の対</dt>
<dd>例: <code>Allow from 10.1.0.0/255.255.0.0</code><br>
ネットワーク a.b.c.d とネットマスク w.x.y.z です。より細粒度のサブネット
制限用です。(Apache 1.3 以降)</dd>

<dt>ネットワーク/nnn CIDR 指定</dt>
<dd>例: <code>Allow from 10.1.0.0/16</code><br>
ネットマスクが nnn の上位ビットが 1 となっているものからなること以外は
前のものと同じです。(Apache 1.3 以降)</dd>
</dl>

<p>注: 最後の三つの例はまったく同じホストに合います。</p>

<p><code>Allow</code> ディレクティブの引数の三つ目の形式は、
<a href="../env.html">環境変数</a> の存在によりアクセスの制御を
行なえるようにするものです。<code>Allow from env=</code><em>variablename</em>
が指定されていると、環境変数 <em>variablename</em> が存在した場合に
リクエストはアクセスを許可されます。サーバは <a
href="mod_setenvif.html">mod_setenvif</a> のディレクティブにより、
クライアントのリクエストの特徴に基づいて柔軟に環境変数を設定する
機能を提供します。ですから、このディレクティブはクライアントの
<code>User-Agent</code> (ブラウザの種類)、<code>Referer</code> や
他の HTTP リクエストのヘッダフィールドなどに基づいてアクセス許可を
するために使うことができます。</p>

<p>
例:
</p>
<blockquote><pre>
SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in
&lt;Directory /docroot&gt;
    Order Deny,Allow
    Deny from all
    Allow from env=let_me_in
&lt;/Directory&gt;
</pre></blockquote>

<p>この場合、user-agent の文字列が <tt>KnockKnock/2.0</tt> で始まる
ブラウザのみがアクセスを許可され、他のものはアクセスを拒否されます。</p>

<p>
<a href="#deny">Deny</a>, <a href="#order">Order</a>,
<a href="mod_setenvif.html#SetEnvIf">SetEnvIf</a>
ディレクティブも参照してください。
</p>
<hr>

<h2><a name="deny">Deny</a> <a name="denyfromenv">ディレクティブ</a></h2>
<p>
<!--%plaintext &lt;?INDEX {\tt Deny} directive&gt; -->
<a
 href="directive-dict.html#Syntax"
 rel="Help"
><strong>構文:</strong></a> Deny from 
   all|<em>host</em>|env=<em>variablename</em> 
   [<em>host</em>|env=<em>variablename</em>] ...<br>
<a
 href="directive-dict.html#Context"
 rel="Help"
><strong>コンテキスト:</strong></a> ディレクトリ、.htaccess<br>
<a
 href="directive-dict.html#Override"
 rel="Help"
><strong>上書き:</strong></a> Limit<br>
<a
 href="directive-dict.html#Status"
 rel="Help"
><strong>ステータス:</strong></a> Base<br>
<a
 href="directive-dict.html#Module"
 rel="Help"
><strong>モジュール:</strong></a> mod_access
</p>

<p>このディレクティブはホスト名、IP アドレス、環境変数に
基づいてサーバへのアクセスを制限します。<code>Deny</code> ディレクティブ
の引数は <a href="#allow">Allow</a> ディレクティブとまったく同じです。</p>

<p><a href="#allow">Allow</a>, <a href="#order">Order</a>,
<a href="mod_setenvif.html#SetEnvIf">SetEnvIf</a> も参照してください。</p>
<hr>

<h2><a name="order">Order ディレクティブ</a></h2>
<p>
<!--%plaintext &lt;?INDEX {\tt Order} directive&gt; -->
<a
 href="directive-dict.html#Syntax"
 rel="Help"
><strong>構文:</strong></a> Order <em>ordering</em><br>
<a
 href="directive-dict.html#Default"
 rel="Help"
><strong>デフォルト:</strong></a> <code>Order Deny,Allow</code><br>
<a
 href="directive-dict.html#Context"
 rel="Help"
><strong>コンテキスト:</strong></a> ディレクトリ、.htaccess<br>
<a
 href="directive-dict.html#Override"
 rel="Help"
><strong>上書き:</strong></a> Limit<br>
<a
 href="directive-dict.html#Status"
 rel="Help"
><strong>ステータス:</strong></a> Base<br>
<a
 href="directive-dict.html#Module"
 rel="Help"
><strong>モジュール:</strong></a> mod_access
</p>
<p>
<code>Order</code> ディレクティブはデフォルトのアクセスの状態と
<a href="#allow">Allow</a> ディレクティブと
<a href="#deny">Deny</a> ディレクティブが評価される順番を制御します。
<em>Ordering</em> は以下のどれかです。
</p>
<dl>
<dt>Deny,Allow</dt> <dd><code>Deny</code> ディレクティブが <code>Allow</code>
ディレクティブの前に評価されます。アクセスはデフォルトで許可されます。
<code>Deny</code> ディレクティブに合わないか、<code>Allow</code>
ディレクティブに合うクライアントはアクセスを許可されます。</dd>

<dt>Allow,Deny</dt> <dd><code>Allow</code> ディレクティブが <code>Deny</code>
ディレクティブの前に評価されます。アクセスはデフォルトで拒否されます。
<code>Allow</code> ディレクティブに合わないか、<code>Deny</code>
ディレクティブに合うクライアントはアクセスを拒否されます。</dd>

<dt>Mutual-failure</dt> <dd><code>Allow</code> のリストに現れて、
<code>Deny</code> のリストに現れないホストのみがアクセスを許可されます。
この順番付けは <code>Order Allow,Deny</code> と同じ効果を持ち、
その設定の方が好ましいために非推奨となっています。</dd>
</dl>

<p>
キーワードはコンマで分離することだけが可能です。間に空白があっては
いけません。どの場合でも、<code>Allow</code> と <code>Deny</code> 文は
全て評価されるということに注意してください。</p>

<p>以下の例では、apache.org ドメインのすべてのホストはアクセスを
許可されます。他のすべてのホストはアクセスを拒否されます。
</p>

<blockquote><code>
    Order Deny,Allow<br>
    Deny from all<br>
    Allow from apache.org<br>
</code></blockquote>

<p>次の例では、foo.apache.org サブドメインにあるホスト以外の、
apache.org ドメインのすべてのホストがアクセスを許可されます。
apache.org ドメインでないホストは、デフォルトの状態がアクセス拒否のため、
サーバへのアクセスを拒否されます。
</p>

<blockquote><code>
    Order Allow,Deny<br>
    Allow from apache.org<br>
    Deny from foo.apache.org<br>
</code></blockquote>

<p>一方、上の例の <code>Order</code> が <code>Deny,Allow</code> に
変わっていれば、すべのホストにアクセスが許可されます。
これは、設定ファイル中の実際の順番に関わらず、
<code>Allow from apache.org</code> が最後に評価されて、
<code>Deny from foo.apache.org</code> を上書きするからです。
<code>apache.org</code> ドメインにないホストも、デフォルトの
状態が <em>allow</em> に変化するために、アクセスを許可されます。</p>

<p><code>Order</code> ディレクティブはデフォルトのアクセスの状態に
影響を与えるので、<code>Allow</code> ディレクティブと <code>Deny</code>
ディレクティブが無くても、サーバのアクセスに影響を与えることができます。
たとえば、</p>

<blockquote><code>
&lt;Directory /www&gt;<br>
&nbsp;&nbsp;Order Allow,Deny<br>
&lt;/Directory&gt;
</code></blockquote>

<p>はデフォルトのアクセス状態が <em>deny</em> になるため、<code>/www</code>
ディレクトリへのすべてのアクセスを拒否します。</p>

<p><code>Order</code> ディレクティブはサーバの設定処理の各段階でだけ
アクセスディレクティブの処理の順番を変更します。これは、たとえば、
<code>Order</code> ディレクティブの設定に関わらず、
&lt;Location&gt; セクションの <code>Allow</code> ディレクティブや
<code>Deny</code> ディレクティブは、&lt;Directory&gt; セクションや
<code>.htaccess</code> ファイル
の <code>Allow</code> ディレクティブや <code>Deny</code> ディレクティブ
よりも常に後に評価されるということを意味します。
設定セクションのマージの詳細については、<a href="../sections.html">Directory,
Location, Files セクションの動作方法</a> を参照してください。</p>


<p><a href="#deny">Deny</a> と <a href="#allow">Allow</a> も参照してください。</p>
    <hr />

    <h3 align="CENTER">Apache HTTP Server Version 1.3</h3>
    <a href="./"><img src="../images/index.gif" alt="Index" /></a>
    <a href="../"><img src="../images/home.gif" alt="Home" /></a>

</body>
</html>
