Apache の動作を制御する httpd.conf ファイルは、ディレクティブと呼ばれる動作指定子で構成されている。
ここでは Red Hat Linux ES3 に添付されている Apache 2.0 の 主なディレクティブを取り上げる。
インストール直後の httpd.conf は 1000 行以上のボリュームがあり、3 つのセクションで構成されている。
セクション | 位置 (行) | 設定内容 |
Section 1: Global Environment | 32〜219 | 全体の動作に関する設定 |
Section 2: 'Main' server configuration | 220〜1006 | メインサーバに関する設定 |
Section 3: Virtual Hosts | 1007〜1038 | 仮想サーバに関する設定 |
Apacheでは、Section 3: Virtual Hosts で扱われる仮想サーバーに対して、それ以外の Web サーバーの事をメインサーバと呼ぶ。
メインサーバーにはサーバー管理者が運用する web サーバー (通常 http://
www.DomainName/ に対応し、ディレクトリ /var/www/html が割り当てられる) と、
一般ユーザーに開放している http://
DomainName/~
UserName が含まれる。
ディレクティブには制御を記述するディレクティブの外に、ディレクティブを特定の条件でまとめるための
ブロック ディレクティブがある。
【 default の値について 】
以降の記述中にある default の値は、httpd-2.0.46-25.ent.i386.rpm インストール時に生成される
サンプルの httpd.conf の値を標記した。
各種ディレクティブの適用を、特定の条件の範囲内に限定する。
特定の条件には、指定モジュールの有無、ディレクトリ、ファイル、URL、バーチャルホスト等がある。
ブロック ディレクティブは以下の様式で記述する。
<ブロック ディレクティブ名>
・・・・ 各種ディレクティブ ・・・・
</ブロック ディレクティブ名>
- ブロック ディレクティブには開始と終了がある。
- <ブロック ディレクティブ名>でブロックの開始、</ブロック ディレクティブ名>でブロックの終了を宣言する。
- 各種ディレクティブを開始と終了で囲んでブロック化し、ブロック ディレクティブの条件内で適用する。
<IfModule [!]ModuleName>
・・・・
</IfModule>
- ModuleName で指定したモジュールが導入済みか、AddModule ディレクティブで動的に読み込まれた場合にブロック内が有効となる。
- ModuleName で指定するモジュール名はモジュールのソースファイル名で行う。
- ModuleName の先頭に"!"を付加すると、指定モジュールが未導入または読み込みが行われなかった場合に、ブロック内が有効になる。
<VirtualHost Host[:port]>
・・・・
</VirtualHost>
- バーチャル ホストを運用する際、当該バーチャル ホストに適用するディレクティブをブロック化する。
- Host にはバーチャル ホストの URL や IP アドレスを指定する。
- port を省略した場合、標準ポートの 80 番か、Listen ディレクティブで指定したポートが使われる。
<Directory DirectoryName>
・・・・
</Directory>
- ブロック内のディレクティブの適用を、DirectoryName で指定したディレクトリ内に制限する。
- DirectoryName は絶対ディレクトリで記述する。
- DirectoryName の指定にはワイルドカードを使うことができる。
- DirectoryName の前にチルダ (~) を置いた場合、 DirectoryName には正規表現を含むことができる。
- <DirectoryMatch DirectoryName> は DirectoryName の指定に正規表現を使える。
- <Directory ~ DirectoryName> と <DirectoryMatch DirectoryName> は同じ機能である。
<Files FileName>
・・・・
</Files>
- ブロック内のディレクティブの適用を、FileName で指定したファイルに制限する。
- FileName は、DocumentRoot を基準としたパス名で指定する。
- FileName の前にチルダ (~) を置いた場合、 FileName にはワイルドカードや正規表現を含むことができる。
- <FilesMatch FileName> は FileName の指定にワイルドカードや正規表現を用いることができる。
- <Files ~ FileName> と <FilesMatch FileName> は同じ機能である。
<Location URL>
・・・・
</Location>
- ブロック内のディレクティブの適用を、URL で指定された URL に制限する。
- URL の前にチルダ (~) を置いた場合、 URL にはワイルドカードや正規表現を含むことができる。
- <LocationMatch URL> は URL の指定にワイルドカードや正規表現を用いることができる。
- <Location ~ URL> と <LocationMatch URL> は同じ機能である。
<Limit MethodList>
・・・・
</Limit>
- ブロック内部に記述されたディレクティブの適用を、MethodList で指定された HTTP メソッドだけに限定する。
- 指定可能な HTTP メソッドは以下の通り。
<Directory>, <Files>, <Location> の 3 つのブロック ディレクティブは、次の順位で優先度が決められている。
優先度 | ブロック ディレクティブ |
低 | <Directory> |
中 | <Files> |
高 | <Location> |
同一ディレクティブの記述が上記ブロック ディレクティブ相互で重複していた場合、優先度の高い方が適用される。