このディレクティブは実際のファイル名 (もしくは存在するディレクトリの
存在しないファイル) の後に続くパス名情報があるリクエストを受け付けるか
拒否するかを制御します。続きのパス名情報はスクリプトには PATH_INFO
環境変数として利用可能になります。
例えば、/test/ が、here.html というファイル
一つのみがあるディレクトリを指しているとします。そうすると、
/test/here.html/more と /test/nothere.html/more
へのリクエストは両方とも /more を PATH_INFO とします。
Off/test/here.html/more のように、本当のファイル名の
後にパス名情報が続くリクエストには 404 NOT FOUND エラーが返ります。On/test/here.html/more
は /test/here.html が有効なファイルにマップすれば
受け付けられます。DefaultPATH_INFO を拒否します。
cgi-script や isapi-isa のようにスクリプトを扱うハンドラは
一般的にデフォルトで PATH_INFO を受け付けます。AcceptPathInfo の主な目的はハンドラの PATH_INFO を
受け付けるか拒否するかの選択を上書きできるようにすることです。
例えば、これは例えば INCLUDES のような
フィルタを使って PATH_INFO に
基づいてコンテンツを生成しているときに必要になります。
リクエストを処理するとき、サーバはディレクトリに 対して分散設定ファイルが有効になっていれば、 そのドキュメントへの パス上にある全てのディレクトリから、ここで指定された名前の一覧の中で 最初に見つかったファイルをそれぞれ設定ファイルとして読み込みます。例えば:
という設定があると、以下のようにして無効にされていない限り、
ドキュメント /usr/local/web/index.html
を返す前に、サーバは /.acl, /usr/.acl,
/usr/local/.acl, /usr/local/web/.acl から
ディレクティブを読み込みます。
このディレクティブは、HTTP ヘッダにコンテントタイプパラメータを
持たない応答に追加される文字セットの名前を指定します。
これは、ドキュメント内の META タグで指定されたどのような文字セット
も無効にします。
AddDefaultCharset Off という設定により、この機能は無効になります。
AddDefaultCharset On にすれば、ディレクティブの要求通り
Apache 内部のデフォルト文字セット iso-8859-1 に設定します。
また、他の charset も指定できます。例えば:
このディレクティブは応答の MIME-type に応じて出力フィルタを使用するようにします。
次の例は DEFLATE フィルタを
使っています。text/html と text/plain の
すべての出力 (静的なものも動的なものも) をクライアントに送られる前に
圧縮します。
複数のフィルタでコンテンツを処理させたいときは、それぞれの名前をセミコロンで
分ける必要があります。各フィルタに対して
次の例は text/html のスクリプトのすべての出力を
まず INCLUDES フィルタで処理し、さらに DEFLATE フィルタにかけます。
しかし、確実にフィルタが適用されるようにしたいときは、リソースに
明示的にコンテントタイプを割り当てることができます。これには例えば
タイプ毎の出力フィルタはプロキシリクエストには決して適用されません。
/ は %2F、さらにシステムによっては
\ に対応する %5C) が存在する URL の使用を
許可するかどうかを決定します。通常はそのような URL は 404 (Not found) エラー
で拒否されます。
On による
パス分離文字の使用は、PATH_INFO と合わせて
使うときに一番役に立ちます。
Turning On is
mostly useful when used in conjunction with PATH_INFO.
符号化されたスラッシュを許可することは、復号をすることを
意味しません。%2F や (関係するシステムでの)
%5C は、他の部分が復号された URL の中でもそのままの形式で
残されます。
.htaccess で許可されるディレクティブの種類サーバが (
このディレクティブを None に設定すると、.htaccess ファイルは完全に
無視されます。
この場合、サーバはファイルシステムの .htaccess ファイルを読むことを
試みさえしません。
このディレクティブが All に設定されている時には、
.htaccess という コンテキスト を持つ
全てのディレクティブが利用できます。
directive-type には、以下のディレクティブ群の キーワードのどれかを指定します。
例:
上の例では AuthConfig と Indexes のどちらにも
属さないディレクティブはすべて内部サーバエラーを引き起こします。
このディレクティブはディレクトリに対する認可領域 (訳注: realm)
の名前を指定します。
認可領域は、利用者がどのユーザ名とパスワードを送信すればよいのかを
クライアントに教えるために利用します。
例えば:
ここで AuthName に指定した文字列が、
大部分のブラウザのパスワードダイアログに表示されます。
このディレクティブは対象ディレクトリで利用するユーザー認証の種類を選びます。
ただ、現在のところは Basic と Digest しか
実装されていません。
このディレクティブは
このディレクティブは Apache が CGI スクリプトを実行するための
インタープリタを探す方法を制御します。
例えば、CGIMapExtension sys:\foo.nlm .foo と設定すると
.foo という拡張子のすべての CGI スクリプトは FOO インタープリタに
渡されます。
Content-MD5 HTTP 応答ヘッダの生成を有効にするこのディレクティブは、RFC1864 及び RFC2068 において定義されている
Content-MD5 ヘッダーの生成を有効にします。
MD5 は、任意長のデータの「メッセージダイジェスト」(「指紋」 と表現されることもある) を計算するアルゴリズムで、 データの変更があった場合には非常に高い信頼度でメッセージダイジェストに変更が 反映されます。
Content-MD5 ヘッダは、エンドツーエンドで
エンティティボディーに含まれるメッセージの完全性チェック
(Message Integrity Check - MIC)を提供します。
このヘッダを調べることで、プロキシやクライアントは、
途中経路におけるエンティティボディの予期せぬ変更などを
検出することができます。ヘッダの例:
リクエスト毎にメッセージダイジェストを計算する (値はキャッシュされません) ことから、 サーバパフォーマンスが低下することについて注意してください。
Content-MD5は、
サーバは、MIME のタイプマップからは決定できない ドキュメントの送信を要求されることがあります。
サーバは、ドキュメントのコンテントタイプをクライアントに通知する必要が
ありますので、このようにタイプが未知の場合は
DefaultType で指定されたタイプを利用します。
例:
これは .gif という拡張子がファイル名に含まれていない
多くの GIF 画像が含まれているディレクトリに適しているでしょう。
指定されたディレクトリとそのサブディレクトリにのみ
ディレクティブを適用させるためには、
</Directory> を対として、ディレクティブ群を囲います。
その中には、ディレクトリコンテキストで許可された全てのディレクティブを
利用できます。
directive-path は、フルパスもしくは Unix のシェル形式の
ワイルドカードを指定します。
? は任意の 1 文字、* は任意の文字列にマッチします。
シェルにおける指定同様、文字の範囲を [] で指定できます。
ワイルドカードは `/' 文字にはマッチしませんので、
/home/user/public_html には
<Directory /*/public_html> はマッチしませんが、
<Directory /home/*/public_html> はマッチします。
例:
directory-path 引数には注意してください: その引数は
Apache がファイルをアクセスするために使うファイルシステムのパスに
そのままマッチする必要があります。ある <Directory> に
適用されるディレクティブは、別のシンボリックリンクをたどったりして
同じディレクトリを違うパスでアクセスした場合には適用されません。
~ という文字を
付加することで拡張正規表現を利用することもできます。
例えば:
といった指定の場合、/www/ 以下にある数字
3 文字のディレクトリにマッチします。
もし複数の (正規表現以外の)
と設定し、ドキュメント /home/web/dir/doc.html への
アクセスがあった場合には以下のように動作します:
AllowOverride None が適用される。
(.htaccess ファイルは無効になる)AllowOverride FileInfo が適用される
(/home ディレクトリに対して)。/home/.htaccess, /home/web/.htaccess,
/home/web/.htaccess の順にそれらのファイル中の
FileInfo ディレクティブが適用される。正規表現は、通常のセクションがすべて適用されるまで 考慮されません。 その後、全ての正規表現が設定ファイルに現れた順で試されます。 例えば、以下のような場合に
正規表現のセクションはすべての通常の .htaccess の適用が終わるまで考慮されません。
その後で、正規表現は /home/abc/public_html/abc にマッチし、
対応する
Apache のデフォルトでは <Directory /> へのアクセスは
Allow from All になっていることに注意してください。
これは、URL からマップされたどのファイルでも Apache は送るということです。
これは以下のようにして変更することが推奨されています。
そしてアクセスを可能にしたいディレクトリに対して 個別に設定すればよいでしょう。 このあたりについては、セキュリティに関するコツを 参照してください。
ディレクトリセクションは httpd.conf ファイル書きます。
</DirectoryMatch> は指定されたディレクトリと
そのサブディレクトリにのみ適用されるディレクティブ群を囲います。
しかし、このディレクティブは引数として正規表現をとります。例えば:
は /www/ 以下にある数字 3 文字のディレクトリにマッチします。
このディレクティブは、httpd がファイルを提供するディレクトリを設定します。
この場合、
http://www.my.host.com/index.html へのアクセスがあれば
/usr/web/index.html が返されます。
directory-path が絶対パスでない場合は、
このディレクティブは配送中にファイルの内容を読み込む必要があるときに
httpd がメモリマッピングを使うかどうかを制御します。デフォルトでは、
例えば、
このメモリマップは性能の向上を持たらすことがあります。 しかし、環境によっては運用上の問題を防ぐためにメモリマッピングを 使用しないようにした方が良い場合もあります:
httpd の
性能が落ちるものがあります。httpd がメモリマップしている間にファイルが削除されたり
短くなったりしたときに起こるセグメンテーションフォールトのために
httpd がクラッシュする可能性があります。これらの問題に当てはまるサーバの設定の場合は、以下のようにして ファイルの配送時のメモリマッピングを使用不可にしてください:
NFS マウントされたファイルには、問題のあるファイルにのみ明示的に この機能を使用不可にします:
このディレクティブはクライアンにファイルの内容を送るときに
httpd がカーネルの
sendfile サポートを使うかどうかを制御します。デフォルトでは、
例えば静的なファイルの配送のように、リクエストの処理にファイルの
途中のデータのアクセスを必要としないときには、Apache は OS が
サポートしていればファイルを読み込むことなく sendfile を使って
ファイルの内容を送ります。
sendfile は read と send を別々に行なうことと、バッファの割り当てを 回避します。しかし、プラットフォームやファイルシステムの中には 運用上の問題を避けるためにこの機能を使用不可にした方が良い場合があります:
これらの問題に当てはまるサーバの設定の場合は、以下のようにして この機能を使用不可にしてください:
NFS や SMB マウントされたファイルには、問題のあるファイルにのみ明示的に この機能を使用不可にします:
問題やエラーが発生したときの動作として、 Apache には以下の四つのうち一つの動作を設定することができます。
最初のものがデフォルトの動作で、2 番目から 4 番目は、
URL の場合は、ローカルの URL の指定としてスラッシュで始まる (/) パスか、
クライアントが解釈できるフル URL を指定します。
もしくは、ブラウザに表示されるメッセージを指定できます。
例:
加えて、特別な値 default を使って Apache に
ハードコードされている簡単なメッセージを指定することができます。
通常は必要ではありませんが、default を使うと
既存の
リモート URL (例えば、頭に http と付与した方法) を
ErrorDocument 401 にリモートの URL を指定すると、
クライアントは 401 というステータスコードを受け取らないため、
パスワードをユーザーに入力要求しなければならないことがわかりません。
従って、ErrorDocument 401 というディレクティブを使う場合は、
必ずローカルな文書を参照しなければなりません。
Microsoft Internet Explorer (MSIE) はデフォルトではサーバが生成したエラーメッセージが 「小さすぎる」ときには無視をして自分自身の「やさしい」エラーメッセージで 置換します。サイズのしきい値はエラーの種類によって異なりますが、 一般的にはエラーの文書を 512 バイトよりも多きくすると、MSIE は サーバが生成したエラーを隠さずに表示します。詳しい情報は Microsoft Knowledge Base の記事 Q294807 にあります。
2.0 より前のバージョンでは、対になっていない二重引用符を 先頭に付けることによりメッセージであることを指定していました。
file-path がパイプ (|) から始まる場合は、 エラーログを処理するために実行されるコマンドが 指定されていると解釈されます。
ファイル名の変わりに syslog と指定することによって、
システムがサポートしていれば syslogd(8) を利用したロギングが有効になります。
デフォルトでは、local7 ファシリティとなりますが、
syslog:facility といった形で記述することにより、
通常 syslog(1) のドキュメントで説明されているファシリティの一つを使うように
することができます。
セキュリティ: ログファイルを格納するディレクトリが、サーバを起動したユーザ以外の ユーザによって書き込める場合にセキュリティが破られる可能性があることに 関する詳細は セキュリティに関するコツ を 参照してください。
Unix 以外のプラットフォームでファイルのパスを入力するときは、 プラットフォームがバックスラッシュの使用を許していたとしても、 確実にスラッシュのみが使用されるように注意してください。一般的には、 設定ファイル全般でスラッシュのみを使う方が良いでしょう。
ETag (エンティティタグ) 応答ヘッダフィールドを作成するときに使用する
ファイルの属性を設定します。 (ETag の値はネットワークの帯域を節約するための
キャッシュの管理で使われます。) Apache 1.3.22 以前では、ETag の値は
常にファイルの inode, サイズ、最終修正時刻 (mtime) から作成
されていました。
ETag フィールドを
応答に付加しませんINode, MTime, Size キーワードには
+ や - を前に付けて
指定することもできます。この場合は、より広い範囲から継承された
デフォルトの設定に変更を加えるようになります。そのような接頭辞の
無いキーワードを指定すると、即座に継承した設定を無効にします。
あるディレクトリの設定に
FileETag INode MTime Size があり、
サブディレクトリの設定に FileETag -INode があるときは、
そのサブディレクトリの設定は (設定が上書きされなければサブディレクトリの
サブディレクトリにも継承されます) FileETag MTime Size
と同じになります。
</Files> ディレクティブと対に
なっていなければなりません。
このセクション中のディレクティブは、ベース名 (ファイル名の最後の部分)
が指定されたファイル名にマッチするすべてのオブジェクトに適用されます。
.htaccess が読み込まれた後、
filename 引数は、ファイル名かワイルドカード文字列
で、ワイルドカードでは ? は一つの文字、* は任意の文字列にマッチします。
~ という文字を付加することで拡張正規表現を使うこともできます。
例えば、
とすることにより、一般的なインターネットの画像フォーマットにマッチします。
ただし、
ちなみに、.htaccess ファイル内で利用することができます。
これにより、ユーザがファイル毎にアクセスの制御を行なうことができるように
なっています。
は一般的なインターネットの画像形式にマッチします。
.htaccess や .gif
で終わらせたくはないときに、以下のものを使用します:
None という値を使うことで
このディレクティブは、ホスト名をログ収集できるように
DNS ルックアップを有効にします
(さらに、CGI/SSI に REMOTE_HOST 変数として渡します)。
Doubleを指定した場合、2 重の逆引きを行ないます。
つまり、逆引きの後に、その結果に対して正引きを行ないます。正引きの
結果の IP アドレスの中にオリジナルのアドレスと一致するものがなければ
なりません。("tcpwrappers" の用語では PARANOID と呼ばれています。)
HostnameLookups Double を設定しない限り、
他の部分はこの 2 重逆引きの結果を使うことはできません。
例えば、HostnameLookups On と設定してある状態で、
ホスト名によるアクセス制限を行なったオブジェクトへの
リクエストを受けたとすると、2 重の逆引きが成功するか否かによらず、
REMOTE_HOST には通常の逆引き結果が渡されます。
ディレクティブのデフォルトは
本当に逆引きを必要としているわけではないサイトの
ネットワークトラフィックを低減させるために、Off になっています。
ルックアップによる余計な遅延がなくなるため、
エンドユーザにとっても良いでしょう。
DNS のルックアップには、かなりの時間が必要となる場合が多く、
負荷の高いサイトではこのディレクティブは Off にすべきです。
なお、/support ディレクトリに含まれ、デフォルトでは
インストールディレクトリの bin サブディレクトリに
インストールされる logresolve ユーティリティにより、
Apache の動作とは別に、ログに残されている IP アドレスからホスト名を
ルックアップすることが可能です。
<IfDefine test>...</IfDefine>
セクションは、
ディレクティブを条件付きで指定するために利用します。
!parameter-name前者の場合には、parameter-name と名付けられたパラメータが 定義されていれば開始と終了の間のディレクティブが処理されます。 後者の場合は逆で、parameter-name が指定されていない 場合に処理されます。
parameter-name 引数は、サーバを起動する際に
httpd のコマンドラインに
-Dparameter- という形で指定すると定義されます。
<IfModule test>...</IfModule>
セクションは、モジュールが存在するときに処理されるディレクティブを
指定するために利用します。
前者の場合は、module と名付けられたモジュールが
Apache に組み込まれていれば
(コンパイル済みのものと、
module 引数は、モジュール識別子か
コンパイルをした時のモジュールのファイル名です。
例えば、rewrite_module は識別子で
mod_rewrite.c はファイル名です。
モジュールが複数のソースファイルから構成されている場合は、文字列
STANDARD20_MODULE_STUFF があるファイルの名前を
使ってください。
このディレクティブにより、サーバの設定ファイルから 他の設定ファイルをインクルードすることができます。
複数のファイルをアルファベット順に一度に読み込むために、
シェル形式 (fnmatch) のワイルドカード文字を使うことができます。
さらに、httpd が読み込みに失敗するような
一時ファイルをディレクトリに残してしまうようなことがよくあるからです。
指定するファイルパスは絶対パスか、
例:
apachectl configtest を実行すると、設定をチェックしている時に
読み込まれたファイルのリストが表示されます:
HTTP/1.0 の Keep-Alive 拡張と HTTP/1.1 の持続的接続の機能は、
複数のリクエストが同じ TCP の接続で送られる、長時間持続する
HTTP セッションを提供します。たくさんの画像が
含まれる HTML ドキュメントでは場合によっては遅延時間が 50% 短縮される結果も
でています。Keep-Alive 接続を有効にするには
KeepAlive On と設定します。
HTTP/1.0 に対応したクライアントの際には、 クライアントより特に要求があった場合のみ Keep-Alive 接続となります。 さらに、HTTP/1.0 クライアントでは、コンテンツの容量が先に (訳注: 要求に対して応答を返す前に) わかる場合のみ Keep-Alive 接続を利用できます。 これは、CGI の出力や SSI のページ、 サーバが生成したディレクトリのリストのような動的コンテンツを HTTP/1.0 クライアントに送る場合には Keep-Alive 接続を使えないことを意味します。 HTTP/1.1 に対応したクライアントの際には、 特に指定されない限りはデフォルトとして持続的な接続が行なわれます。 クライアントが要求すれば、コンテンツの容量を判別できないものを 持続的な接続を通して送るために、チャンクエンコーディングが用いられます。
接続を閉じる前に、Apache が次のリクエストを何秒待つかを指定します。
リクエストを受け付けた後は、
アクセス制御は、通常全てのアクセスメソッドに対して
影響し、普通はこれが望ましい挙動です。
そうしたことから、大部分の場合にはアクセス制御に関わるディレクティブを
POST, PUT, DELETE のメソッドに対してのみアクセスの制御を行ない、
それ以外のメソッドについては制限しません:
メソッド名には以下の中から一つ以上を列挙することができます:
GET,
POST, PUT, DELETE,
CONNECT, OPTIONS,
PATCH, PROPFIND, PROPPATCH,
MKCOL, COPY, MOVE,
LOCK, UNLOCK. メソッド名は
大文字小文字を区別します。 GET を指定した場合には
HEAD リクエストにも制限がかかります。TRACE
メソッドに制限をかけることはできません。
</LimitExcept> は、引数に
含まれていない
HTTP のアクセスメソッドに適用するためのアクセス制御
ディレクティブを括るために利用します。
つまり、
例:
内部リダイレクトは例えば
このディレクティブは、リクエスト毎に評価される、二つの違う限界値を 設定します。最初の number は、起こり得る 内部リクエストの最大値を設定します。二つめの number は サブリクエストが入れ子にできる深さを設定します。number を 一つだけ指定したときは、両方の限界値にその値が設定されます。
このディレクティブは、リクエストボディに許されるバイト数、bytes を 0 (無制限を意味します) から 2147483647 (2GB) までの数値で指定します。
PUT メソッドの実装は、このディレクティブの値として
少なくともあるリソースに対してサーバが受け付けようとする
表現の大きさほどの値を必要とします。
このディレクティブは、 管理者にクライアントからの異常なリクエストを制御できるようにし、 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。
ある場所へのファイルアップロードを許可する場合に、 アップロードできるファイルのサイズを 100K に制限したければ、 以下のように指定します:
number には、0 (無制限を意味します) から 32767
までの整数を指定します。
デフォルト値は、定数 DEFAULT_LIMIT_REQUEST_FIELDS
によりコンパイル時に定義されます (配布時には 100 と指定されています)。
LimitRequestBody ディレクティブは、 サーバ管理者が HTTP リクエスト中において許可するリクエストヘッダフィールド数を 指定します。 サーバはこの値には通常のクライアントからのリクエストに含まれるであろう フィールドの数より大きな値が必要とします。 クライアントにより使われた要求ヘッダーフィールドの数が 20 を超えることはほとんどありませんが、 これは種々のクライアントの実装よって変わり、 詳細なコンテントネゴシエーションをするためのブラウザの設定までにも 影響されることがあります。 オプションの HTTP 拡張はリクエストヘッダフィールドを使って現される場合が 多くあります。
このディレクティブは、 管理者にクライアントからの異常なリクエストを制御できるようにし、 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。 リクエストのフィールドが多過ぎることを意味するエラー応答が 普通のクライアントに返されるような時はこの値を増やしてください。
例:
このディレクティブは、HTTP リクエストヘッダ内に含めることのできる
バイト数、bytes を
0 からコンパイル時に定義される定数
DEFAULT_LIMIT_REQUEST_FIELDSIZE (配布時には 8192 と指定)
で指定された値までの数字で指定します。
このディレクティブは、 管理者にクライアントからの異常なリクエストを制御できるようにし、 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。
例:
このディレクティブは、HTTP リクエスト行内で許容されるバイト数
bytes を 0 からコンパイル時の定数
DEFAULT_LIMIT_REQUEST_LINE (配布時には 8190 と指定)
で指定された値までの数字で指定します。
GET リクエストのクエリ部分も含めて、リソースの名前が入るに足る
大きさを必要とします。
このディレクティブは、 管理者にクライアントからの異常なリクエストを制御できるようにし、 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。
例:
XML 形式のリクエストのボディの最大値を (バイト単位で) 制限します。
値に 0 を指定するとチェックを無効にします。
例:
</Location> ディレクティブで終了する
サブセクションを開始します。
.htaccess の読み込みの後、
<Location /> で、これはサーバ全体に対して
設定を適用する簡単な方法です。
全ての (プロキシ以外の) リクエストに対し、
URL は /path/ という、
接頭辞 http://servername を含まない形でマッチします。
プロキシリクエストの場合には、scheme://servername/path
という接頭辞を含む形でマッチし、接頭辞を含めて指定する必要があります。
URL にはワイルドカードを利用することができます。
? は任意の一文字、* は任意の文字列にマッチします。
~ という文字を追加することで、拡張正規表現を
利用することもできます。
例えば:
は URL に /extra/data か /special/data という文字列が
含まれている場合にマッチします。
foo.com のブラウザからのみステータスの参照を有効にしたければ、
次のようにすれば良いでしょう。
スラッシュ文字は、URL 内に現れる場所に応じて変化する
特別な意味を持っています。
ファイルシステムにおいて利用する場合には複数のスラッシュでも一つの
スラッシュとして扱われることが多いですが、
(すなわち、/home///foo は
/home/foo と同じいったように)
URL においては必ずしもそうなるわけではありません。
例えば、<LocationMatch ^/abc> は、
/abc というリクエスト URL にマッチしますが、
//abc というリクエスト URL にはマッチしません。
(正規表現でない) <Location /abc/def> と指定し、
/abc//def というリクエストがあれば、
マッチすることになります。
は URL に /extra/data か /special/data
という文字列が含まれている場合にマッチします。
| レベル | 説明 | 例 |
|---|---|---|
emerg |
緊急 - システムが利用できない | Child cannot open lock file. Exiting (子プロセスがロックファイルを開けないため終了した) |
alert |
直ちに対処が必要 | getpwuid: couldn't determine user name from uid (getpwuid: UID からユーザ名を特定できなかった) |
crit |
致命的な状態 | socket: Failed to get a socket, exiting child (socket: ソケットが得られないため、子プロセスを終了させた) |
error |
エラー | Premature end of script headers (スクリプトのヘッダが足りないままで終わった) |
warn |
警告 | child process 1234 did not exit, sending another SIGHUP (子プロセス 1234 が終了しなかった。もう一度 SIGHUP を送る) |
notice |
普通だが、重要な情報 | httpd: caught SIGBUS, attempting to dump core in ... (httpd: SIGBUS シグナルを受け、... へコアダンプをした) |
info |
追加情報 | "Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)..." (「サーバは負荷が高い、 (StartServers や Min/MaxSpareServers の値を増やす必要があるかも)」) |
debug |
デバッグメッセージ | "Opening config file ..." (設定ファイルを開いている...) |
特定のレベルが指定された場合、それより高いレベルの全てのメッセージが
報告されます。
例えば、LogLevel info に指定すると、
notice と warn も報告されます。
なお crit 以上のレベルを指定することが推奨されます。
例:
ファイルにログを出力する場合、notice
レベルのメッセージは抑制されず、すべてログに出力されます。
しかし syslog を使用している場合は、
これは当てはまりません。
0 に設定していれば、受け付けるリクエストは無制限になります。
この設定は、サーバ性能を向上させるために、大きな数値を指定すること勧めます。
例:
addr にはホスト名を指定できますが、 常に IP アドレスを指定するのが推奨されます。 例えば、
「主サーバ」や、どの _default_ サーバも、
名前ベースのバーチャルホストにポート番号を指定することも可能です。 例えば
IPV6 のアドレスは次の例のように角括弧で囲む必要があります:
すべてのインタフェースへのリクエストを受け取るようにするためには、
引数として * を使います。
option を Noneに指定すると、
特別な機能は全て無効になります。
また、以下の示す 1 個以上のものを指定できます。
AllMultiViews を除いた全ての機能が有効となります。
これがデフォルトです。ExecCGIFollowSymLinksサーバがシンボリックリンクをたどる場合でも、
IncludesIncludesNOEXEC#exec コマンド と #exec CGI は無効になります。
ただし、#include virtual により、Indexesindex.html) が
ディレクトリ内に無ければ、MultiViewsSymLinksIfOwnerMatch通常、ディレクトリに対して複数の + や - 付きで
指定された場合はオプションの値はマージされます。
+ を頭につければ現在の設定に加えられ、
- を付ければ現在の設定から削除されます。
例えば、+ や - を利用しない場合は:
/web/docs/spec というディレクトリには、
Includes だけが適用されます。
しかし、2 番目の + や - を利用してみると:
/web/docs/spec というディレクトリには、 FollowSymLinks と
Includes が適用されます。
-IncludesNOEXEC もしくは
-Includes を指定すると、
前の設定がどのようになっていようとも SSI は無効となります。
どのような設定もされていなければ、デフォルトでは All に
なります。
このディレクティブは、どの認証済みのユーザがディレクトリに アクセスすることができるかを指定します。 以下のような構文になります。
Require user userid [userid] ...Require group group-name [group-name] ...Require valid-userこのようにして適用されたアクセス制御は、全てのメソッドに
対して行なわれます。
通常は、これが望ましい動作です。
もし、特定のメソッドに対してのみアクセスの制御を適用し、
他のメソッドは制限しない場合には、
一つか二つのパラメータをとります。
最初のパラメータは全プロセスに対するリソースのソフトリミットを設定し、
2 番目のパラメータは最大のリソースリミットを設定します。
パラメータには数字か、オペレーティングシステムの最大となる
max のどちらかを指定することができます。
最大のリソースリミットを上げるためには、サーバを
root で実行するか起動されなければいけません。
ちなみに、この設定は Apache の子プロセス自体ではなく、 リクエストを受け付けた Apache の子プロセスから fork されたプロセスに 適用されます。 これには CGI や SSI から実行されたコマンドが含まれますが、Apache の 親プロセスから fork されたログのパイププロセスなどには適用されません。
CPU リソースのリミットはプロセスあたりの秒数で表わされます。
一つか二つのパラメータををとります。
最初のパラメータは全プロセスに対するリソースのソフトリミットを設定し、
2 番目のパラメータは最大のリソースリミットを設定します。
パラメータには数字か、オペレーティングシステムの最大となる
max のどちらかを指定することができます。
最大のリソースリミットを上げるためには、サーバを
root で実行するか起動されなければいけません。
この設定は Apache の子プロセス自体ではなく、 リクエストを受け付けた Apache の子プロセスから fork されたプロセスに 適用されます。 これには CGI や SSI から実行されたコマンドが含まれますが、Apache の 親プロセスから fork されたログのパイププロセスなどには適用されません。
メモリリソースのリミットはプロセスあたりのバイト数で表わされます。
一つか二つのパラメータをとります。
最初のパラメータは全プロセスに対するリソースのソフトリミットを設定し、
2 番目のパラメータは最大のリソースリミットを設定します。
パラメータには数字か、オペレーティングシステムの最大となる
max のどちらかを指定することができます。
最大のリソースリミットを上げるためには、サーバを
root で実行するか起動されなければいけません。
この設定は Apache の子プロセス自体ではなく、 リクエストを受け付けた Apache の子プロセスから fork されたプロセスに 適用されます。 これには CGI や SSI から実行されたコマンドが含まれますが、Apache の 親プロセスから fork されたログのパイププロセスなどには適用されません。
プロセスの制限は、ユーザあたりのプロセス数で制御されます。
CGI プロセスがウェブサーバのユーザ ID 以外で実行されるので
無ければ、
このディレクティブは、サーバ自身が生成できるプロセスの数を制限することになります。
そのような状況になっているかどうかは、error_log 中の
cannot fork というメッセージにより
確認することができます。
All か Any
です。このディレクティブはある場所へのアクセスがユーザ名/パスワード
とクライアントのホストのアドレスで制限されているときにのみ
役立ちます。デフォルトの動作 (All) はクライアントがアドレスによる
アクセス制限を満たし、かつ正しいユーザ名とパスワードを入力することを
要求します。Any では、クライアントはホストの制限を満たすか、
正しいユーザ名とパスワードの入力をするかをすればアクセスを許可されます。
これは、ある場所をパスワードで保護するけれど、特定のアドレスからの
クライアントにはパスワードの入力を要求せずにアクセスを許可する、
というようなときに使用できます。
例えば、同じネットワーク上にいる人にはウェブサイトのある部分について 無制限のアクセスを許したいけれど、外のネットワークの人には パスワードを提供させるようにするためには、次のような設定をすることが できます:
バージョン 2.0.51 からは
Registry-Strict は Apache 2.0 以降で使用可能このディレクティブは、Apache で CGI スクリプトを
実行する場合に利用するインタープリタを、
どのように探し出すかについて制御するために使用します。
デフォルトの設定は Script です。これはスクリプトの
shebang 行 (最初の行で #! から始まるもの)
に指されているインタープリタを使用します。Win32 ではその行は
以下の様になります。
もしくは、perl が PATH にある場合は単に:
ScriptInterpreterSource Registry を指定すると、
スクリプトファイルの拡張子 (例えば、.pl) を
キーとして、Windows のレジストリツリー HKEY_CLASSES_ROOT
を検索するようになります。レジストリのサブキー
Shell\ExecCGI\Command か、それが存在しない場合は
Shell\Open\Command がスクリプトファイルを開くために
使われます。レジストリキーが見つからないときは、Apache は Script
オプションが指定されたときの動作に戻ります。
ScriptInterpreterSource Registry を Registry という設定は通常は実行されない
ファイルに対して望ましくないプログラムの実行が発生する可能性があります。
例えば、ほとんどの Windows システムで、
.htm ファイルのデフォルトの「開く」コマンドは
Microsoft Internet Explorer を実行しますので、スクリプトに指定された
ディレクトリにある .htm ファイルへのリクエストはサーバの
バックグラウンドでブラウザを実行することになります。これは、一分内くらいで
システムをクラッシュさるための良い方法です。
Apache 2.0 から導入されたオプション Registry-Strict は
Registry と同じことを行ないますが、サブキー
Shell\ExecCGI\Command のみを使います。
ExecCGI キーは普通に使われるキーではありません。Windows
レジストリに手動で設定する必要がありますので、システムでの偶発的なプログラムの
実行を防ぐことができます。
httpd が
URL と認識しない場合は、email-address だと解釈して、
ハイパーリンクのターゲットに mailto: を付けます。
実際には、ここには電子メールアドレスを使うことが推奨されています。
多くの CGI スクリプトはそうなっていることを仮定しています。
URL を使う場合は、あなたの管理下にある別サーバを指すようにしてください。
そうでないと、エラーが起こったときに連絡をすることができなくなって
しまいます。
その際、これのために専用のアドレスを設定するのが良いでしょう。 例えば、
といったようにします。ユーザはいつもサーバに関する話であるということを 明記してくるわけではありませんので。
simple.example.com
で、DNS のエイリアス www.example.com もあるときに、
ウェブサーバが後者として認識されて欲しいときは、以下のようにディレクティブを
使います。
名前ベースのバーチャルホスト
を利用している場合、
自己参照 URL (例えば
conf/ や logs/ といったサブディレクトリが
存在します。
また、他の設定ファイルにおける相対パスは、このディレクトリからとなります。
httpd の -d
オプションデフォルトである Off に設定をすると、フッタ行が抑制されます
(そして、Apache-1.2 以前と互換の動作をします)。
On に設定した場合は、単にドキュメントの中に、サーバのバージョン、
稼動中のバーチャルホストの ServerName の書かれた行を追加し、
EMail にした場合はさらに参照されたドキュメントに対する ServerAdmin を指す "mailto:" が追加されます。
バージョン 2.0.44 以降ではこのディレクティブは
このディレクティブは、クライアントに送り返す Server
応答ヘッダ内に、サーバの一般的な OS 種別や、
コンパイルされて組み込まれているモジュールの情報を
含めるかどうかを指定します。
ServerTokens Prod[uctOnly]Server:
Apache といったように送ります。ServerTokens MajorServer:
Apache/2ServerTokens MinorServer:
Apache/2.0ServerTokens Min[imal]Server:
Apache/2.0.41 といったように送ります。ServerTokens OSServer: Apache/2.0.41
(Unix) といったように送ります。ServerTokens Full (もしくは未指定)Server: Apache/2.0.41
(Unix) PHP/4.2.2 MyMod/1.2 といったように送ります。この設定はサーバ全体に適用され、バーチャルホスト上で有効にしたり 無効にしたりはできません。
バージョン 2.0.44 以降ではこのディレクティブは
.htaccess や .htaccess
ファイルに記述します:
別の例: URL http://servername/status
が指定されたときにサーバが状態報告をするようにしたいときは、以下を
httpd.conf に記述します:
None という値を設定することで、
前の方の
複数のフィルタを指定するときは、データを処理する順番に セミコロンで区切る必要があります。
例えば、以下の設定は /www/data/ ディレクトリのすべての
ファイルを SSI で処理します。
複数のフィルタを指定するときは、データを処理する順番に セミコロンで区切る必要があります。
将来には別々の設定をすることが可能にできるよう考慮中です。 Apache 1.2 以前はタイマーは 1200 がデフォルトでしたが、 300 に下げられました。300 でもほとんどの場合は十分すぎる値です。 コード中の変な場所にまだパケットを送る際にタイマをリセットしない 場所があるかもしれないので、デフォルトをより小さい値にはしていません。
多くの状況で Apache は自己参照 URL、すなわち
同じサーバを指す URL、を作成する必要があります。
UseCanonicalName On を使うと (1.3 より前の
すべてのバージョンでも) Apache は ServerName ディレクティブと Port
ディレクティブを使ってサーバの正式な名前を作成します。
この名前がすべての自己参照 URL で使われ、CGI の SERVER_NAME
と SERVER_PORT にも使われます。
UseCanonicalName Off では Apache は
クライアントがホスト名とポートを提供した場合には自己参照 URL を
それらを元に作成します (提供されていない場合は上で定義されているように
正式な名前を使います)。
これらの値は名前ベースの
バーチャルホストを実装するのに使われているのと同じ値で、
同じクライアントから取得できる値です。CGI 変数 SERVER_NAME
と SERVER_PORT もクライアントから与えられた値から
作成されます。
これが有用な場合の例は、イントラネットのサーバで、www の
ような短い名前でユーザがマシンに接続しているときです。
ユーザが短い名前を入力して、URL が最後のスラッシュ無しのディレクトリ
へのものであるときに、Apache はリクエストを
http://www.domain.com/splat/ へリダイレクトすることに
気付くでしょう。認証をするように設定していると、この場合
ユーザは 2 回認証をしなければならなくなります (www に
対して 1 回、www.domain.com に対してもう一回 --
より詳しい情報は この話題の
FAQ を参照してください)。
しかし、Off になっていると、
Apache は htttp://www/splat/ にリダイレクトします。
三つ目のオプション UseCanonicalName DNS は、
Host: ヘッダを提供しない古いクライアントをサポートした
大規模な IP ベースのバーチャルホスティングで使用されることを
意図しています。このオプションでは、Apache はクライアントが
接続した IP アドレスに DNS の逆引きを行なって自己参照 URL を
作成します。
CGI が SERVER_NAME に
関する仮定を行なっているときは、このオプションの設定で動作しなく
なるかもしれません。クライアントは実質的にはホスト名にとして
何でも望みの値を指定することができます。CGI が
SERVER_NAME のみを使って自己参照 URL を作成している
場合はどの設定を行なっても大丈夫なはずです。
</VirtualHost> は、
特定のバーチャルホストに対してのみ適用されるディレクティブ群を括る
ために使われます。
バーチャルホストコンテキストで許可される全てのディレクティブを指定可能です。
サーバが、指定されたバーチャルホストにあるドキュメントへの
リクエストを受け付けた場合、
NameVirtualHost * と共に使われる、
すべての IP アドレスにマッチする文字 *_default_IPv6 アドレスはオプションのポート番号の指定と区別するために、 角括弧で括って指定する必要があります。次は IPv6 の例です:
各々のバーチャルホストにはそれぞれ違う IP アドレス、ポート番号
もしくはホスト名に対応する必要があり、
1 番目の場合には複数のアドレスで IP パケットを受信できるように
サーバマシンを設定しなければなりません。
(もし、マシンが複数のネットワークインターフェースと持たない場合は、
(OSがサポートしていれば) ifconfig alias コマンドにより
達成できます)。
:port といった形式で記述することにより、
マッチさせるポートを変更可能です。
この指定をしない場合には、主サーバ設定における
一番最後に Port で指定されたポートが
デフォルトとなります。
:* を指定することにより、
アドレス上の全てのポートにマッチします。(_default_ のときは
これを使うことが推奨されています。)
セキュリティに関して: サーバーを起動した以外のユーザがログファイルが保管されるディレクトリに 書き込み可能なときになぜセキュリティが破られる可能性があるかの詳細は セキュリティに関するコツ を 参照してください。
IP ベースのバーチャルホストを使っている場合は、特別な名前
_default_ を指定することができます。その場合は
そのバーチャルホストは他のバーチャルホストで明示的に挙げられていない
すべての IP アドレスにマッチします。_default_ バーチャルホストが無い
場合に IP がバーチャルホストで指定されたものにマッチしないときは、
VirtualHost セクションの外のすべての定義からなる「主」サーバ設定が
使われます。(ただし、_default_ バーチャルホストも
使わないことに注意してください。詳しくは ネームベースのバーチャルホスト を
参照してください。)
:port といった形式で記述することにより、
マッチさせるポートを変更可能です。
この指定をしない場合には、主サーバ設定における
一番最後に :* を指定することにより、
アドレス上の全てのポートにマッチします。(_default_ のときは
これを使うことが推奨されています。)
:port といった形式で記述することにより、
マッチさせるポートを変更可能です。
この指定をしない場合には、主サーバ設定における
一番最後に Port で指定されたポートが
デフォルトとなります。
:* を指定することにより、
アドレス上の全てのポートにマッチします。(_default_ のときは
これを使うことが推奨されています。)
サーバーを起動した以外のユーザがログファイルが保管されるディレクトリに 書き込み可能なときになぜセキュリティが破られる可能性があるかの詳細は セキュリティに関するコツ を 参照してください。