Apache HTTP サーバ バージョン 2.2

| 説明: | 常に使用可能な Apache HTTP サーバのコア機能 |
|---|---|
| ステータス: | Core |
AcceptFilter
AcceptPathInfo
AccessFileName
AddDefaultCharset
AddOutputFilterByType
AllowEncodedSlashes
AllowOverride
AuthName
AuthType
CGIMapExtension
ContentDigest
DefaultType
<Directory>
<DirectoryMatch>
DocumentRoot
EnableMMAP
EnableSendfile
ErrorDocument
ErrorLog
FileETag
<Files>
<FilesMatch>
ForceType
HostnameLookups
<IfDefine>
<IfModule>
Include
KeepAlive
KeepAliveTimeout
<Limit>
<LimitExcept>
LimitInternalRecursion
LimitRequestBody
LimitRequestFields
LimitRequestFieldSize
LimitRequestLine
LimitXMLRequestBody
<Location>
<LocationMatch>
LogLevel
MaxKeepAliveRequests
NameVirtualHost
Options
Require
RLimitCPU
RLimitMEM
RLimitNPROC
Satisfy
ScriptInterpreterSource
ServerAdmin
ServerAlias
ServerName
ServerPath
ServerRoot
ServerSignature
ServerTokens
SetHandler
SetInputFilter
SetOutputFilter
TimeOut
TraceEnable
UseCanonicalName
UseCanonicalPhysicalPort
<VirtualHost>| 説明: | プロトコルを Listen しているソケットの最適化を設定する |
|---|---|
| 構文: | AcceptFilter protocol accept_filter |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | 2.1.5 以降 |
Listen しているソケットに対して、OS が固有に持っているプロトコルについての最適化を
有効にするディレクティブです。大前提となる条件は、データが受信されるか
HTTP リクエスト全体がバッファされるかするまで、カーネルがサーバプロセスに
ソケットを送らないようになっている、ということです。現在サポートされているのは、
FreeBSD の Accept Filter と Linux のプリミティブな
TCP_DEFER_ACCEPT のみです。
FreeBSD のデフォルト値は :
AcceptFilter http httpready
AcceptFilter https dataready
httpready Accept Filter は HTTP リクエスト全体を、
カーネルレベルでバッファリングします。リクエスト全体を受信し終わると、
その後サーバプロセスにそれを送ります。詳細については accf_http(9)
を参照してください。HTTPS のリクエストは暗号化されているので accf_data(9)
フィルタのみが使用されます。
Linux でのデフォルト値は :
AcceptFilter http data
AcceptFilter https data
Linux の TCP_DEFER_ACCEPT は HTTP リクエストのバッファリングを
サポートしていません。none 以外の値で
TCP_DEFER_ACCEPT が有効になります。詳細については Linux
man ページ tcp(7)
を参照してください。
引数に none を指定すると、プロトコルに対する全ての Accept
Filter が無効になります。nntp といった、先にサーバにデータを
送る必要のあるプロトコルに有効です :
AcceptFilter nntp none
| 説明: | 後に続くパス名情報を受け付けるリソースの指定 |
|---|---|
| 構文: | AcceptPathInfo On|Off|Default |
| デフォルト: | AcceptPathInfo Default |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | Apache 2.0.30 以降で使用可能 |
このディレクティブは実際のファイル名 (もしくは存在するディレクトリの
存在しないファイル) の後に続くパス名情報があるリクエストを受け付けるか
拒否するかを制御します。続きのパス名情報はスクリプトには PATH_INFO
環境変数として利用可能になります。
例えば、/test/ が、here.html というファイル
一つのみがあるディレクトリを指しているとします。そうすると、
/test/here.html/more と /test/nothere.html/more
へのリクエストは両方とも /more を PATH_INFO とします。
AcceptPathInfo ディレクティブに指定可能な
三つの引数は:
Off/test/here.html/more のように、本当のファイル名の
後にパス名情報が続くリクエストには 404 NOT FOUND エラーが返ります。On/test/here.html/more
は /test/here.html が有効なファイルにマップすれば
受け付けられます。DefaultPATH_INFO を拒否します。
cgi-script や isapi-handler のようにスクリプトを扱うハンドラは
一般的にデフォルトで PATH_INFO を受け付けます。AcceptPathInfo の主な目的はハンドラの PATH_INFO を
受け付けるか拒否するかの選択を上書きできるようにすることです。
例えば、これは例えば INCLUDES のような
フィルタを使って PATH_INFO に
基づいてコンテンツを生成しているときに必要になります。
<Files "mypaths.shtml">
Options +Includes
SetOutputFilter INCLUDES
AcceptPathInfo On
</Files>
| 説明: | 分散設定ファイルの名前 |
|---|---|
| 構文: | AccessFileName filename [filename] ... |
| デフォルト: | AccessFileName .htaccess |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |
| ステータス: | Core |
| モジュール: | core |
リクエストを処理するとき、サーバはディレクトリに 対して分散設定ファイルが有効になっていれば、 そのドキュメントへの パス上にある全てのディレクトリから、ここで指定された名前の一覧の中で 最初に見つかったファイルをそれぞれ設定ファイルとして読み込みます。例えば:
AccessFileName .acl
という設定があると、以下のようにして無効にされていない限り、
ドキュメント /usr/local/web/index.html
を返す前に、サーバは /.acl, /usr/.acl,
/usr/local/.acl, /usr/local/web/.acl から
ディレクティブを読み込みます。
<Directory />
AllowOverride None
</Directory>
| 説明: | レスポンスのコンテントタイプが text/plain あるいは
text/html の場合に追加するデフォルトの charset パラメータ |
|---|---|
| 構文: | AddDefaultCharset On|Off|charset |
| デフォルト: | AddDefaultCharset Off |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
レスポンスのコンテントタイプが text/plain
あるいは text/html
の場合に限りますが、レスポンスに追加するメディアタイプの文字セットパラメータ
(文字エンコーディングの名前) のデフォルト値を、このディレクティブで指定します。
これはレスポンス (訳注: レスポンスの HTML) 内で META
要素で指定された、どのような文字セットも無効にしますが、
最終的な挙動はユーザのクライアント側の設定で決まります。
この機能は AddDefaultCharset Off という設定で無効になります。
AddDefaultCharset On にすれば、
Apache 内部のデフォルト文字セット iso-8859-1 に設定されます。
その他 charset に指定できる値であれば、どんな値でも使えます。
指定する値は、MIME メディアタイプとして使われる
IANA
に登録されている文字セット名のうちの一つにすべきです。
例えば:
AddDefaultCharset utf-8
AddDefaultCharset を使うときは、全てのテキストリソースが
指定する文字エンコードになっていると分かっていて、かつ、
リソースの個々に文字セットを指定するのが大変な場合のみです。
例を挙げると、レガシーな CGI スクリプトなどの、動的に生成される
コンテンツを含むリソースに文字セットパラメータを追加する場合で、
ユーザの入力データが出力に入り、クロスサイトスクリプティングが
引き起こされうる場合です。デフォルト文字セットをセットしたとしても、
ブラウザの "文字エンコードの自動選択" 機能が有効になっているユーザを
守ることにはならないので、もちろんより良い解決策は単にスクリプトを修正
(あるいは削除) することです。
| 説明: | MIME-type に出力フィルタを割り当てる |
|---|---|
| 構文: | AddOutputFilterByType filter[;filter...] MIME-type
[MIME-type] ... |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | Apache 2.0.33 以降で使用可能。ただし 2.1 以降で非推奨。 |
このディレクティブは応答の MIME タイプ に応じて出力フィルタを使用するようにします。
ただし下で説明される理由により、本ディレクティブは非推奨です。
同等の機能は mod_filter で利用できます。
次の例は mod_deflate の DEFLATE フィルタを
使っています。text/html と text/plain の
すべての出力 (静的なものも動的なものも) をクライアントに送られる前に
圧縮します。
AddOutputFilterByType DEFLATE text/html text/plain
複数のフィルタでコンテンツを処理させたいときは、それぞれの名前をセミコロンで
分ける必要があります。各フィルタに対して
AddOutputFilterByType を一つずつ書くこともできます。
次の例は text/html のスクリプトのすべての出力を
まず INCLUDES フィルタで処理し、さらに DEFLATE フィルタにかけます。
<Location /cgi-bin/>
Options Includes
AddOutputFilterByType INCLUDES;DEFLATE text/html
</Location>
AddOutputFilterByType ディレクティブにより
有効にしたフィルタは場合によっては、部分的もしくは完全に適用されないことが
あります。例えば、MIME タイプ が決定できないときには
DefaultType の設定が同じだったとしても、
DefaultType 設定を使うようになります。
しかし、確実にフィルタが適用されるようにしたいときは、リソースに
明示的にコンテントタイプを割り当てることができます。これには例えば
AddType ディレクティブや
ForceType ディレクティブを使います。
(nphでない) CGI スクリプトでコンテントタイプを設定するというものでも
大丈夫です。
| 説明: | URL 中の符号化されたパス分離文字が先に伝えられるのを許可するかどうかを 決定する |
|---|---|
| 構文: | AllowEncodedSlashes On|Off |
| デフォルト: | AllowEncodedSlashes Off |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | Apache 2.0.46 以降で使用可能 |
AllowEncodedSlashes ディレクティブは符号化された
パス分離文字 (/ は %2F、さらにシステムによっては
\ に対応する %5C) が存在する URL の使用を
許可するかどうかを決定します。通常はそのような URL は 404 (Not found) エラー
で拒否されます。
AllowEncodedSlashes On による
パス分離文字の使用は、PATH_INFO と合わせて
使うときに一番役に立ちます。
符号化されたスラッシュを許可することは、復号をすることを
意味しません。%2F や (関係するシステムでの)
%5C は、他の部分が復号された URL の中でもそのままの形式で
残されます。
| 説明: | .htaccess で許可されるディレクティブの種類 |
|---|---|
| 構文: | AllowOverride All|None|directive-type
[directive-type] ... |
| デフォルト: | AllowOverride All |
| コンテキスト: | ディレクトリ |
| ステータス: | Core |
| モジュール: | core |
サーバが (AccessFileName によって指定された)
.htaccess ファイルを見つけた時、そのファイルの中で
宣言されたどのディレクティブがより前に定義された設定ディレクティブを
上書きできるかを知る必要があります。
AllowOverride は正規表現無しの<Directory>
セクションでのみ有効で、<Location> や <DirectoryMatch>
や <Files> セクションでは無効です。
このディレクティブを None に設定すると、.htaccess ファイルは完全に
無視されます。
この場合、サーバはファイルシステムの .htaccess ファイルを読むことを
試みさえしません。
このディレクティブが All に設定されている時には、
.htaccess という コンテキスト を持つ
全てのディレクティブが利用できます。
directive-type には、以下のディレクティブ群の キーワードのどれかを指定します。
AuthDBMGroupFile,
AuthDBMUserFile,
AuthGroupFile,
AuthName,
AuthType, AuthUserFile, Require など)。DefaultType, ErrorDocument, ForceType, LanguagePriority,
SetHandler, SetInputFilter, SetOutputFilter,
mod_mime の Add* と Remove*
ディレクティブなど)、
ドキュメントのメタデータを制御するディレクティブ (Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName),
mod_rewrite のディレクティブ RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule) と
mod_actions の
Action
ディレクティブの使用を許可する。AddDescription,
AddIcon, AddIconByEncoding,
AddIconByType,
DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName
など)。Allow, Deny, Order).Options と
XBitHack)。
Options で設定するオプション
を、(空白を含めない) コンマ区切りのリストにして等号の後に続けることで
設定できます。例:
AllowOverride AuthConfig Indexes
上の例では AuthConfig と Indexes のどちらにも
属さないディレクティブはすべて内部サーバエラーを引き起こします。
| 説明: | HTTP 認証の認可領域 (訳注: realm) |
|---|---|
| 構文: | AuthName auth-domain |
| コンテキスト: | ディレクトリ, .htaccess |
| 上書き: | AuthConfig |
| ステータス: | Core |
| モジュール: | core |
このディレクティブはディレクトリに対する認可領域 (訳注: realm)
の名前を指定します。
認可領域は、利用者がどのユーザ名とパスワードを送信すればよいのかを
クライアントに教えるために利用します。
AuthName は一つの引数をとり、
スペースが含まれる場合には、
引用符で括らなければなりません。
このディレクティブは
AuthType ディレクティブや
Require ディレクティブと、
AuthUserFile や
AuthGroupFile などのディレクティブと
一緒に利用する必要があります。
例えば:
AuthName "Top Secret"
ここで AuthName に指定した文字列が、
大部分のブラウザのパスワードダイアログに表示されます。
| 説明: | ユーザ認証の種類 |
|---|---|
| 構文: | AuthType Basic|Digest |
| コンテキスト: | ディレクトリ, .htaccess |
| 上書き: | AuthConfig |
| ステータス: | Core |
| モジュール: | core |
このディレクティブは対象ディレクトリで利用するユーザー認証の種類を選びます。
使用できる認証方式は Basic (mod_auth_basic
で実装) と Digest (mod_auth_digest
で実装) です。
認証を有効にするには、AuthName
と Require ディレクティブも
使う必要があります。それに加えて認証プロバイダモジュールの
mod_authn_file 等と、承認モジュール
mod_authz_user 等もサーバに組み込む必要があります。
| 説明: | CGI スクリプトのインタープリタの位置を調べるための手法 |
|---|---|
| 構文: | CGIMapExtension cgi-path .extension |
| コンテキスト: | ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | NetWare のみ |
このディレクティブは Apache が CGI スクリプトを実行するための
インタープリタを探す方法を制御します。
例えば、CGIMapExtension sys:\foo.nlm .foo と設定すると
.foo という拡張子のすべての CGI スクリプトは FOO インタープリタに
渡されます。
| 説明: | Content-MD5 HTTP 応答ヘッダの生成を有効にする |
|---|---|
| 構文: | ContentDigest On|Off |
| デフォルト: | ContentDigest Off |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | Options |
| ステータス: | Core |
| モジュール: | core |
このディレクティブは、RFC1864 及び RFC2616 において定義されている
Content-MD5 ヘッダーの生成を有効にします。
MD5 は、任意長のデータの「メッセージダイジェスト」(「指紋」 と表現されることもある) を計算するアルゴリズムで、 データの変更があった場合には非常に高い信頼度でメッセージダイジェストに変更が 反映されます。
Content-MD5 ヘッダは、エンドツーエンドで
エンティティボディーに含まれるメッセージの完全性チェック
(Message Integrity Check - MIC)を提供します。
このヘッダを調べることで、プロキシやクライアントは、
途中経路におけるエンティティボディの予期せぬ変更などを
検出することができます。ヘッダの例:
Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
リクエスト毎にメッセージダイジェストを計算する (値はキャッシュされません) ことから、 サーバパフォーマンスが低下することについて注意してください。
Content-MD5は、core 機能により処理された
ドキュメントを送るときのみ有効であり、
SSI ドキュメントや CGI スクリプトの出力、バイトレンジを指定した
応答の場合にはこのヘッダは付与されません。
| 説明: | サーバがコンテントタイプを決定できないときに 送られる MIME コンテントタイプ |
|---|---|
| 構文: | DefaultType MIME-type|none |
| デフォルト: | DefaultType text/plain |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
サーバは、MIME タイプ のマッピングでは決定できない ドキュメントの送信を要求されることがあります。
サーバは、ドキュメントのコンテントタイプをクライアントに通知するべき(SHOULD)です。
もし通常の方法ではコンテントタイプが分からない場合は、
DefaultType で指定されたタイプを利用します。
例:
DefaultType image/gif
これは .gif という拡張子がファイル名に含まれていない
多くの GIF 画像が含まれているディレクトリに適しているでしょう。
サーバ側でも管理者側(たとえば proxy)でもコンテントタイプが分からない場合で、 MIME タイプの情報が誤ってついているかもしれないぐらいであればむしろ無いほうがよい、 という場合もあるでしょう。このような場合は、次のようにします。
DefaultType None
DefaultType None は httpd-2.2.7 以降で使えます。
ForceType ディレクティブと
違って、このディレクティブはデフォルトの MIME タイプを提供するだけで
あることに注意してください。ファイル名の拡張子を含め、
メディアタイプを決定できる他の MIME タイプの定義があれば
このデフォルトは上書きされます。
| 説明: | 指定のファイルシステムのディレクトリとサブディレクトリとのみに 適用されるディレクティブを囲む |
|---|---|
| 構文: | <Directory directory-path>
... </Directory> |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |
| ステータス: | Core |
| モジュール: | core |
指定されたディレクトリとそのサブディレクトリにのみ
ディレクティブを適用させるためには、
<Directory> と
</Directory> を対として、ディレクティブ群を囲います。
その中には、ディレクトリコンテキストで許可された全てのディレクティブを
利用できます。
directive-path は、フルパスもしくは Unix のシェル形式の
ワイルドカードを指定します。
? は任意の 1 文字、* は任意の文字列にマッチします。
シェルにおける指定同様、文字の範囲を [] で指定できます。
ワイルドカードは `/' 文字にはマッチしませんので、
/home/user/public_html には
<Directory /*/public_html> はマッチしませんが、
<Directory /home/*/public_html> はマッチします。
例:
<Directory /usr/local/httpd/htdocs>
Options Indexes FollowSymLinks
</Directory>
directory-path 引数には注意してください: その引数は
Apache がファイルをアクセスするために使うファイルシステムのパスに
そのままマッチする必要があります。ある <Directory> に
適用されるディレクティブは、別のシンボリックリンクをたどったりして
同じディレクトリを違うパスでアクセスした場合には適用されません。
~ という文字を
付加することで正規表現を利用することもできます。
例えば:
<Directory ~ "^/www/.*/[0-9]{3}">
といった指定の場合、/www/ 以下にある数字
3 文字のディレクトリにマッチします。
もし複数の (正規表現以外の) <Directory>セクションが
ドキュメントを含むディレクトリ (やその上位ディレクトリのどれか) とマッチしたならば、
.htaccess ファイルのディレクティブも読み込みつつ、
短いパスから順に適用されます。
例えば、
<Directory />
AllowOverride None
</Directory>
<Directory /home/>
AllowOverride FileInfo
</Directory>
と設定し、ドキュメント /home/web/dir/doc.html への
アクセスがあった場合には以下のように動作します:
AllowOverride None が適用される。
(.htaccess ファイルは無効になる)AllowOverride FileInfo が適用される
(/home ディレクトリに対して)。/home/.htaccess, /home/web/.htaccess,
/home/web/dir/.htaccess の順にそれらのファイル中の
FileInfo ディレクティブが適用される。正規表現は、通常のセクションがすべて適用されるまで 考慮されません。 その後、全ての正規表現が設定ファイルに現れた順で試されます。 例えば、以下のような場合に
<Directory ~ abc$>
# ... directives here ...
</Directory>
正規表現のセクションはすべての通常の <Directory> と
.htaccess の適用が終わるまで考慮されません。
その後で、正規表現は /home/abc/public_html/abc にマッチし、
対応する <Directory> が適用されます。
Apache のデフォルトでは <Directory /> へのアクセスは
Allow from All になっていることに注意してください。
これは、URL からマップされたどのファイルでも Apache は送るということです。
これは以下のようにして変更することが推奨されています。
<Directory />
Order Deny,Allow
Deny from All
</Directory>
そしてアクセスを可能にしたいディレクトリに対して 個別に設定すればよいでしょう。 このあたりについては、セキュリティに関するコツを 参照してください。
ディレクトリセクションは httpd.conf ファイル書きます。
<Directory>
ディレクティブは入れ子にすることができず、
<Limit> や <LimitExcept> セクションの中にも
記述できません。
| 説明: | 正規表現にマッチするファイルシステムのディレクトリと サブディレクトリとのみに適用されるディレクティブを囲む |
|---|---|
| 構文: | <DirectoryMatch regex>
... </DirectoryMatch> |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |
| ステータス: | Core |
| モジュール: | core |
<Directory>
ディレクティブと同様に、<DirectoryMatch>
と </DirectoryMatch> は指定されたディレクトリと
そのサブディレクトリにのみ適用されるディレクティブ群を囲います。
しかし、このディレクティブは引数として正規表現をとります。例えば:
<DirectoryMatch "^/www/(.+/)?[0-9]{3}">
は /www/ 以下にある数字 3 文字のディレクトリにマッチします。
<Directory> と正規表現の指定が
適用される順番については <Directory>| 説明: | ウェブから見えるメインのドキュメントツリーになる ディレクトリ |
|---|---|
| 構文: | DocumentRoot directory-path |
| デフォルト: | DocumentRoot /usr/local/apache/htdocs |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |
| ステータス: | Core |
| モジュール: | core |
このディレクティブは、httpd
がファイルを提供するディレクトリを設定します。
Alias のようなディレクティブにマッチしない場合には、
ドキュメントの (訳注:ファイルシステム上の) パスを生成するために、
リクエストされた URL のパス部分をドキュメントルートに付与します。
例:
DocumentRoot /usr/web
この場合、
http://www.my.host.com/index.html へのアクセスがあれば
/usr/web/index.html が返されます。
directory-path が絶対パスでない場合は、
ServerRoot
からの相対パスとみなされます。
DocumentRoot は最後のスラッシュ無しで
指定する必要があります。
| 説明: | 配送中にファイルを読み込むためにメモリマッピングを 使うかどうか |
|---|---|
| 構文: | EnableMMAP On|Off |
| デフォルト: | EnableMMAP On |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
このディレクティブは配送中にファイルの内容を読み込む必要があるときに
httpd がメモリマッピングを使うかどうかを制御します。
デフォルトでは、
例えば、mod_include を使って SSI ファイルを配送
するときのように、ファイルの途中のデータをアクセスする必要があるときには
Apache は OS がサポートしていればファイルをメモリにマップします。
このメモリマップは性能の向上を持たらすことがあります。 しかし、環境によっては運用上の問題を防ぐためにメモリマッピングを 使用しないようにした方が良い場合もあります:
httpd の性能が落ちるものがあります。DocumentRoot
では、httpd がメモリマップしている間にファイルが削除されたり
短くなったりしたときに起こるセグメンテーションフォールトのために
httpd がクラッシュする可能性があります。これらの問題に当てはまるサーバの設定の場合は、以下のようにして ファイルの配送時のメモリマッピングを使用不可にしてください:
EnableMMAP Off
NFS マウントされたファイルには、問題のあるファイルにのみ明示的に この機能を使用不可にします:
<Directory "/path-to-nfs-files">
EnableMMAP Off
</Directory>
| 説明: | ファイルのクライアントへの配送時にカーネルの sendfile サポートを 使うかどうか |
|---|---|
| 構文: | EnableSendfile On|Off |
| デフォルト: | EnableSendfile On |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | バージョン 2.0.44 以降で使用可能 |
このディレクティブはクライアントにファイルの内容を送るときに
httpd がカーネルの
sendfile サポートを使うかどうかを制御します。デフォルトでは、
例えば静的なファイルの配送のように、リクエストの処理にファイルの
途中のデータのアクセスを必要としないときには、Apache は OS が
サポートしていればファイルを読み込むことなく sendfile を使って
ファイルの内容を送ります。
sendfile は read と send を別々に行なうことと、バッファの割り当てを 回避します。しかし、プラットフォームやファイルシステムの中には 運用上の問題を避けるためにこの機能を使用不可にした方が良い場合があります:
DocumentRoot
(例えば NFS や SMB)
では、カーネルは自身のキャッシュを使ってネットワークからのファイルを
送ることができないことがあります。これらの問題に当てはまるサーバの設定の場合は、以下のようにして この機能を使用不可にしてください:
EnableSendfile Off
NFS や SMB マウントされたファイルには、問題のあるファイルにのみ明示的に この機能を使用不可にします:
<Directory "/path-to-nfs-files">
EnableSendfile Off
</Directory>
| 説明: | エラーが発生したときにサーバがクライアントに送るもの |
|---|---|
| 構文: | ErrorDocument error-code document |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | Apache 2.0 ではテキストをクウォートする構文が以前のバージョンから 変わっています。 |
問題やエラーが発生したときの動作として、 Apache には以下の四つのうち一つの動作を設定することができます。
最初のものがデフォルトの動作で、2 番目から 4 番目は、
ErrorDocumentディレクティブにより、
HTTP のレスポンスコードと、メッセージか URL を指定することで設定します。
Apache が問題もしくはエラーに関する追加情報を提供することがあります。
URL の場合は、スラッシュで始まる (/) ローカルの web-path (
DocumentRoot からの相対パス
) か、クライアントが解決できる完全な URL を指定します。
もしくは、ブラウザに表示されるメッセージを指定できます。
例:
ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
ErrorDocument 401 /subscription_info.html
ErrorDocument 403 "Sorry can't allow you access today"
加えて、特別な値 default を使って Apache に
ハードコードされている簡単なメッセージを指定することができます。
通常は必要ではありませんが、default を使うと
既存の ErrorDocument ディレクティブの設定を
継承するところで、Apache のハードコードされた簡単なメッセージに
戻すことができます。
ErrorDocument 404 /cgi-bin/bad_urls.pl
<Directory /web/docs>
ErrorDocument 404 default
</Directory>
リモート URL (例えば、頭に http と付与した方法) を
ErrorDocument に指定するとき、
たとえ文書が同じサーバにあろうとも、ドキュメントがどこにあるかを通知するために、
Apache はリダイレクトをクライアントに送出するということに、注意してください。
これにはいろいろと関連して起こる問題があります。
中でも最も重要なのは、クライアントは元々のエラーステータスコードを受け取らず、
代わりにリダイレクトのステータスコードを受け取るということです。
これにより、ステータスコードを使って URL が有効であるかどうかを決定しようとする
ウェブロボットやその他クライアントを、混乱させるかもしれません。
さらに、ErrorDocument 401 にリモートの URL を指定すると、
クライアントは 401 というステータスコードを受け取らないため、
パスワードをユーザーに入力要求しなければならないことがわかりません。
従って、ErrorDocument 401 というディレクティブを使う場合は、
必ずローカルな文書を参照しなければなりません。
Microsoft Internet Explorer (MSIE) はデフォルトではサーバが生成したエラーメッセージが 「小さすぎる」ときには無視をして自分自身の「やさしい」エラーメッセージで 置換します。サイズのしきい値はエラーの種類によって異なりますが、 一般的にはエラーの文書を 512 バイトよりも大きくすると、MSIE は サーバが生成したエラーを隠さずに表示します。詳しい情報は Microsoft Knowledge Base の記事 Q294807 にあります。
ほとんどのエラーメッセージを上書きすることができますが、特定の状況下では
ErrorDocument の設定にかかわらず
内蔵のメッセージが使われます。
特に、不正な形式のリクエストが検出された場合、通常のリクエスト処理は
即座に中止され、内蔵のエラーメッセージが返されます。
この処置は不正なリクエストによって引き起こされる、セキュリティ問題から
守るために必要な措置です。
2.0 より前のバージョンでは、対になっていない二重引用符を 先頭に付けることによりメッセージであることを指定していました。
| 説明: | サーバがエラーをログ収集する場所 |
|---|---|
| 構文: | ErrorLog file-path|syslog[:facility] |
| デフォルト: | ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows and OS/2) |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |
| ステータス: | Core |
| モジュール: | core |
ErrorLog ディレクティブは、
サーバに生じたさまざまなエラーを
記録する為のファイルの名前を設定します。
file-path が絶対パスでないときは、ServerRoot からの相対パスとみなされます。
ErrorLog /var/log/httpd/error_log
file-path がパイプ (|) から始まる場合は、 エラーログを処理するために実行されるコマンドが 指定されていると解釈されます。
ErrorLog "|/usr/local/bin/httpd_errors"
ファイル名の変わりに syslog と指定することによって、
システムがサポートしていれば syslogd(8) を利用したロギングが有効になります。
デフォルトでは、local7 ファシリティとなりますが、
syslog:facility といった形で記述することにより、
通常 syslog(1) のドキュメントで説明されているファシリティの一つを使うように
することができます。
ErrorLog syslog:user
セキュリティ: ログファイルを格納するディレクトリが、サーバを起動したユーザ以外の ユーザによって書き込める場合にセキュリティが破られる可能性があることに 関する詳細は セキュリティに関するコツ を 参照してください。
Unix 以外のプラットフォームでファイルのパスを入力するときは、 プラットフォームがバックスラッシュの使用を許していたとしても、 確実にスラッシュのみが使用されるように注意してください。一般的には、 設定ファイル全般でスラッシュのみを使う方が良いでしょう。
| 説明: | ETag HTTP 応答ヘッダを作成するために使用される ファイルの属性 |
|---|---|
| 構文: | FileETag component ... |
| デフォルト: | FileETag INode MTime Size |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
FileETag ディレクティブは
ドキュメントがファイルに基づいたものであるときに、
ETag (エンティティタグ) 応答ヘッダフィールドを作成するときに使用する
ファイルの属性を設定します。 (ETag の値はネットワークの帯域を節約するための
キャッシュの管理で使われます。) Apache 1.3.22 以前では、ETag の値は
常にファイルの inode, サイズ、最終修正時刻 (mtime) から作成
されていました。FileETag ディレクティブにより、これらのどれを使うかを
選ぶことができます。認識されるキーワードは:
FileETag INode MTime Size
ETag フィールドを
応答に付加しませんINode, MTime, Size キーワードには
+ や - を前に付けて
指定することもできます。この場合は、より広い範囲から継承された
デフォルトの設定に変更を加えるようになります。そのような接頭辞の
無いキーワードを指定すると、即座に継承した設定を無効にします。
あるディレクトリの設定に
FileETag INode MTime Size があり、
サブディレクトリの設定に FileETag -INode があるときは、
そのサブディレクトリの設定は (設定が上書きされなければサブディレクトリの
サブディレクトリにも継承されます) FileETag MTime Size
と同じになります。
mod_dav_fs をストレージプロバイダとして
使っているような Directory や Location では、デフォルト値を変更しないでください。
条件つきリクエスト中で、mod_dav_fs では
INode MTime Size
という形式の固定フォーマットであることを前提として
ETag の比較を行っています。もし ETag フォーマットを
FileETag で変えてしまうと、条件つきリクエストが
うまく動作しなくなるでしょう。
| 説明: | マッチするファイル名に適用されるディレクティブを囲む |
|---|---|
| 構文: | <Files filename> ... </Files> |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | All |
| ステータス: | Core |
| モジュール: | core |
<Files> ディレクティブは、
その中にあるディレクティブの適用範囲をファイル名で制限します。
<Directory> ディレクティブや <Location> ディレクティブと
同じような機能を持ちます。
これは、</Files> ディレクティブと対に
なっていなければなりません。
このセクション中のディレクティブは、ベース名 (ファイル名の最後の部分)
が指定されたファイル名にマッチするすべてのオブジェクトに適用されます。
<Files> セクションは
<Directory> セクションと
.htaccess が読み込まれた後、
<Location> セクションよりは先に
設定ファイルに現れた順に適用されます。
<Files> は、
<Directory> セクション内に
ネストさせることができ、
ファイルシステムの一部にのみ限定して適用させることができます。
filename 引数は、ファイル名かワイルドカード文字列
で、ワイルドカードでは ? は一つの文字、* は任意の文字列にマッチします。
~ という文字を付加することで正規表現を使うこともできます。
例えば、
<Files ~ "\.(gif|jpe?g|png)$">
とすることにより、一般的なインターネットの画像フォーマットにマッチします。
ただし、
<FilesMatch> を使う方が
推奨されています。
ちなみに、<Directory> と <Location> セクションとは異なり、
<Files>
は .htaccess ファイル内で利用することができます。
これにより、ユーザがファイル毎にアクセスの制御を行なうことができるように
なっています。
| 説明: | 正規表現にマッチするファイル名に適用される ディレクティブを囲む |
|---|---|
| 構文: | <FilesMatch regex> ... </FilesMatch> |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | All |
| ステータス: | Core |
| モジュール: | core |
<FilesMatch> ディレクティブは、
<Files>
ディレクティブ同様にその中にあるディレクティブの適用範囲をファイル名で制限します。ただし、
このディレクティブには正規表現を指定します。
例えば:
<FilesMatch "\.(gif|jpe?g|png)$">
は一般的なインターネットの画像形式にマッチします。
| 説明: | すべてのマッチするファイルが指定の MIME コンテントタイプで 送られるようにする |
|---|---|
| 構文: | ForceType MIME-type|None |
| コンテキスト: | ディレクトリ, .htaccess |
| 上書き: | FileInfo |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | Apache 2.0 で core に移動 |
.htaccess や <Directory> セクション、
<Location> セクション、
<Files> セクションに
書かれた場合、このディレクティブはそこにあるすべてのファイルが
MIME-type
で指定されたコンテントタイプとして扱われるようにします。たとえば、
GIF ファイルばかりのディレクトリがあって、すべてのファイルを .gif
で終わらせたくはないときに、以下のものを使用します:
ForceType image/gif
DefaultType と違って
このディレクティブはメディアタイプを決めることができるかもしれない
ファイルの拡張子も含め、すべての MIME タイプの関連付けを
上書きすることに注意してください。
None という値を使うことで ForceType の
設定を無効にできます:
# force all files to be image/gif:
<Location /images>
ForceType image/gif
</Location>
# but normal mime-type associations here:
<Location /images/mixed>
ForceType None
</Location>
| 説明: | クライアントの IP アドレスの DNS ルックアップを 有効にする |
|---|---|
| 構文: | HostnameLookups On|Off|Double |
| デフォルト: | HostnameLookups Off |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
| ステータス: | Core |
| モジュール: | core |
このディレクティブは、ホスト名をログ収集できるように
DNS ルックアップを有効にします
(さらに、CGI/SSI に REMOTE_HOST 変数として渡します)。
Doubleを指定した場合、2 重の逆引きを行ないます。
つまり、逆引きの後に、その結果に対して正引きを行ないます。正引きの
結果の IP アドレスの中にオリジナルのアドレスと一致するものがなければ
なりません。("tcpwrappers" の用語では PARANOID と呼ばれています。)
mod_authz_host でホスト名によるアクセス
制御を行なう場合には、
設定の如何によらず 2 重の逆引きが実行されます。
これは、セキュリティを保つために必要です。
HostnameLookups Double を設定しない限り、
他の部分はこの 2 重逆引きの結果を使うことはできません。
例えば、HostnameLookups On と設定してある状態で、
ホスト名によるアクセス制限を行なったオブジェクトへの
リクエストを受けたとすると、2 重の逆引きが成功するか否かによらず、
REMOTE_HOST には通常の逆引き結果が渡されます。
ディレクティブのデフォルトは
本当に逆引きを必要としているわけではないサイトの
ネットワークトラフィックを低減させるために、Off になっています。
ルックアップによる余計な遅延がなくなるため、
エンドユーザにとっても良いでしょう。
DNS のルックアップには、かなりの時間が必要となる場合が多く、
負荷の高いサイトではこのディレクティブは Off にすべきです。
なお、/support ディレクトリに含まれ、デフォルトでは
インストールディレクトリの bin サブディレクトリに
インストールされる logresolve ユーティリティにより、
Apache の動作とは別に、ログに残されている IP アドレスからホスト名を
ルックアップすることが可能です。
| 説明: | 起動時にテストが真であるときのみに処理されるディレクティブを 囲む |
|---|---|
| 構文: | <IfDefine [!]parameter-name> ...
</IfDefine> |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | All |
| ステータス: | Core |
| モジュール: | core |
<IfDefine test>...</IfDefine>
セクションは、
ディレクティブを条件付きで指定するために利用します。
<IfDefine> セクションに
含まれるディレクティブは、testが
定義されているときのみ処理されます。
もし test が定義されていなければ、
開始と終了の指定の間のディレクティブは無視されます。
<IfDefine> セクションディレクティブに
指定する test は、
次の二つの形式のうちの一つをとります:
!parameter-name前者の場合には、parameter-name と名付けられたパラメータが 定義されていれば開始と終了の間のディレクティブが処理されます。 後者の場合は逆で、parameter-name が指定されていない 場合に処理されます。
parameter-name 引数は、サーバを起動する際に
httpd のコマンドラインに
-Dparameter- という形で指定すると定義されます。
<IfDefine> セクションは
入れ子にすることができ、複数のパラメータによるテストをするために使用できます。
例:
httpd -DReverseProxy ...
# httpd.conf
<IfDefine ReverseProxy>
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/libproxy.so
</IfDefine>
| 説明: | モジュールの存在するかしないかに応じて処理される ディレクティブを囲む |
|---|---|
| 構文: | <IfModule [!]module-file|module-identifier> ...
</IfModule> |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | All |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | モジュール識別子はバージョン 2.1 以降で使用可能。 |
<IfModule test>...</IfModule>
セクションは、モジュールが存在するときに処理されるディレクティブを
指定するために利用します。
<IfModule> セクションに
含まれるディレクティブは、test
で指定するモジュールが組み込まれているときのみ処理されます。
もし test が組み込まれていなければ、開始と終了の間のディレクティブ
は無視されます。
<IfModule> セクションディレクティブに
指定する test は、
次の二つの形式のうちの一つをとります。
前者の場合は、module と名付けられたモジュールが
Apache に組み込まれていれば
(コンパイル済みのものと、LoadModule を利用して
動的に読み込んだものの両方)、
開始と終了の間のディレクティブが処理されます。
後者の場合は逆で、module が組み込まれていない
場合に処理されます。
module 引数は、モジュール識別子か
コンパイルをした時のモジュールのファイル名です。
例えば、rewrite_module は識別子で
mod_rewrite.c はファイル名です。
モジュールが複数のソースファイルから構成されている場合は、文字列
STANDARD20_MODULE_STUFF があるファイルの名前を
使ってください。
<IfModule> セクションは
入れ子にすることが可能であり、
複数のモジュールのテストを行なうために使用できます。
<IfModule> セクションの中に
入れる必要はありません。| 説明: | サーバ設定ファイル中から他の設定ファイルを取り込む |
|---|---|
| 構文: | Include file-path|directory-path |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | ワイルドカードによるマッチは 2.0.41 以降で使用可能 |
このディレクティブにより、サーバの設定ファイルから 他の設定ファイルをインクルードすることができます。
複数のファイルをアルファベット順に一度に読み込むために、
シェル形式 (fnmatch) のワイルドカード文字を使うことができます。
さらに、Include にディレクトリを指定した場合は、
ディレクトリとそのサブディレクトリ内の全てのファイルを
アルファベット順に読み込んで、設定ファイルとして処理します。
しかし、ディレクトリ全体を読み込むのはお勧めできません。
ふとしたことから httpd が読み込みに失敗するような
一時ファイルをディレクトリに残してしまうようなことがよくあるからです。
指定するファイルパスは絶対パスか、
ServerRoot ディレクトリからの
相対パスか、のどちらかです。
例:
Include /usr/local/apache2/conf/ssl.conf
Include /usr/local/apache2/conf/vhosts/*.conf
ServerRoot からの相対パスの場合は:
Include conf/ssl.conf
Include conf/vhosts/*.conf
apachectl configtest を実行すると、設定をチェックしている時に
読み込まれたファイルのリストが表示されます:
root@host# apachectl configtest
Processing config file: /usr/local/apache2/conf/ssl.conf
Processing config file: /usr/local/apache2/conf/vhosts/vhost1.conf
Processing config file: /usr/local/apache2/conf/vhosts/vhost2.conf
Syntax OK
| 説明: | HTTP の持続的な接続を有効にする |
|---|---|
| 構文: | KeepAlive On|Off |
| デフォルト: | KeepAlive On |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |
| ステータス: | Core |
| モジュール: | core |
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 に対応したクライアントの際には、 特に指定されない限りはデフォルトとして持続的な接続が行なわれます。 クライアントが要求すれば、コンテンツの容量を判別できないものを 持続的な接続を通して送るために、チャンクエンコーディングが用いられます。
| 説明: | 持続的な接続で次のリクエストが来るまでサーバが待つ時間 |
|---|---|
| 構文: | KeepAliveTimeout seconds |
| デフォルト: | KeepAliveTimeout 5 |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |
| ステータス: | Core |
| モジュール: | core |
接続を閉じる前に、Apache が次のリクエストを何秒待つかを指定します。
リクエストを受け付けた後は、Timeout ディレクティブによって
指定されたタイムアウト値が使われます。
KeepAliveTimeout を大きな値に設定すると、
負荷の高いサーバにおいてはパフォーマンスの問題を引き起こす場合があります。
タイムアウトが長ければ長いほど、より多くのサーバプロセスが
活発でないクライアントからの接続の終了を待ち続けることになります。
| 説明: | 囲いの中にあるアクセス制御の適用を特定の HTTP メソッドのみに 制限する |
|---|---|
| 構文: | <Limit method [method] ... > ...
</Limit> |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | All |
| ステータス: | Core |
| モジュール: | core |
アクセス制御は、通常全てのアクセスメソッドに対して
影響し、普通はこれが望ましい挙動です。
そうしたことから、大部分の場合にはアクセス制御に関わるディレクティブを
<Limit> セクション内に
書くべきではありません。
<Limit> ディレクティブの
目的は、アクセス制御の範囲を
指定された HTTP メソッドに限定するためです。
それ以外のメソッドは、<Limit> で囲われたアクセス制御の
影響を受けません。
以下の例は、POST, PUT, DELETE のメソッドに対してのみアクセスの制御を行ない、
それ以外のメソッドについては制限しません:
<Limit POST PUT DELETE>
Require valid-user
</Limit>
メソッド名には以下の中から一つ以上を列挙することができます:
GET,
POST, PUT, DELETE,
CONNECT, OPTIONS,
PATCH, PROPFIND, PROPPATCH,
MKCOL, COPY, MOVE,
LOCK, UNLOCK. メソッド名は
大文字小文字を区別します。 GET を指定した場合には
HEAD リクエストにも制限がかかります。TRACE
メソッドに制限をかけることはできません。
<Limit>
セクションの代わりに <LimitExcept> セクションを使用した方が良いでしょう。
<LimitExcept>
セクションでは不特定のメソッドに対しても防御できるからです。| 説明: | 指定されたもの以外の HTTP メソッドにアクセス制御を 制限する |
|---|---|
| 構文: | <LimitExcept method [method] ... > ...
</LimitExcept> |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | All |
| ステータス: | Core |
| モジュール: | core |
<LimitExcept> と
</LimitExcept> は、引数に
含まれていない
HTTP のアクセスメソッドに適用するためのアクセス制御
ディレクティブを括るために利用します。
つまり、<Limit> セクションの反対の動作をし、
標準のメソッドと標準外や未認識のメソッドの場合の両方を設定できます。
<Limit> のドキュメントも
併せて参照してください。
例:
<LimitExcept POST GET>
Require valid-user
</LimitExcept>
| 説明: | 内部リダイレクトと入れ子になったサブリクエストの最大数を決定する |
|---|---|
| 構文: | LimitInternalRecursion number [number] |
| デフォルト: | LimitInternalRecursion 10 |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |
| ステータス: | Core |
| モジュール: | core |
| 互換性: | Apache 2.0.47 以降で使用可能 |
内部リダイレクトは例えば Action ディレクティブを
使っているときに起こります。Action ディレクティブは
元々のリクエストを CGI スクリプトに内部リダイレクトを行ないます。
サブリクエストはいくつかの URI に対して、リクエストされたときに
何が起こるかを調べるための Apache の機構です。例えば、mod_dir
は DirectoryIndex ディレクティブ
がリストするファイルを調べるためにサブリクエストを使います。
LimitInternalRecursion は内部リダイレクトや
サブリクエストが無限ループに陥ったときのサーバクラッシュを防ぎます。
普通、そのようなループは設定に失敗したときに発生します。
このディレクティブは、リクエスト毎に評価される、二つの違う限界値を 設定します。最初の number は、起こり得る 内部リクエストの最大値を設定します。二つめの number は サブリクエストが入れ子にできる深さを設定します。number を 一つだけ指定したときは、両方の限界値にその値が設定されます。
LimitInternalRecursion 5
| 説明: | クライアントから送られる HTTP リクエストのボディの 総量を制限する |
|---|---|
| 構文: | LimitRequestBody bytes |
| デフォルト: | LimitRequestBody 0 |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | All |
| ステータス: | Core |
| モジュール: | core |
このディレクティブは、リクエストボディに許されるバイト数、bytes を 0 (無制限を意味します) から 2147483647 (2GB) までの数値で指定します。
LimitRequestBody ディレクティブは、
ディレクティブが書かれたコンテキスト
(サーバ全体、ディレクトリ、ファイル、ロケーション) 内で
許容する HTTP リクエストメッセージボディのサイズに制限をかけることができます。
クライアントのリクエストがその制限値を越えていれば、
サーバはリクエストを処理せずにエラーを返します。
普通のリクエストメッセージボディのサイズは、リソースの種類や
許可されているメソッドによって大きく変わります。
CGI スクリプトは、よく情報を受信するために
メッセージボディを使います。
PUT メソッドの実装は、このディレクティブの値として
少なくともあるリソースに対してサーバが受け付けようとする
表現の大きさほどの値を必要とします。
このディレクティブは、 管理者にクライアントからの異常なリクエストを制御できるようにし、 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。
ある場所へのファイルアップロードを許可する場合に、 アップロードできるファイルのサイズを 100K に制限したければ、 以下のように指定します:
LimitRequestBody 102400
| 説明: | クライアントからの HTTP リクエストのヘッダフィールドの数を 制限する |
|---|---|
| 構文: | LimitRequestFields number |
| デフォルト: | LimitRequestFields 100 |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | Core |
| モジュール: | core |
number には、0 (無制限を意味します) から 32767
までの整数を指定します。
デフォルト値は、定数 DEFAULT_LIMIT_REQUEST_FIELDS
によりコンパイル時に定義されます (配布時には 100 と指定されています)。
LimitRequestBody ディレクティブは、
サーバ管理者が HTTP リクエスト中において許可するリクエストヘッダフィールド数を
指定します。
サーバはこの値には通常のクライアントからのリクエストに含まれるであろう
フィールドの数より大きな値が必要とします。
クライアントにより使われた要求ヘッダーフィールドの数が
20 を超えることはほとんどありませんが、
これは種々のクライアントの実装によって変わり、
詳細なコンテントネゴシエーションをするためのブラウザの設定までにも
影響されることがあります。
オプションの HTTP 拡張はリクエストヘッダフィールドを使って表される場合が
多くあります。
このディレクティブは、 管理者にクライアントからの異常なリクエストを制御できるようにし、 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。 リクエストのフィールドが多過ぎることを意味するエラー応答が 普通のクライアントに返されるような時はこの値を増やしてください。
例:
LimitRequestFields 50
| 説明: | クライアントからの HTTP リクエストのヘッダの サイズを制限する |
|---|---|
| 構文: | LimitRequestFieldSize bytes |
| デフォルト: | LimitRequestFieldSize 8190 |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | Core |
| モジュール: | core |
このディレクティブは、HTTP リクエストヘッダ一つで受付ける バイト数 bytes を指定します。
LimitRequestFieldSize ディレクティブは、
HTTP リクエストヘッダで許容されるサイズを増減させることができます。
サーバは、このディレクティブの値として、
一般的なクライアントからリクエストが送られた際に、そのリクエストに
付属しているどのヘッダフィールドについても、
十分足りる大きさになっていなければなりません。
一般的なリクエストヘッダのサイズといっても、その大きさは個々の
クライアントの実装によって大きく異なり、
詳細なコンテントネゴシエーションをサポートするかどうかの、
ブラウザの設定にも影響されたりします。
SPNEGO 認証ヘッダでは 12392 バイトにまで及ぶことすらあります。
このディレクティブは、 管理者にクライアントからの異常なリクエストを制御できるようにし、 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。
例:
LimitRequestFieldSize 4094
| 説明: | クライアントからの HTTP リクエスト行のサイズを制限する |
|---|---|
| 構文: | LimitRequestLine bytes |
| デフォルト: | LimitRequestLine 8190 |
| コンテキスト: | サーバ設定ファイル |
| ステータス: | Core |
| モジュール: | core |
このディレクティブは、HTTP リクエスト行内で許容されるバイト数 bytes を指定します。
LimitRequestLine ディレクティブにより、
クライアントからの HTTP リクエスト行の許容サイズを増減できます。
リクエスト行は、HTTPメソッド、URI、プロトコルバージョンから成っており、
LimitRequestLine はサーバへのリクエストに対して
許容するリクエスト URI の長さを制限することになります。
サーバは、GET リクエストのクエリ部分も含めて、リソースの名前が入るに足る
大きさを必要とします。
このディレクティブは、 管理者にクライアントからの異常なリクエストを制御できるようにし、 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。
例:
LimitRequestLine 4094
| 説明: | XML 形式のリクエストのボディのサイズを制限する |
|---|---|
| 構文: | LimitXMLRequestBody bytes |
| デフォルト: | LimitXMLRequestBody 1000000 |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
| 上書き: | All |
| ステータス: | Core |
| モジュール: | core |
XML 形式のリクエストのボディの最大値を (バイト単位で) 制限します。
値に 0 を指定するとチェックを無効にします。
例:
LimitXMLRequestBody 0
| 説明: | 囲んだディレクティブをマッチする URL のみに適用 |
|---|---|
| 構文: | <Location
URL-path|URL> ... </Location> |
| コンテキスト: | サーバ設定ファイル, バーチャルホスト |