このモジュールはクライアントのホスト名、IP アドレス、その他のクライアントの リクエストの特徴に基づいたアクセス制御機能を提供します。
ステータス: Base
ソースファイル: mod_access.c
モジュール識別子: access_module
mod_access により提供されるディレクティブはサーバの特定の部分への
アクセスを制御するために <Directory>, <Files>
, <Location>
と
.htaccess
ファイルで
使用されます。クライアントのホスト名、IP アドレスや
環境変数として取得された、その他のリクエストの
特徴に基づいてアクセス制御を行なうことができます。Allow
と
Deny
ディレクティブはどのようなクライアントにアクセスを
許可する、しないかを指定するために使用されます。
一方、Order
ディレクティブは
デフォルトのアクセス状態と、Allow
ディレクティブと
Deny
ディレクティブとのお互いへの影響の仕方を
設定します。
ホストによるアクセス制限とパスワードによる認証を同時に行なうことが 可能です。その場合、その二つの制限の関係を指定するために Satisfy ディレクティブを使用します。
一般的には、アクセス制限ディレクティブはすべてのアクセスメソッド
(GET
, PUT
, POST
など) に
適用されます。そして、ほとんどの場合これが望ましい動作です。
しかし、<Limit>
セクションの中にディレクティブを書くことで、
一部のメソッドにのみ制限をかけることもできます。
構文: Allow from
all|host|env=variablename
[host|env=variablename] ...
コンテキスト: ディレクトリ、.htaccess
上書き: Limit
ステータス: Base
モジュール: mod_access
Allow
ディレクティブはどのホストがサーバのある領域を
アクセスできるかに影響を与えます。アクセスはホスト名、
IP アドレス、IP アドレスの範囲や、環境変数として取得された、その他の
クライアントのリクエストの特徴によって制御することができます。
このディレクティブの最初の引数は常に from
です。
それに続く引数は三つの違った形式があります。Allow from all
が
指定されていれば、すべてのホストにアクセスを許可し、アクセス制限は
下で説明されているように、Deny
ディレクティブと
Order
ディレクティブの
設定で決まります。特定のホストやホスト群にのみ
サーバへのアクセスを許可するためには、以下のどれかの形式で
host を指定することができます:
Allow from apache.org
foo.apache.org
にはマッチしますが、fooapache.org
にはマッチしません。
この設定をすると、サーバは HostNameLookups の
設定に関わらず、クライアントの IP アドレスに対して DNS の逆引きを行ないます。Allow from 10.1.2.3
Allow from 10.1
Allow from 10.1.0.0/255.255.0.0
Allow from 10.1.0.0/16
注: 最後の三つの例はまったく同じホストに合います。
Allow
ディレクティブの引数の三つ目の形式は、
環境変数 の存在によりアクセスの制御を
行なえるようにするものです。Allow from env=
variablename
が指定されていると、環境変数 variablename が存在した場合に
リクエストはアクセスを許可されます。サーバは mod_setenvif のディレクティブにより、
クライアントのリクエストの特徴に基づいて柔軟に環境変数を設定する
機能を提供します。ですから、このディレクティブはクライアントの
User-Agent
(ブラウザの種類)、Referer
や
他の HTTP リクエストのヘッダフィールドなどに基づいてアクセス許可を
するために使うことができます。
例:
SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in <Directory /docroot> Order Deny,Allow Deny from all Allow from env=let_me_in </Directory>
この場合、user-agent の文字列が KnockKnock/2.0 で始まる ブラウザのみがアクセスを許可され、他のものはアクセスを拒否されます。
Deny, Order, SetEnvIf ディレクティブも参照してください。
構文: Deny from
all|host|env=variablename
[host|env=variablename] ...
コンテキスト: ディレクトリ、.htaccess
上書き: Limit
ステータス: Base
モジュール: mod_access
このディレクティブはホスト名、IP アドレス、環境変数に
基づいてサーバへのアクセスを制限します。Deny
ディレクティブ
の引数は Allow ディレクティブとまったく同じです。
Allow, Order, SetEnvIf も参照してください。
構文: Order ordering
デフォルト: Order Deny,Allow
コンテキスト: ディレクトリ、.htaccess
上書き: Limit
ステータス: Base
モジュール: mod_access
Order
ディレクティブはデフォルトのアクセスの状態と
Allow ディレクティブと
Deny ディレクティブが評価される順番を制御します。
Ordering は以下のどれかです。
Deny
ディレクティブが Allow
ディレクティブの前に評価されます。アクセスはデフォルトで許可されます。
Deny
ディレクティブに合わないか、Allow
ディレクティブに合うクライアントはアクセスを許可されます。Allow
ディレクティブが Deny
ディレクティブの前に評価されます。アクセスはデフォルトで拒否されます。
Allow
ディレクティブに合わないか、Deny
ディレクティブに合うクライアントはアクセスを拒否されます。Allow
のリストに現れて、
Deny
のリストに現れないホストのみがアクセスを許可されます。
この順番付けは Order Allow,Deny
と同じ効果を持ち、
その設定の方が好ましいために非推奨となっています。
キーワードはコンマで分離することだけが可能です。間に空白があっては
いけません。どの場合でも、Allow
と Deny
文は
全て評価されるということに注意してください。
以下の例では、apache.org ドメインのすべてのホストはアクセスを 許可されます。他のすべてのホストはアクセスを拒否されます。
Order Deny,Allow
Deny from all
Allow from apache.org
次の例では、foo.apache.org サブドメインにあるホスト以外の、 apache.org ドメインのすべてのホストがアクセスを許可されます。 apache.org ドメインでないホストは、デフォルトの状態がアクセス拒否のため、 サーバへのアクセスを拒否されます。
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
一方、上の例の Order
が Deny,Allow
に
変わっていれば、すべのホストにアクセスが許可されます。
これは、設定ファイル中の実際の順番に関わらず、
Allow from apache.org
が最後に評価されて、
Deny from foo.apache.org
を上書きするからです。
apache.org
ドメインにないホストも、デフォルトの
状態が allow に変化するために、アクセスを許可されます。
Order
ディレクティブはデフォルトのアクセスの状態に
影響を与えるので、Allow
ディレクティブと Deny
ディレクティブが無くても、サーバのアクセスに影響を与えることができます。
たとえば、
<Directory /www>
Order Allow,Deny
</Directory>
はデフォルトのアクセス状態が deny になるため、/www
ディレクトリへのすべてのアクセスを拒否します。
Order
ディレクティブはサーバの設定処理の各段階でだけ
アクセスディレクティブの処理の順番を変更します。これは、たとえば、
Order
ディレクティブの設定に関わらず、
<Location> セクションの Allow
ディレクティブや
Deny
ディレクティブは、<Directory> セクションや
.htaccess
ファイル
の Allow
ディレクティブや Deny
ディレクティブ
よりも常に後に評価されるということを意味します。
設定セクションのマージの詳細については、Directory,
Location, Files セクションの動作方法 を参照してください。