サーバ全体の設定

このドキュメントではコアサーバの ディレクティブの中で、基本動作を設定するためのものを説明します。


サーバ ID

関連ディレクティブ

ServerName
ServerAdmin
ServerSignature
ServerTokens
UseCanonicalName

ServerAdmin ディレクティブと ServerTokens ディレクティブは、エラーメッセージなどのサーバが作るドキュメントに、 どのようなサーバの情報を表示するかを制御します。ServerTokens ディレクティブは、Server HTTP レスポンスヘッダフィールドの値を 設定します。

ServerName ディレクティブと UseCanonicalName ディレクティブは、サーバが自分自身を参照する URL を作るときに 使われます。たとえば、クライアントがディレクトリを要求して、 そのディレクトリ名の最後にスラッシュが付いていないような場合には、 ドキュメントの相対的な参照を正しく解決できるようにするために、 Apache は最後のスラッシュを含んだ完全なパスにクライアントを リダイレクトさせる必要があります。


ファイルの位置

関連ディレクティブ

CoreDumpDirectory
DocumentRoot
ErrorLog
Lockfile
PidFile
ScoreBoardFile
ServerRoot

これらのディレクティブは Apache が適切な動作をするために必要な 各種ファイルの位置を制御します。パスがスラッシュ "/" で始まっていない ときは、ファイルは ServerRoot からの相対パスとして 探されます。root 以外のユーザが書き込み可能なパスにファイルを 置く場合は注意が必要です。詳細は「セキュリティ情報」を 参照してください。


プロセス生成

関連ディレクティブ

BS2000Account
Group
MaxClients
MaxRequestsPerChild
MaxSpareServers
MinSpareServers
ServerType
StartServers
ThreadsPerChild
User

ServerType に推奨されている値である Standalone が設定されている場合は、Unix 上での Apache は pre-forking サーバです。 そこでは一つの制御用プロセスが子プロセスを起動する責任を持ちます。 そして、子プロセスはプロセスが生存している間 listen し、接続されたらそのコネクションに対する処理を行ないます。 Apache はリクエストが来たときにすぐに応答できるように、 常に複数のスペアサーバプロセス、またはアイドルサーバプロセスを維持しようと します。こうすることで、リクエストが扱われる前に新しい子プロセスが fork されるのをクライアントが待つ必要がなくなります。

StartServers, MinSpareServers, MaxSpareServers, MaxServers は、 親プロセスがリクエストを扱うことになる子プロセスを作成する方法を制御します。 通常、Apache は非常に自制的ですので、ほとんどのサイトでは デフォルト値から変更する必要はありません。ただ、同時に 256 を超える リクエストを扱うサイトは MaxClients を増やす必要があるでしょう。 一方、メモリの少ないサイトでは、サーバがスラッシング (メモリをディスクに スワップしたり、メモリに戻したりするのを繰り返す) を防ぐために MaxClients を減らす必要があるでしょう。プロセス作成をチューンするための詳しい情報は 性能の情報ドキュメントを 参照してください。

Unix では通常、親プロセスは 80 番ポートをバインドするために root で 起動されますが、子プロセスは Apache からより特権の少ないユーザとして 起動されます。User ディレクティブと Group ディレクティブは、Apache の子プロセスに設定される特権を設定するために 使用されます。子プロセスは提供するすべてのコンテンツを読めなければ いけませんが、それ以上の特権は少なければ少ない方が望ましいです。 また、suexec が使用されていないと、 CGI スクリプトが継承する特権にもこれらのディレクティブの設定が適用されます。

MaxRequestsPerChild は、サーバが古いプロセスを kill して 新しいプロセスを起動することで、プロセスを再利用する頻度を設定します。

Windows では、Apache は制御プロセス一つと子プロセス一つで スタートします。子プロセスはリクエストに応えるために複数のスレッドを 作成します。スレッドの数は ThreadsPerChild ディレクティブで 制御します。


ネットワーク設定

関連ディレクティブ

BindAddress
KeepAlive
KeepAliveTimeout
Listen
ListenBackLog
MaxKeepAliveRequests
Port
SendBufferSize
TimeOut

Apache は起動すると、ローカルマシンの何らかのポート番号とアドレスに コネクトし、リクエストを待ちます。デフォルトでは、マシンに 割り当てられているすべてのアドレスでサーバ設定の Port ディレクティブで指定されているポート番号を listen します。 二つ以上のポートを listen したり、選択されたアドレスのみを listen したり、 その組み合わせを listen したりするようにもできます。 違う IP アドレス、ホスト名、ポート番号によって Apache の応答を 決定するバーチャルホスト機能と組み合わせて 使われることがよくあります。

Apache が listen するアドレスとポート番号を指定、もしくは制限する ディレクティブは二つあります。BindAddress ディレクティブは サーバが一つの IP アドレスだけを listen させるために使用されます。 Listen ディレクティブは Apache が listen する IP アドレスと ポート番号の組、またはどちらか一方を複数指定するために使用されます。

ListenBackLog ディレクティブ、SendBufferSize ディレクティブ、TimeOut ディレクティブは、Apache と ネットワークとの関係を調整します。

KeepAlive ディレクティブ、KeepAliveTimeout ディレクティブ、MaxKeepAliveRequests ディレクティブは、 Apache が persistent connection をどのように扱うかを制御します。


リソースの制限

関連ディレクティブ

LimitRequestBody
LimitRequestFields
LimitRequestFieldsize
LimitRequestLine
RLimitCPU
RLimitMEM
RLimitNPROC
ThreadStackSize

LimitRequest* ディレクティブは Apache が クライアントからのリクエスト読み込みで使うリソースを制限するために 使われます。これらの値を制限することで、いくつかのサービス拒否攻撃は 影響を和らげることができます。

RLimit* ディレクティブは、Apache の子プロセスから fork されたプロセスが使用するリソースを制限するために 使われます。特に、これは CGI スクリプトと SSI exec コマンドで 使われるリソースを制御します。

ThreadStackSize は Netware でのみ、スタックの大きさを 制御するために使われます。