このドキュメントではコアサーバの ディレクティブの中で、基本動作を設定するためのものを説明します。
関連ディレクティブ 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 AcceptFilter AcceptMutex 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 と
ネットワークとの関係を調整します。AcceptFilter
は BSD 特有のフィルタの最適化を制御します。
性能に関するヒントの BSD の節を
見てください。AcceptMutex
はどのように accept 時の
排他制御を行なうかを制御します。これが一体何で、なぜ必要であるかは、
一般的な性能に関するヒント
を見てください。
KeepAlive
ディレクティブ、KeepAliveTimeout
ディレクティブ、MaxKeepAliveRequests
ディレクティブは、
Apache が persistent connection をどのように扱うかを制御します。
関連ディレクティブ LimitRequestBody LimitRequestFields LimitRequestFieldsize LimitRequestLine RLimitCPU RLimitMEM RLimitNPROC ThreadStackSize |
LimitRequest
* ディレクティブは Apache が
クライアントからのリクエスト読み込みで使うリソースを制限するために
使われます。これらの値を制限することで、いくつかのサービス拒否攻撃の
影響を和らげることができます。
RLimit
* ディレクティブは、Apache の子プロセスから
fork されたプロセスが使用するリソースを制限するために
使われます。特に、これは CGI スクリプトと SSI exec コマンドで
使われるリソースを制御します。
ThreadStackSize
は Netware でのみ、
スタックの大きさを制御するために使われます。