Apache HTTP サーバ バージョン 2.4
説明: | 常に使用可能な Apache HTTP サーバのコア機能 |
---|---|
ステータス: | Core |
説明: | プロトコルを 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
が有効なファイルにマップすれば
受け付けられます。Default
PATH_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 スクリプトなどの、動的に生成される
コンテンツを含むリソースに文字セットパラメータを追加する場合で、
ユーザの入力データが出力に入り、クロスサイトスクリプティングが
引き起こされうる場合です。デフォルト文字セットをセットしたとしても、
ブラウザの "文字エンコードの自動選択" 機能が有効になっているユーザを
守ることにはならないので、もちろんより良い解決策は単にスクリプトを修正
(あるいは削除) することです。
説明: | 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
のどちらにも
属さないディレクティブはすべて内部サーバエラーを引き起こします。
説明: | Individual directives that are allowed in
.htaccess files |
---|---|
構文: | AllowOverrideList None|directive
[directive-type] ... |
デフォルト: | AllowOverrideList None |
コンテキスト: | ディレクトリ |
ステータス: | Core |
モジュール: | core |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
説明: | CGI スクリプトのインタープリタの位置を調べるための手法 |
---|---|
構文: | CGIMapExtension cgi-path .extension |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Core |
モジュール: | core |
互換性: | NetWare のみ |
このディレクティブは Apache が CGI スクリプトを実行するための
インタープリタを探す方法を制御します。
例えば、CGIMapExtension sys:\foo.nlm .foo
と設定すると
.foo
という拡張子のすべての CGI スクリプトは FOO インタープリタに
渡されます。
説明: | Enables passing HTTP authorization headers to scripts as CGI variables |
---|---|
構文: | CGIPassAuth On|Off |
デフォルト: | CGIPassAuth Off |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Core |
モジュール: | core |
互換性: | Available in Apache HTTP Server 2.4.13 and later |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
説明: | Controls how some CGI variables are set |
---|---|
構文: | CGIVar variable rule |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Core |
モジュール: | core |
互換性: | Available in Apache HTTP Server 2.4.21 and later |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
説明: | 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 スクリプトの出力、バイトレンジを指定した
応答の場合にはこのヘッダは付与されません。
説明: | Base directory for the server run-time files |
---|---|
構文: | DefaultRuntimeDir directory-path |
デフォルト: | DefaultRuntimeDir DEFAULT_REL_RUNTIMEDIR (logs/) |
コンテキスト: | サーバ設定ファイル |
ステータス: | Core |
モジュール: | core |
互換性: | Available in Apache 2.4.2 and later |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
ServerRoot
説明: | サーバがコンテントタイプを決定できないときに 送られる MIME コンテントタイプ |
---|---|
構文: | DefaultType MIME-type|none |
デフォルト: | DefaultType text/plain |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Core |
モジュール: | core |
互換性: | 引数 none は Apache 2.2.7 以降で利用可能 |
サーバは、MIME タイプ のマップからは決定できないドキュメントの送信を要求されることがあります。
サーバは、ドキュメントのコンテントタイプをクライアントに通知するべきです。
サーバで通常の方法ではこれが判定できない場合は、
DefaultType
で指定されたタイプを利用します。
例:
DefaultType image/gif
これは .gif
という拡張子がファイル名に含まれていない
多くの GIF 画像が含まれているディレクトリに適しているでしょう。
サーバでも管理者でも判定することができない (例えばプロクシの) 場合、 誤った情報を与えるよりは MIME タイプの指定がない状態が望ましいことも あります。この場合は次のようにします :
DefaultType None
DefaultType None
は httpd-2.2.7
以降でのみ利用できます。
ForceType
ディレクティブと
違って、このディレクティブはデフォルトの MIME タイプを提供するだけで
あることに注意してください。ファイル名の拡張子を含め、
メディアタイプを決定できる他の MIME タイプの定義があれば
このデフォルトは上書きされます。
説明: | 変数の存在を宣言する |
---|---|
構文: | Define parameter-name |
コンテキスト: | サーバ設定ファイル |
ステータス: | Core |
モジュール: | core |
httpd
の -D
引数と同じものです。
このディレクティブを使うと、スタートアップスクリプトに
記載されている -D
引数を書き換える必要なく、
<IfDefine>
セクションを切り替えることができます。
説明: | 指定のファイルシステムのディレクトリとサブディレクトリとのみに 適用されるディレクティブを囲む |
---|---|
構文: | <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>
そしてアクセスを可能にしたいディレクトリに対して 個別に設定すればよいでしょう。 このあたりについては、セキュリティに関するコツを 参照してください。
ディレクトリセクションは apache2.conf
ファイルに書きます。
<Directory>
ディレクティブは入れ子にすることができず、
<Limit>
や <LimitExcept>
セクションの中にも
記述できません。
説明: | 正規表現にマッチするファイルシステムのディレクトリと サブディレクトリとのみに適用されるディレクティブを囲む |
---|---|
構文: | <DirectoryMatch regex>
... </DirectoryMatch> |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Core |
モジュール: | core |
<Directory>
ディレクティブと同様に、<DirectoryMatch>
と </DirectoryMatch>
は指定されたディレクトリと
そのサブディレクトリにのみ適用されるディレクティブ群を囲います。
しかし、このディレクティブは引数として正規表現をとります。例えば:
<DirectoryMatch "^/www/(.+/)?[0-9]{3}">
は /www/
以下にある数字 3 文字のディレクトリにマッチします。
<Directory>
と正規表現の指定が
適用される順番については <Directory>