このドキュメントではコアサーバの ディレクティブの中で、基本動作を設定するためのものを説明します。
関連ディレクティブ 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 でのみ、スタックの大きさを
制御するために使われます。