diff --git a/docs/manual/bind.html b/docs/manual/bind.html index c2af6387d2f4cc850e6d9c38e3dcbe0c1045f753..b9571bd731a766c5887319f9a20975025b2899b9 100644 --- a/docs/manual/bind.html +++ b/docs/manual/bind.html @@ -10,9 +10,9 @@ URI: bind.html.fr Content-Language: fr Content-type: text/html; charset=ISO-8859-1 -URI: bind.html.ja.euc-jp +URI: bind.html.ja.utf8 Content-Language: ja -Content-type: text/html; charset=EUC-JP +Content-type: text/html; charset=UTF-8 URI: bind.html.ko.euc-kr Content-Language: ko diff --git a/docs/manual/bind.html.ja.euc-jp b/docs/manual/bind.html.ja.euc-jp deleted file mode 100644 index c15eaff2d7c099cb516079d8f56af6384f369ff8..0000000000000000000000000000000000000000 --- a/docs/manual/bind.html.ja.euc-jp +++ /dev/null @@ -1,178 +0,0 @@ - - -
-Apache HTTP サーバ バージョン 2.3
-Apache が使用するアドレスとポートの設定をします。
-関連モジュール | 関連ディレクティブ |
---|---|
Apache は起動時に、ローカルマシンのあるポートおよびアドレス - に対して接続し、リクエストが来るのを待ちます。 - デフォルトではマシンのすべてのアドレスに対して listen します。 - しかしながら、特定のポートか、特定のアドレスのみか、 - またはそれらの組み合わせのいずれかを listen するようにする必要があります。 - これは、異なる IP アドレス、ホスト名、ポートに対する Apache - の応答方法を決定するバーチャルホスト機能と組み合わせて使われます。
- -Listen
- ディレクティブで、特定のポートやアドレス・ポートの組からのみ入ってくる
- リクエストを受け付けるようにできます。
- もしポート番号のみが Listen
- ディレクティブで指定された場合は、
- すべてのインターフェースの与えられたポート番号を
- listen します。 IP アドレスがポート番号と同時に与えられた場合は、
- サーバは与えられたポートとインターフェースを listen します。
- 複数の Listen
ディレクティブを用いて
- いくつかの listen するアドレスとポートを指定できます。
- サーバはリストされたアドレスやポートからのすべてのリクエストに
- 対して応答します。
たとえば、ポート 80 と 8000 の両方に対しての接続を受け付けるには
- -
- Listen 80
- Listen 8000
-
とします。 - 二つの指定されたインタフェースとポート番号に対しての接続を受け付けるには、 -
- -
- Listen 192.0.2.1:80
- Listen 192.0.2.5:8000
-
とします。 - IPv6 アドレスは、角括弧で次の例のように囲まなければいけません。
- -
- Listen [2001:db8::a00:20ff:fea7:ccea]:80
-
多くのプラットホームで IPv6 がサポートされてきていて、 - APR はこれらのほとんどで IPv6 をサポートしているので、 - Apache は IPv6 ソケットを割り当てて IPv6 - 経由で送られてきたリクエストを扱うことができます。
- -IPv6 ソケットが IPv4 と IPv6 コネクションの両方を扱うことができるか
- どうかは、Apache 管理者にとって厄介な問題です。
- IPv4 コネクションを IPv6 ソケットで扱う場合は、
- IPv4 マップされた IPv6 アドレスを使用していて、
- ほとんどのプラットホームではデフォルトで使用可能ですが、
- FreeBSD, NetBSD, OpenBSD では、システム全体としてのポリシーとの整合性から、
- デフォルトでは使用不可に設定されています。
- これらのデフォルトで使用不可のプラットホームであっても、
- 特別な configure
の
- 設定パラメータで Apache の挙動を変化させることができます。
一方で、Linux や Tru64 といったプラットホームで IPv4 と IPv6
- の両方を扱うには、マップトアドレスを使用する以外の方法はありません。
- IPv4 と IPv6 のコネクションを最小限のソケットで扱いたいのであれば、
- IPv4 マップの IPv6 アドレスを使用する必要があり、
- --enable-v4-mapped
configure
- オプションを指定します。
--enable-v4-mapped
は、
- FreeBSD, NetBSD, OpenBSD 以外の全てのプラットホームでのデフォルトです。
- ですから、おそらくお手元の Apache はこの設定でビルドされているでしょう。
プラットフォームや APR が何をサポートするかに関わらず、
- IPv4 コネクションのみを扱うようにしたい場合は、
- 次の例のように全ての
- Listen
ディレクティブで
- IPv4 アドレスを指定してください。
- Listen 0.0.0.0:80
- Listen 192.0.2.1:80
-
条件を満たすプラットホームで、Apache が
- IPv4 と IPv6 のコネクションを個別のソケットで扱うようにしたい場合
- (つまり IPv4 マップのアドレスを無効にしたい場合)
- は、--disable-v4-mapped
- configure
- オプションを指定して、次のように個別指定の
- Listen
- ディレクティブを使用してください。
- --disable-v4-mapped
は、
- FreeBSD, NetBSD, OpenBSD プラットホームでのデフォルトです。
Listen
- でバーチャルホストが実装されるわけではありません。
- Listen は単にメインサーバにどのアドレスとポートを listen すべきかを
- 教えるだけです。
- <VirtualHost>
- ディレクティブが使われない場合は、
- 受け入れたリクエストすべてに対して全く同じ挙動をします。
- しかしながら
- <VirtualHost>
- を使って、
- 一つ以上のアドレスやポートに対して異なる挙動をするように
- 指定することができます。
- VirtualHost を実装するには、使用するアドレスとポートを
- まず初めにサーバに通知しなければなりません。
- そして、その指定したアドレスとポートでの
- このバーチャルホストの挙動を設定するために、
- <VirtualHost>
- セクションを作ります。もし
- <VirtualHost>
- が listen していないアドレスとポートに対して
- 設定されてしまうと、
- それにはアクセスできないということに注意してください。
Apache HTTP 泣若 若吾с 2.3
+Apache 篏睡≪鴻若荐絎障
+∫c≪吾ャ若 | ∫ccc |
---|---|
Apache 莎桁若激潟若潟≪ + 絲障・膓鴻ャ緇<障 + с激潟鴻≪鴻絲障 listen 障 + 劫若劫≪鴻帥 + 障腟水 listen 綽荀障 + 違 IP ≪鴻鴻若絲障 Apache + 綽膈号羆阪若c鴻罘純腟水篏帥障
+ +Listen
+ ccс劫若≪鴻祉若腟水ャc
+ 鴻篁с障
+ 若垩帥 Listen
+ ccф絎翫
+ 鴻ゃ潟帥若с若鴻筝若垩
+ listen 障 IP ≪鴻若垩筝翫
+ 泣若筝若ゃ潟帥若с若鴻 listen 障
+ 茲違 Listen
cc
+ ゃ listen ≪鴻若絎с障
+ 泣若鴻≪鴻若鴻鴻
+ 絲障綽膈障
違若 80 8000 筝≧鴻絲障・膓篁
+ +
+ Listen 80
+ Listen 8000
+
障 + 篋ゃ絎ゃ潟帥с若鴻若垩絲障・膓篁 +
+ +
+ Listen 192.0.2.1:80
+ Listen 192.0.2.5:8000
+
障 + IPv6 ≪鴻茹綣сф<箴蚊障違障
+ +
+ Listen [2001:db8::a00:20ff:fea7:ccea]:80
+
紊若 IPv6 泣若 + APR 祉 IPv6 泣若с + Apache IPv6 純宴蚊綵 IPv6 + 腟宴ч鴻宴с障
+ +IPv6 純宴 IPv4 IPv6 潟激с潟筝≧鴻宴с
+ Apache 膊∞c篁馹с
+ IPv4 潟激с潟 IPv6 純宴ф宴翫
+ IPv4 IPv6 ≪鴻篏睡
+ 祉若ст戎純с
+ FreeBSD, NetBSD, OpenBSD с激鴻篏激若翫с
+ с篏睡筝荐絎障
+ т戎筝若сc
+ 劫ャ configure
+ 荐絎<若帥 Apache 紊с障
筝鴻сLinux Tru64 c若 IPv4 IPv6
+ 筝≧鴻宴≪鴻篏睡篁ュ号障
+ IPv4 IPv6 潟激с潟絨純宴ф宴с違
+ IPv4 IPv6 ≪鴻篏睡綽荀
+ --enable-v4-mapped
configure
+ 激с潟絎障
--enable-v4-mapped
+ FreeBSD, NetBSD, OpenBSD 篁ュ若сс
+ с Apache 荐絎сс
若 APR 篏泣若≪
+ IPv4 潟激с潟帥宴翫
+ 罨<箴
+ Listen
cc
+ IPv4 ≪鴻絎
+ Listen 0.0.0.0:80
+ Listen 192.0.2.1:80
+
>散羣若сApache
+ IPv4 IPv6 潟激с潟ャ純宴ф宴翫
+ (ゃ障 IPv4 ≪鴻≦鴻翫)
+ --disable-v4-mapped
+ configure
+ 激с潟絎罨<ユ絎
+ Listen
+ cc篏睡
+ --disable-v4-mapped
+ FreeBSD, NetBSD, OpenBSD 若сс
Listen
+ с若c鴻絎茖с障
+ Listen <ゃ潟泣若≪鴻若 listen 鴻
+ с
+ <VirtualHost>
+ cc篏帥翫
+ ャ鴻鴻絲障障
+
+ <VirtualHost>
+ 篏帥c
+ 筝や札筝≪鴻若絲障違
+ 絎с障
+ VirtualHost 絎茖篏睡≪鴻若
+ 障泣若ャ違障
+ 絎≪鴻若с
+ 若c鴻荐絎
+ <VirtualHost>
+ 祉激с潟篏障
+ <VirtualHost>
+ listen ≪鴻若絲障
+ 荐絎障
+ ≪祉鴻с羈
Apache HTTP サーバ バージョン 2.3
-この文書では、Apache HTTP サーバを設定するのに使用するファイルについて -記述しています。
-関連モジュール | 関連ディレクティブ |
---|---|
Apache は ディレクティブ を設定ファイルに平文で書くことにより設定します。
- メインの設定ファイルは普通は httpd.conf
という名前です。
- このファイルの位置はコンパイル時に設定されますが、コマンドラインの
- -f
フラグにより上書きできます。
- また、他の設定ファイルを Include
- ディレクティブによって追加でき、ワイルドカードを使用して多数の
- 設定ファイルを追加することができます。
- どんなディレクティブも、これらの設定ファイルどれにでも入れることができます。
- Apache は起動時か再起動時のみメイン設定ファイルの変更を認識します。
サーバは MIME
- ドキュメントタイプを含んでいるファイルも読み込みます。ファイル名は
- TypesConfig
- で設定され、デフォルトでは mime.types
- になっています。
Apache の設定ファイルは 1 行に 1 つのディレクティブからなります。 - バックスラッシュ "\" はディレクティブが次の行に継続していることを - 示すために行の最後の文字として使われているかもしれません。 - 行の最後とバックスラッシュの間に他の文字や空白があってはいけません。 -
- -設定ファイルのディレクティブは大文字小文字を区別しませんが、 - 引数にはしばしば区別するものがあります。ハッシュ文字 "#" - で始まる行はコメントと見なされて無視されます。 - 設定ディレクティブの後の行ではコメントが含まれていてはいけません。ディレクティブの前の空行と空白は無視されますので、 - わかりやすくするためにディレクティブをインデントしても構いません。 -
- -設定ファイルの構文エラーは、
- apachectl configtest
- かコマンドラインオプション
- -t
を使って調べられます。
関連モジュール | 関連ディレクティブ |
---|---|
Apache はモジュール化されたサーバです。
- コアサーバには最も基本的な機能だけが含まれています。拡張機能は
- Apache にロードされるモジュールとして利用可能です。デフォルトでは、コンパイル時にモジュールの
- Base セット (基本セット) が
- サーバに含まれます。サーバが動的ロードモジュールを使うようにコンパイルされている場合は、
- モジュールを別にコンパイルして、いつでも
- LoadModule
- ディレクティブを使って追加できます。
- そうでない場合は、モジュールの追加や削除をするためには Apache
- を再コンパイルする必要があります。設定ディレクティブは <IfModule>
- ブロックに入れることで特定のモジュールが存在するときだけ
- 設定ファイルに含まれるようにすることができます。
コマンドラインオプション -l
を使って現時点で
- どのモジュールがサーバにコンパイルされているかを知ることができます。
関連モジュール | 関連ディレクティブ |
---|---|
メイン設定ファイルにあるディレクティブはサーバ全体に適用されます。
- サーバの一部分の設定だけを変更したい場合は <Directory>
, <DirectoryMatch>
, <Files>
, <FilesMatch>
, <Location>
, <LocationMatch>
- セクションの中に置くことで適用範囲を決められます。
- これらのセクションはその中にあるディレクティブの適用範囲を
- 特定のファイルシステムの位置や URL に限定します。
- 非常に細粒度の設定を可能にするために、
- セクションを入れ子にすることもできます。
Apache は同時に多くの違うウェブサイトを扱う能力があります。
- これは バーチャルホスト と呼ばれています。
- 特定のウェブサイトにのみ適用されるようにするために、
- ディレクティブは
- <VirtualHost>
- セクションの中に置くことでも適用範囲を変えることができます。
ほとんどのディレクティブはどのセクションにでも書けますが、 - 中にはコンテキストによっては意味をなさないものもあります。 - 例えば、プロセスの作成を制御しているディレクティブはメインサーバの - コンテキストにのみ書くことができます。 - どのディレクティブをどのセクションに書くことができるかを知るためには - ディレクティブの コンテキスト を調べてください。詳しい情報は、 - Directory, Location, Files - セクションの動作法にあります。
-関連モジュール | 関連ディレクティブ |
---|---|
Apache ではウェブツリーの中に置かれた特別なファイルを使って
- 非中央集権的な設定管理をできます。その特別なファイルは普通は
- .htaccess
という名前で、
- AccessFileName
- ディレクティブでどんな名前にでも指定できます。
- .htaccess
- ファイルに書かれたディレクティブはファイルを置いた
- ディレクトリとその全てのサブディレクトリに適用されます。
- .htaccess
ファイルは、メインの設定ファイルと同じ
- 構文を使います。
- .htaccess
- ファイルはすべてのリクエストで読み込まれるため、
- 変更はすぐに反映されます。
どのディレクティブが .htaccess
- ファイルに書けるかを調べるには、ディレクティブのコンテキスト
- を調べてください。サーバ管理者はさらにメイン設定ファイルの
- AllowOverride
- を設定することでどのディレクティブを .htaccess
- ファイルに書けるようにするかを制御することができます。
.htaccess
ファイルに関する詳しい情報は
- .htaccess チュートリアル
- を参照してください。
Apache HTTP 泣若 若吾с 2.3
+∫c≪吾ャ若 | ∫ccc |
---|---|
Apache cc 荐絎<ゃ綛恰ф吾荐絎障
+ <ゃ潟荐絎<ゃ httpd.conf
с
+ <ゃ篏臀潟潟ゃ荐絎障潟潟ゃ潟
+ -f
違筝吾с障
+ 障篁荐絎<ゃ Include
+ ccc菴遵сゃ若篏睡紊違
+ 荐絎<ゃ菴遵с障
+ cc荐絎<ゃсャс障
+ Apache 莎桁莎桁帥<ゃ活┃絎<ゃ紊眼茯茘障
泣若 MIME
+ ャ<潟帥ゃс<ゃ茯粋昭帥障<ゃ
+ TypesConfig
+ ц┃絎с mime.types
+ c障
Apache 荐絎<ゃ 1 茵 1 ゃcc障 + 鴻激 "\" cc罨<茵膓膓 + 腓冴茵緇絖篏帥障 + 茵緇鴻激ャ篁絖腥榊純c障 +
+ +荐絎<ゃcc紊ф絖絨絖阪ャ障 + 綣違違医阪ャ障激ユ絖 "#" + у障茵潟<潟荀∴障 + 荐絎cc緇茵с潟<潟障障cc腥肴腥榊純∴障с + ccゃ潟潟罕障 +
+ +荐絎<ゃ罕若
+ apachectl configtest
+ 潟潟ゃ潟激с
+ -t
篏帥c茯帥鴻障
∫c≪吾ャ若 | ∫ccc |
---|---|
Apache ≪吾ャ若泣若с
+ 潟≪泣若堺罘純障障≦宍罘純
+ Apache 若≪吾ャ若純сс潟潟ゃ≪吾ャ若
+ Base 祉 (堺祉)
+ 泣若障障泣若若≪吾ャ若篏帥潟潟ゃ翫
+ ≪吾ャ若ャ潟潟ゃゃс
+ LoadModule
+ cc篏帥c菴遵с障
+ с翫≪吾ャ若菴遵ゃ Apache
+ 潟潟ゃ綽荀障荐絎cc <IfModule>
+ ャх劫≪吾ャ若絖
+ 荐絎<ゃ障с障
潟潟ゃ潟激с -l
篏帥c憝鴻
+ ≪吾ャ若泣若潟潟ゃャс障
∫c≪吾ャ若 | ∫ccc |
---|---|
<ゃ活┃絎<ゃcc泣若篏障
+ 泣若筝荐絎紊眼翫 <Directory>
, <DirectoryMatch>
, <Files>
, <FilesMatch>
, <Location>
, <LocationMatch>
+ 祉激с潟筝臀ч膀蚊羆冴障
+ 祉激с潟筝cc膀蚊
+ 劫<ゃ激鴻篏臀 URL 絎障
+ 絽吾膣亥綺荐絎純
+ 祉激с潟ャ絖с障
Apache 紊с泣ゃ宴遵障
+ 若c鴻 若違障
+ 劫с泣ゃ翠
+ cc
+ <VirtualHost>
+ 祉激с潟筝臀с膀蚊紊с障
祉cc祉激с潟с吾障 + 筝潟潟鴻c潟障 + 箴違祉鴻篏九勝cc<ゃ潟泣若 + 潟潟鴻炊吾с障 + cc祉激с潟吾сャ + cc 潟潟鴻 茯帥鴻荅潟宴 + Directory, Location, Files + 祉激с潟篏羈障
+∫c≪吾ャ若 | ∫ccc |
---|---|
Apache сс若筝臀劫ャ<ゃ篏帥c
+ 筝紊罔荐絎膊∞с障劫ャ<ゃ
+ .htaccess
с
+ AccessFileName
+ ccсс絎с障
+ .htaccess
+ <ゃ吾cc<ゃ臀
+ c泣c障
+ .htaccess
<ゃ<ゃ潟荐絎<ゃ
+ 罕篏帥障
+ .htaccess
+ <ゃ鴻鴻ц粋昭障
+ 紊眼障
cc .htaccess
+ <ゃ吾茯帥鴻cc潟潟鴻
+ 茯帥鴻泣若膊∞<ゃ活┃絎<ゃ
+ AllowOverride
+ 荐絎сcc .htaccess
+ <ゃ吾九勝с障
.htaccess
<ゃ≪荅潟宴
+ .htaccess ャ若≪
+ с
Apache HTTP サーバ バージョン 2.3
-Apache は HTTP/1.1 の規格に記述されているコンテントネゴシエーションを - サポートしています。 - ブラウザにより提供されたメディアタイプ、 - 言語、文字セット、エンコーディングの優先傾向に基づいて、 - 最適なリソースの表現を選択できます。 - また、不完全なネゴシエーション情報を送ってくるブラウザからのリクエストを - もっと賢く取り扱えるよう、いくつか機能も実装してあります。
- -コンテントネゴシエーションは
- mod_negotiation
- モジュールによって提供されていて、デフォルトで組み込まれています。
リソースは、幾つか異なった表現で利用できる場合があります。 - 例えば、異なる言語や異なるメディアタイプ、 - またはそれらの組み合わせで利用できるかも知れません。 - もっとも適した選択をする方法の一つには、インデックスページを - ユーザに見せて、ユーザに選んでもらう方法があります。 - しかし、サーバが自動的に選ぶことができる場合が多くあります。 - これは、ブラウザがリクエスト毎に、 - どの表現を嗜好するかという情報を送ることで動作しています。 - 例えばブラウザは、可能ならフランス語で情報を見たい、 - 不可能ならその代わりに英語でもよいと、 - 自分の嗜好を知らせることができます。 - ブラウザはリクエストのヘッダで自分の優先傾向を知らせます。 - フランス語のみの表現を要求する場合は、ブラウザは次を送ります。
- -Accept-Language: fr
この優先傾向は、選択可能な表現が存在して、 - 言語によって様々な表現がある場合にのみ適用される - ということに注意してください。
- -もっと複雑なリクエストの例を挙げましょう。 - このブラウザはフランス語と英語を受け付ける、しかしフランス語を好む、 - そして様々なメディアタイプを受け付けるが、 - プレインテキストや他のタイプよりは HTML を好む、 - 他のメディアタイプよりは GIF や JPEG を好む、しかし最終手段として - 他のメディアタイプも受け付ける、と設定されています。
- -
- Accept-Language: fr; q=1.0, en; q=0.5
- Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1
-
Apache は HTTP/1.1 規格で定義されている 'server
- driven' コンテントネゴシエーションをサポートしています。
- Accept
, Accept-Language
,
- Accept-Charset
, Accept-Encoding
- リクエストヘッダを完全にサポートしています。Apache は
- 'transparent' コンテントネゴシエーションもサポートしていますが、
- これは RFC 2295 と RFC 2296 で定義されている試験的な
- ネゴシエーションプロトコルです。
- これらの RFCで定義されている 'feature negotiation'
- はサポートしていません。
リソースとは URI - で特定される概念上のもののことです (RFC 2396)。 Apache - のような HTTP サーバは、その名前空間の中での - リソースの表現へのアクセスを提供します。 - それぞれの表現は - 定義されたメディアタイプ、文字セット、エンコーディング等の - 付属した、バイト列の形式です。 - それぞれのリソースはある時点で 0 個、1 個、それ以上の表現と - 関連付けられる可能性があります。複数の表現が利用できる場合は、 - リソースはネゴシエーション可能であるとされ、 - 個々の表現は variant と呼ばれます。 - ネゴシエーション可能なリソースの variant が異なる、 - その状態を指して、 - ネゴシエーションの次元と呼びます。
-リソースをネゴシエーションするためには、 - サーバは variant それぞれについての情報を知っておく必要があります。 - これは以下の二つの方法のどちらかで行われます。
- -*.var
ファイル)
- を使う方法。 これは variant
- を明示的に挙げているファイルを指定します。タイプマップは type-map
ハンドラ
- (もしくは、古い Apache
- の設定と下位互換である MIME タイプ
- application/x-type-map
)
- に関連付けられたドキュメントです。
- この機能を使うためには、あるファイルの拡張子を
- type-map
- として定義するようなハンドラを、
- 設定ファイル中に置く必要があることに注意してください。
- これは
AddHandler type-map .var
をサーバ設定ファイル中に書くことが一番良い方法です。
- -タイプマップファイルは記述するリソースと同じ名前を持っていて、
- 利用可能な variant それぞれのエントリを持っている必要があります。
- そして、このエントリは連続した HTTP のヘッダ行で構成されます。
- 異なる variant のためのエントリは空行で区切られています。
- エントリ中に空行が複数あってはいけません。
- 習慣的には、マップファイルは全体を結合したもののエントリから始まります
- (しかしこれは必須ではなく、あったとしても無視されるものです)。
- 次に例を示します。このファイルはリソース foo
- を記述しているので、foo.var
という名前になります。
- URI: foo
-
- URI: foo.en.html
- Content-type: text/html
- Content-language: en
-
- URI: foo.fr.de.html
- Content-type: text/html;charset=iso-8859-2
- Content-language: fr, de
-
たとえ MultiViews を使用するようになっていたとしても、 - ファイル名の拡張子よりタイプマップの方が優先権を持つということにも - 注意してください。 - variant の品質が違うときは、この画像のように (JPEG, GIF, ASCII - アートがあります) メディアタイプの "qs" - パラメータで指定されます。
- -
- URI: foo
-
- URI: foo.jpeg
- Content-type: image/jpeg; qs=0.8
-
- URI: foo.gif
- Content-type: image/gif; qs=0.5
-
- URI: foo.txt
- Content-type: text/plain; qs=0.01
-
qs 値の範囲は 0.000 から 1.000 です。qs 値が - 0.000 の variant は決して - 選択されないことに注意してください。'qs' 値のない variant - は qs 値 1.0 を 与えられます。qs - パラメータはクライアントの能力に関係無く、他の variant と - 比較したときの variant - の相対的な「品質」を示します。 - 例えば、写真を表現しようとしているときは JPEG - ファイルの方が普通は ASCII - ファイルよりも高い品質になります。しかし、リソースが元々 - ASCII アートで表現されているときは、ASCII ファイルの - 方が JPEG ファイルよりも高い品質になります。このように、qs - は 表現されるリソースの性質によって variant - 毎に特有の値を取ります。
- -認識されるヘッダの一覧は - mod_negotiation - ドキュメントにあります。
- - -MultiViews
はディレクトリ毎のオプションで、
- httpd.conf
ファイルの
- <Directory>
,
- <Location>
,
- <Files>
- セクション中や、(AllowOverride
- が適切な値に 設定されていると) .htaccess
- ファイルで Options
- ディレクティブによって設定することができます。
- Options All
は
- MultiViews
- をセットしないことに注意してください。明示的に
- その名前を書く必要があります。
MultiViews
の効果は以下のようになります:
- サーバが /some/dir/foo
- へのリクエストを受け取り、/some/dir
で
- MultiViews
が有効であって、
- /some/dir/foo
が存在しない場合、
- サーバはディレクトリを読んで foo.*
- にあてはまる全てのファイルを探し、
- 事実上それらのファイルをマップするタイプマップを作ります。
- そのとき、メディアタイプとコンテントエンコーディングは、そのファイル名を
- 直接指定したときと同じものが割り当てられます。
- それからクライアントの要求に一番合うものを選びます。
サーバがディレクトリの索引を作ろうとしている場合、
- MultiViews
- は DirectoryIndex
- ディレクティブで指定されたファイルを探す過程にも
- 適用されます。設定ファイルに
DirectoryIndex index
が書かれていて、index.html
と
- index.html3
が
- 両方存在していると、サーバはその中からどちらかを適当に選びます。
- もしその両方が存在せずに index.cgi
- が存在していると、 サーバはそれを実行します。
もしディレクトリを読んでいる際に、
- 文字セット、コンテントタイプ、言語、エンコーディングを
- 指定するための mod_mime
- で認識できる拡張子を持たないファイルが見つかると、結果は
- MultiViewsMatch
- ディレクティブの設定に依存します。このディレクティブは
- ハンドラ、フィルタ、他のファイル拡張子タイプのどれが
- MultiViews ネゴシエーションで使用できるかを決定します。
Apache はリソースの variant の一覧を、タイプマップファイルか - ディレクトリ内のファイル名からかで取得した後、 - 「最適な」 variant を決定するために二つの方法の - どちらかを起動します。 - Apache のコンテントネゴシエーションの機能を使うために、 - どのようにしてこの調停が行われるか詳細を知る必要はありません。 - しかしながら、この文書の残りでは関心のある人のために、 - 使用されている方法について説明しています。
- -ネゴシエーション方法は二つあります。
- -次元 | - -説明 | -
---|---|
メディアタイプ | - -ブラウザは Accept
- ヘッダフィールドで優先傾向を指定します。
- アイテムそれぞれは、関連した品質数値を持つことができます。
- variant の説明も品質数値を持つことができます
- ("qs" パラメータをご覧下さい)。 |
-
言語 | - -ブラウザは Accept-Language
- ヘッダフィールドで優先傾向を指定します。
- 要素それぞれに品質数値を持たせることができます。
- variants は 0 か 1 つかそれ以上の言語と
- 関連づけることができます。 |
-
エンコーディング | - -ブラウザは Accept-Encoding
- ヘッダフィールドで優先傾向を指定します。
- 要素それぞれに品質数値を持たせることができます。 |
-
文字セット | - -ブラウザは Accept-Charset
- ヘッダフィールドで優先傾向を指定します。
- 要素それぞれに品質数値を持たせることができます。
- variant はメディアタイプのパラメータとして文字セットを
- 指定することもできます。 |
-
ブラウザに返す「最適な」variant を (もしあれば) 選択するように - Apache は次のアルゴリズムを使うことができます。 - このアルゴリズムを設定により変更することはできません。 - 次のように動作します:
- -Accept
- ヘッダの品質数値との積を計算して、最高値の variant
- を選びます。Accept-Language
ヘッダの言語順か、
- (もしあれば)
- LanguagePriority
- ディレクティブの言語順で最適な言語の variant を選びます。Accept-Charset
ヘッダ行で与えられている最高の文字セット
- メディアパラメータを持つ variant を選びます。
- 明示的に除外されていない限り、ISO-8859-1
- が許容されるようになっています。
- text/*
メディアタイプであるけれども
- 特定の文字セットに明示的に関連づけられているわけではない
- variant は ISO-8859-1 であると仮定されます。Vary
が設定されます
- (リソースのキャッシュをする時に、
- ブラウザやキャッシュはこの情報を使うことができます)。
- 以上で終わり。Vary
ヘッダも設定されます。上記の Apache ネゴシエーションアルゴリズムの厳格な解釈で
- 得られるであろう値から、Apache は品質数値を時々変えます。
- これは、このアルゴリズムで完全ではない、あるいは正確でない情報を送る
- ブラウザ向けによりよい結果を得るために行われます。
- かなりポピュラーなブラウザで、もしないと間違った variant
- を選択する結果になってしまうような Accept
- ヘッダ情報を送るものもあります。
- ブラウザが完全で正しい情報を送っていれば、
- この数値変化は適用されません。
Accept:
リクエストヘッダはメディアタイプの優先傾向を指定します。
- これはまた、"image/*" や "*/*"
- といった「ワイルドカード」メディアタイプを含むことができます。
- ここで * は任意の文字列にマッチします。
- ですから、次の:
Accept: image/*, */*
を含むリクエストは、"image/" ではじまるタイプ全てが許容できる、 - そして他のどんなタイプも許容できる - (この場合はじめの "image/*" は冗長になります) - ことを示します。 - 扱うことのできる明示的なタイプに加えて、機械的に - ワイルドカードを送るブラウザもあります。例えば:
- -
- Accept: text/html, text/plain, image/gif, image/jpeg, */*
-
こうすることの狙いは、明示的にリストしているタイプが優先されるけれども、 - 異なる表現が利用可能であればそれでも良い、ということです。 - しかしながら、上の基本的なアルゴリズムでは、 - */* ワイルドカードは他の全てのタイプと全く同等なので優先されません。 - ブラウザは */* にもっと低い品質 (優先) - 値を付けてリクエストを送るべきなのです。例えば:
-
- Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
-
明示的なタイプには品質数値が付けられていませんので、 - デフォルトの 1.0 (最高値) の優先になります。 - ワイルドカード */* は低い優先度 0.01 を与えられているので、 - 明示的にリストされているタイプに合致する variant がない場合にのみ、 - 他のタイプが返されます。
- -もし Accept:
ヘッダが q 値を全く含んでいなければ、
- 望みの挙動をするために、
- Apache は "*/*" があれば 0.01 の q 値を設定します。
- また、"type/*" の形のワイルドカードには 0.02 の q 値を設定します
- (ですからこれらは "*/*" のマッチよりも優先されます)。
- もし Accept:
ヘッダ中のメディアタイプのどれかが q
- 値を含んでいれば、これらの特殊な値は適応されず、
- 正しい情報を送るブラウザからのリクエストは期待通りに
- 動作するようになります。
Apache 2.0 では新たに、言語ネゴシエーションが適合するものを - 見つけるのに失敗した時に、優雅にフォールバックできるような - ネゴシエーションアルゴリズムが幾つか追加されました。
- -サーバのページをクライアントがリクエストしたけれども、
- ブラウザの送ってきた Accept-Language
に合致するページが一つも
- 見つからなかった場合に、サーバは "No Acceptable Variant"
- か "Multiple Choices" レスポンスをクライアントに返します。
- これらのエラーメッセージを返さないように、
- このような場合には Apache が Accept-Language
を無視して、
- クライアントのリクエストに明示的には合致しないドキュメントを
- 提供するように設定できます。
- ForceLanguagePriority
- ディレクティブは、これらのエラーの一つか両方をオーバーライドするために
- 使用できて、
- LanguagePriority
- ディレクティブの内容を使ってサーバの判断を代行するようにできます。
サーバは他に適合するものが見つからなければ、
- 言語サブセットで適合するものを試そうともします。
- 例えばクライアントが英国英語である en-GB
言語で
- ドキュメントをリクエストした場合、サーバは HTTP/1.1
- 規格では、単に en
とマークされているドキュメントを
- マッチするものとすることは通常は許されていません。
- (英国英語は理解できるけど一般的な英語は理解できないという読み手は
- 考えられないので、Accept-Language ヘッダで en-GB
- を含んで en
を含まないのはほぼ確実に設定の間違いである、
- ということに注意してください。
- ですが不幸なことに、多くのクライアントではデフォルトで
- このような設定になっています。)
- しかしながら、他の言語にはマッチせず、"No Acceptable Variants"
- エラーを返したり、
- LanguagePriority
- にフォールバックしようとしているときは、
- サブセット指定を無視して、en-GB
を en
- にマッチします。
- Apache はクライアントの許容言語リストに暗黙に
- 非常に低い品質値の親言語を加えることになります。
- しかし、クライアントが "en-GB; q=0.9, fr; q=0.8" とリクエストして、
- サーバが "en" と "fr" と設計されたドキュメントを持っている場合は、
- "fr" ドキュメントが返されることに注意してください。
- このような処理は、HTTP 1.1 規格との整合性を維持して、
- 適切に設定されたクライアントともきちんと動作するために
- 必要です。
より高度なテクニック (Cookie や特殊な URL パス等)
- においてもユーザの言語選択をサポートするため、
- Apache 2.0.47 からは、mod_negotiation
- が環境変数 prefer-language
- を認識するようになりました。
- この変数が存在して、適切な言語タグが代入されているのであれば、
- mod_negotiation
は合致する variant
- を選択しようとします。合致するものが無ければ、
- 通常のネゴシエーション手順が適用されます。
- SetEnvIf Cookie "language=(.+)" prefer-language=$1
-
Apache は transparent content negotiation プロトコル
-(RFC 2295) を次のように拡張しています。
-特定のコンテントエンコーディングのみが利用可能である variant
-に印を付けるために、新たに {encoding ..}
-要素を variant リスト中に使っています。
-リスト中のエンコードされた variant を認識し、
-Accept-Encoding
リクエストヘッダに従って許容される
-エンコードをもった variant は、どれでも候補 variant
-として使用するように、
-RVSA/1.0 アルゴリズム (RFC 2296) の実装が拡張されました。
-RVSA/1.0 の実装では、最適な variant が見つかるまで、
-計算した品質数値は小数点以下 5 桁まで丸めません。
言語ネゴシエーションを使っている場合は、 - ファイルが一つ以上の拡張子を持てて、 - 拡張子の順番は通常は考慮されない - (詳細は mod_mime - を参照) ので、 - 幾つかの異なる名前の変換を選べることになります。
- -典型的なファイルでは、MIME タイプ拡張子 (例えば
- html
) を持っていて、エンコーディング拡張子
- (例えば gz
) を持っているかもしれなくて、
- このファイルに異なる言語 variant を用意していれば、
- もちろん言語拡張子 (例えば en
)
- を持っているでしょう。
例:
- -ファイル名と、それに対して使えるリンクと使えないリンクの例です:
- -ファイル名 | - -使えるリンク | - -使えないリンク | -
---|---|---|
foo.html.en | - -foo - foo.html |
-
- - | -
foo.en.html | - -foo | - -foo.html | -
foo.html.en.gz | - -foo - foo.html |
-
- foo.gz - foo.html.gz |
-
foo.en.html.gz | - -foo | - -foo.html - foo.html.gz - foo.gz |
-
foo.gz.html.en | - -foo - foo.gz - foo.gz.html |
-
- foo.html | -
foo.html.gz.en | - -foo - foo.html - foo.html.gz |
-
- foo.gz | -
上の表を見て、拡張子なしのリンク (例えば foo
)
- がいつでも使えることに気が付くでしょう。
- この利点は、ドキュメントとして応答するファイルの
- 実際のファイルタイプを隠蔽して、リンクの参照を変更することなく
- 後からファイルを変更できる、
- 例えば html
から shtml
- に、あるいは cgi
に変更できる点です。
リンクに MIME タイプを使い続けたい (例えば
- foo.html
)時は、言語拡張子は
- (エンコーディング拡張子もあればそれも含めて)
- MIME タイプ拡張子の右側になければなりません
- (例えば foo.html.en
)。
キャッシュが一つの表現を保存しているときは、 - リクエスト URL と関連づけられています。 - 次にその URL がリクエストされた時に、キャッシュは - 保存されている表現を使用できます。しかし、 - リソースがサーバでネゴシエーション可能であれば、 - 最初のリクエストでキャッシュされて続くキャッシュヒットでは - 間違った応答を返してしまうということになりかねません。 - これを防ぐために、Apache はコンテントネゴシエーションの - 後に返された応答全てに、HTTP/1.0 クライアントでは - キャッシュ不可能の印をつけます。 - また、ネゴシエーションされた応答のキャッシュを可能にする - HTTP/1.1 プロトコルの機能も Apache はサポートします。
- -HTTP/1.0 準拠のクライアントからのリクエストに対しては、
- (ブラウザであろうとキャッシュであろうと)
- ネゴシエーションを受けた応答のキャッシュを許すために、
- CacheNegotiatedDocs
- ディレクティブを使用できます。
- このディレクティブは、サーバ設定ファイルやバーチャルホストに書くことができ、
- 引数をとりません。
- HTTP/1.1 クライアントからのリクエストには効力を持ちません。
HTTP/1.1 クライアントに対しては、レスポンスのネゴシエーション次元
- を示すために Vary
HTTP レスポンスヘッダを送ります。
- キャッシュは、これを使って後続のリクエストに対してローカルコピーで応答できるか
- どうかを決定できます。
- ネゴシエーション次元とは関係なしにローカルコピーの使用を優先するようにするには、
- force-no-vary
環境変数を
- 設定します。
コンテントネゴシエーションに関する追加情報は、 - Alan J. Flavell さんのLanguage - Negotiation Notes をご覧下さい。ですが、 - Apache 2.0 での変更点を含むためには更新されていないかもしれない - ということに注意してください。
-Apache HTTP 泣若 若吾с 2.3
+Apache HTTP/1.1 荀若荐菴違潟潟潟眼激若激с潟 + 泣若障 + 吟箴<c≪帥ゃ + 荐茯絖祉潟潟若c潟違上冴ャ + 純若鴻茵憗御с障 + 障筝絎眼激若激с恰宴c吟鴻 + c莖≪宴ゃ罘純絎茖障
+ +潟潟潟眼激若激с潟
+ mod_negotiation
+ ≪吾ャ若c箴х粋昭障障
純若鴻綛障ゃ違c茵憗ус翫障 + 箴違違荐茯違<c≪帥ゃ + 障腟水усャ障 + c御号筝ゃゃ潟鴻若吾 + 若吟荀若吟吾с号障 + 泣若吾吟с翫紊障 + 吟鴻罸 + 茵憗絅純宴у篏障 + 箴違吟純潟壕ф宴荀 + 筝純篁c沿с + 絅純ャс障 + 吟鴻ц上ャ障 + 潟壕帥茵憗荀羆翫吟罨<障
+ +Accept-Language: fr
上御純茵憗絖 + 荐茯c罕茵憗翫翠 + 羈
+ +c茲鴻箴障 + 吟潟壕沿篁潟壕絅純 + 罕<c≪帥ゃ篁 + ゃ潟鴻篁帥ゃ HTML 絅純 + 篁<c≪帥ゃ GIF JPEG 絅純腟罧泣 + 篁<c≪帥ゃ篁荐絎障
+ +
+ Accept-Language: fr; q=1.0, en; q=0.5
+ Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1
+
Apache HTTP/1.1 荀若у臂 'server
+ driven' 潟潟潟眼激若激с潟泣若障
+ Accept
, Accept-Language
,
+ Accept-Charset
, Accept-Encoding
+ 鴻絎泣若障Apache
+ 'transparent' 潟潟潟眼激若激с潟泣若障
+ RFC 2295 RFC 2296 у臂荅薑
+ 眼激若激с潟潟с
+ RFCу臂 'feature negotiation'
+ 泣若障
純若 URI + х劫网綽灸с (RFC 2396) Apache + HTTP 泣若腥咲筝с + 純若鴻茵吾≪祉鴻箴障 + 茵憗 + 絎臂<c≪帥ゃ絖祉潟潟若c潟亥 + 篁絮ゃ綵√с + 純若鴻鴻 0 1 篁ヤ茵憗 + ∫d醇с障茲違茵憗с翫 + 純若鴻眼激若激с喝純с + 茵憗 variant 若違障 + 眼激若激с喝純純若鴻 variant 違 + 倶 + 眼激若激с潟罨≦若潟障
+純若鴻眼激若激с潟 + 泣若 variant ゃ宴ャc鏆荀障 + 篁ヤ篋ゃ号<ц障
+ +*.var
<ゃ)
+ 篏帥号 variant
+ 腓榊<ゃ絎障帥ゃ type-map
潟
+ (ゃ Apache
+ 荐絎筝篏篋с MIME 帥ゃ
+ application/x-type-map
)
+ ∫dャ<潟с
+ 罘純篏帥<ゃ≦宍絖
+ type-map
+ 絎臂潟
+ 荐絎<ゃ筝臀鏆荀羈
+
AddHandler type-map .var
泣若荐絎<ゃ筝吾筝号с
+ +帥ゃ<ゃ荐菴違純若鴻c
+ 純 variant 潟c綽荀障
+ 潟g HTTP 茵ф障
+ 違 variant 潟腥肴у阪障
+ 潟筝腥肴茲違c障
+ 膺g<ゃ篏腟潟紮障障
+ (綽сc∴с)
+ 罨<箴腓冴障<ゃ純若 foo
+ 荐菴違сfoo.var
障
+ URI: foo
+
+ URI: foo.en.html
+ Content-type: text/html
+ Content-language: en
+
+ URI: foo.fr.de.html
+ Content-type: text/html;charset=iso-8859-2
+ Content-language: fr, de
+
MultiViews 篏睡c + <ゃ≦宍絖帥ゃ鴻罔ゃ + 羈 + variant 莖糸 (JPEG, GIF, ASCII + ≪若障) <c≪帥ゃ "qs" + <若帥ф絎障
+ +
+ URI: foo
+
+ URI: foo.jpeg
+ Content-type: image/jpeg; qs=0.8
+
+ URI: foo.gif
+ Content-type: image/gif; qs=0.5
+
+ URI: foo.txt
+ Content-type: text/plain; qs=0.01
+
qs ゃ膀蚊 0.000 1.000 сqs ゃ + 0.000 variant 羆冴 + 御羈'qs' ゃ variant + qs 1.0 筝障qs + <若帥ゃ≪潟遵≫<篁 variant + 罸莠 variant + 後丞莖腓冴障 + 箴違茵憗 JPEG + <ゃ鴻 ASCII + <ゃ蕭莖障純若鴻 + ASCII ≪若ц;憗ASCII <ゃ + 鴻 JPEG <ゃ蕭莖障qs + 茵憗純若鴻ц蟹c variant + 罸号ゃ障
+ +茯茘筝荀с + mod_negotiation + ャ<潟障
+ + +MultiViews
c罸激с潟с
+ httpd.conf
<ゃ
+ <Directory>
,
+ <Location>
,
+ <Files>
+ 祉激с割賢(AllowOverride
+ ゃ 荐絎) .htaccess
+ <ゃ Options
+ ccc荐絎с障
+ Options All
+ MultiViews
+ 祉羈腓榊
+ 吾鏆荀障
MultiViews
号篁ヤ障:
+ 泣若 /some/dir/foo
+ 吾鴻/some/dir
+ MultiViews
鴻сc
+ /some/dir/foo
絖翫
+ 泣若c茯 foo.*
+ 障<ゃ「
+ 篋絎筝<ゃ帥ゃ篏障
+ <c≪帥ゃ潟潟潟潟潟若c潟違<ゃ
+ 贋・絎蚊綵障
+ ゃ≪潟荀羆筝吾潟障
泣若c膣√篏翫
+ MultiViews
+ DirectoryIndex
+ ccф絎<ゃ「腮
+ 障荐絎<ゃ
DirectoryIndex index
吾index.html
+ index.html3
+ 筝≧劫泣若筝<綵吾潟障
+ 筝≧鴻絖 index.cgi
+ 絖 泣若絎茵障
c茯с
+ 絖祉潟潟潟帥ゃ荐茯潟潟若c潟違
+ 絎 mod_mime
+ ц茘с≦宍絖<ゃ荀ゃ腟
+ MultiViewsMatch
+ cc荐絎箴絖障cc
+ 潟c帥篁<ゃ≦宍絖帥ゃ
+ MultiViews 眼激若激с潟т戎с羆阪障
Apache 純若鴻 variant 筝荀с帥ゃ<ゃ + c<ゃу緇緇 + variant 羆阪篋ゃ号 + <莎桁障 + Apache 潟潟潟眼激若激с潟罘純篏帥 + 茯水茵荅括完ャ綽荀障 + 吾罧с√篋冴 + 篏睡号ゃ茯障
+ +眼激若激с恰号篋ゃ障
+ +罨≦ | + +茯 | +
---|---|
<c≪帥ゃ | + +吟 Accept
+ c若у上絎障
+ ≪ゃ∫c莖医ゃゃс障
+ variant 茯莖医ゃゃс障
+ ("qs" <若帥荀т) |
+
荐茯 | + +吟 Accept-Language
+ c若у上絎障
+ 荀膣莖医ゃс障
+ variants 0 1 ゃ篁ヤ荐茯
+ ∫cャс障 |
+
潟潟若c潟 | + +吟 Accept-Encoding
+ c若у上絎障
+ 荀膣莖医ゃс障 |
+
絖祉 | + +吟 Accept-Charset
+ c若у上絎障
+ 荀膣莖医ゃс障
+ variant <c≪帥ゃ<若帥絖祉
+ 絎с障 |
+
吟菴variant () 御 + Apache 罨<≪眼冴篏帥с障 + ≪眼冴荐絎紊眼с障 + 罨<篏障:
+ +Accept
+ 莖医ゃ腥荐膊蕭ゃ variant
+ 吾潟障Accept-Language
荐茯
+ ()
+ LanguagePriority
+ cc荐茯ф荐茯 variant 吾潟障Accept-Charset
茵т蕭絖祉
+ <c≪<若帥 variant 吾潟障
+ 腓榊ゅISO-8859-1
+ 荐怨鴻c障
+ text/*
<c≪帥ゃс
+ 劫絖祉腓榊∫cャс
+ variant ISO-8859-1 с篁絎障Vary
荐絎障
+ (純若鴻c激ャ
+ 吟c激ャ宴篏帥с障)
+ 篁ヤхVary
荐絎障筝荐 Apache 眼激若激с潟≪眼冴ウ若茹i
+ 緇сゃApache 莖医ゃ紊障
+ ≪眼冴ус罩g∈с宴
+ 九腟緇茵障
+ ャ若吟сc variant
+ 御腟c障 Accept
+ 宴障
+ 吟絎фc宴c違
+ 医ゅ障
Accept:
鴻<c≪帥ゃ上絎障
+ 障"image/*" "*/*"
+ cゃ若<c≪帥ゃс障
+ * 篁紙絖障
+ с罨<:
Accept: image/*, */*
鴻"image/" с障帥ゃ荐怨鴻с + 篁帥ゃ荐怨鴻с + (翫 "image/*" 激障) + 腓冴障 + 宴с腓榊帥ゃ罘罌亥 + ゃ若吟障箴:
+ +
+ Accept: text/html, text/plain, image/gif, image/jpeg, */*
+
腓榊鴻帥ゃ + 違茵憗純с違сс + 筝堺≪眼冴с + */* ゃ若篁帥ゃ膈у障 + 吟 */* c篏莖 () + ゃ篁鴻鴻с箴:
+
+ Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01
+
腓榊帥ゃ莖医ゃ篁障с + 1.0 (蕭) 障 + ゃ若 */* 篏綺 0.01 筝с + 腓榊鴻帥ゃ眼 variant 翫帥 + 篁帥ゃ菴障
+ + Accept:
q ゃ
+ 帥
+ Apache "*/*" 0.01 q ゃ荐絎障
+ 障"type/*" 綵≪ゃ若 0.02 q ゃ荐絎障
+ (с "*/*" 障)
+ Accept:
筝<c≪帥ゃ q
+ ゃс違号ゃ綽
+ 罩c宴吟鴻緇
+ 篏障
Apache 2.0 с違荐茯眼激若激с潟 + 荀ゃ紊掩若с + 眼激若激с潟≪眼冴綛障ゃ菴遵障
+ +泣若若吾ゃ≪潟鴻
+ 吟c Accept-Language
眼若吾筝ゃ
+ 荀ゃc翫泣若 "No Acceptable Variant"
+ "Multiple Choices" 鴻潟鴻ゃ≪潟菴障
+ 若<祉若吾菴
+ 翫 Apache Accept-Language
∴
+ ゃ≪潟鴻腓榊眼ャ<潟
+ 箴荐絎с障
+ ForceLanguagePriority
+ cc若筝ゃ筝≧鴻若若ゃ
+ 篏睡с
+ LanguagePriority
+ cc絎鴻篏帥c泣若ゆ篁hс障
泣若篁荀ゃ違
+ 荐茯泣祉ч荅障
+ 箴違ゃ≪潟怨処沿с en-GB
荐茯
+ ャ<潟鴻翫泣若 HTTP/1.1
+ 荀若с en
若ャ<潟
+ 絽吾荐宴障
+ (怨処沿茹cс筝沿茹cс茯炊
+ сAccept-Language en-GB
+ en
障祉主∈絎荐絎с
+ 羈
+ с筝綛吾紊ゃ≪潟с
+ 荐絎c障)
+ 篁荐茯"No Acceptable Variants"
+ 若菴
+ LanguagePriority
+ 若
+ 泣祉絎∴en-GB
en
+ 障
+ Apache ゃ≪潟荐怨壕茯鴻藥
+ 絽吾篏莖ゃ荀荐茯障
+ ゃ≪潟 "en-GB; q=0.9, fr; q=0.8" 鴻
+ 泣若 "en" "fr" 荐荐ャ<潟c翫
+ "fr" ャ<潟菴羈
+ HTTP 1.1 荀若翫с膓
+ 荐絎ゃ≪潟<篏
+ 綽荀с
蕭綺 (Cookie 号 URL 合)
+ 若吟荐茯御泣若
+ Apache 2.0.47 mod_negotiation
+ 医紊 prefer-language
+ 茯茘障
+ 紊違絖荐茯帥違篁eャс違
+ mod_negotiation
眼 variant
+ 御障眼<違
+ 絽吾眼激若激с恰障
+ SetEnvIf Cookie "language=(.+)" prefer-language=$1
+
Apache transparent content negotiation 潟
+(RFC 2295) 罨<≦宍障
+劫潟潟潟潟潟若c潟違帥純с variant
+違篁違 {encoding ..}
+荀膣 variant 鴻筝篏帥c障
+鴻筝潟潟若 variant 茯茘
+Accept-Encoding
鴻緇c荐怨鴻
+潟潟若c variant с茖 variant
+篏睡
+RVSA/1.0 ≪眼冴 (RFC 2296) 絎茖≦宍障
+RVSA/1.0 絎茖с variant 荀ゃ障с
+荐膊莖医ゃ絨亥剛札筝 5 罅障т幻障
荐茯眼激若激с潟篏帥c翫 + <ゃ筝や札筝≦宍絖 + ≦宍絖絽吾 + (荅括完 mod_mime + ) с + 綛障ゃ違紊吾鴻障
+ +後<ゃсMIME 帥ゃ≦宍絖 (箴
+ html
) c潟潟若c潟井≦宍絖
+ (箴 gz
) c
+ <ゃ違荐茯 variant 違
+ <荐茯≦宍絖 (箴 en
)
+ cс
箴:
+ +<ゃ絲障篏帥潟篏帥潟箴с:
+ +<ゃ | + +篏帥潟 | + +篏帥潟 | +
---|---|---|
foo.html.en | + +foo + foo.html |
+
+ - | +
foo.en.html | + +foo | + +foo.html | +
foo.html.en.gz | + +foo + foo.html |
+
+ foo.gz + foo.html.gz |
+
foo.en.html.gz | + +foo | + +foo.html + foo.html.gz + foo.gz |
+
foo.gz.html.en | + +foo + foo.gz + foo.gz.html |
+
+ foo.html | +
foo.html.gz.en | + +foo + foo.html + foo.html.gz |
+
+ foo.gz | +
筝茵荀≦宍絖潟 (箴 foo
)
+ ゃс篏帥羂篁с
+ 鴻ャ<潟綽膈<ゃ
+ 絎<ゃ帥ゃ純潟с紊眼
+ 緇<ゃ紊眼с
+ 箴 html
shtml
+ cgi
紊眼с鴻с
潟 MIME 帥ゃ篏帥膓 (箴
+ foo.html
)荐茯≦宍絖
+ (潟潟若c潟井≦宍絖違)
+ MIME 帥ゃ≦宍絖勀眼違障
+ (箴 foo.html.en
)
c激ャ筝ゃ茵憗篆絖 + 鴻 URL ∫cャ障 + 罨< URL 鴻c激ャ + 篆絖茵憗篏睡с障 + 純若鴻泣若с眼激若激с喝純с違 + 鴻сc激ャ膓c激ャс + c綽膈菴障障 + 蚊Apache 潟潟潟眼激若激с潟 + 緇菴綽膈HTTP/1.0 ゃ≪潟с + c激ヤ純違ゃ障 + 障眼激若激с潟綽膈c激ャ純 + HTTP/1.1 潟罘純 Apache 泣若障
+ +HTTP/1.0 羣ゃ≪潟鴻絲障
+ (吟сc激ャс)
+ 眼激若激с潟綽膈c激ャ荐宴
+ CacheNegotiatedDocs
+ cc篏睡с障
+ cc泣若荐絎<ゃ若c鴻吾с
+ 綣違障
+ HTTP/1.1 ゃ≪潟鴻劫<障
HTTP/1.1 ゃ≪潟絲障鴻潟鴻眼激若激с恰≦
+ 腓冴 Vary
HTTP 鴻潟鴻障
+ c激ャ篏帥c緇膓鴻絲障若潟若у膈с
+ 羆阪с障
+ 眼激若激с恰≦≫若潟若篏睡
+ force-no-vary
医紊
+ 荐絎障
潟潟潟眼激若激с潟≪菴遵宴 + Alan J. Flavell Language + Negotiation Notes 荀тс + Apache 2.0 с紊雁鴻贋違 + 羈
+Apache HTTP サーバ バージョン 2.3
-ウェブマスターが何らかのエラーや問題に対する - Apache の反応を設定できるようにする追加機能を提供します。
- -サーバがエラーや問題を発見した場合の反応を、 - カスタマイズして定義することができます。
- -スクリプトの実行が失敗して "500 Server Error" - を発生させたとします。この場合の反応を、より好ましいテキストや、別の - URL (内部及び外部) へのリダイレクションに置き換えることができます。 -
-NCSA httpd 1.3 は、古くて退屈なエラー/問題メッセージを - 返していました。それはしばしばユーザには無意味であり、 - またそれを発生させた原因を記録する方法も提供していませんでした。
- - -するようにサーバを設定できます。
- -別の URL にリダイレクトすることは役に立ちますが、 - それは説明をしたり、より明確に誤り/問題を記録したりするために - 何か情報を伝えられるときに限ります。
- -これを実現するために、 Apache は新しく CGI のような環境変数を - 定義します:
- -
- REDIRECT_HTTP_ACCEPT=*/*, image/gif,
- image/x-xbitmap, image/jpeg
- REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX
- A.09.05 9000/712)
- REDIRECT_PATH=.:/bin:/usr/local/bin:/etc
- REDIRECT_QUERY_STRING=
- REDIRECT_REMOTE_ADDR=121.345.78.123
- REDIRECT_REMOTE_HOST=ooh.ahhh.com
- REDIRECT_SERVER_NAME=crash.bang.edu
- REDIRECT_SERVER_PORT=80
- REDIRECT_SERVER_SOFTWARE=Apache/0.8.15
- REDIRECT_URL=/cgi-bin/buggy.pl
-
頭に付く REDIRECT_
に注目してください。
少なくとも REDIRECT_URL
と
- REDIRECT_QUERY_STRING
は新しい URL (CGI スクリプトか
- CGI インクルードであると仮定されます) に渡されます。
- 他の変数は、エラーや問題が起きる前に存在した場合にだけ存在します。
- もしあなたの設定した ErrorDocument
が 外部リダイレクト
- (すなわち、http:
- のような体系名から始まるすべてのもの。たとえ同じホストを指していても)
- ならば、これらはまったく設定されません。
AllowOverride
が適切に設定されていれば、
- .htaccess ファイルで ErrorDocument
- を使用することができます。
ここに、いくつかの例を挙げます。
- -
- ErrorDocument 500 /cgi-bin/crash-recover
- ErrorDocument 500 "Sorry, our script crashed. Oh dear"
- ErrorDocument 500 http://xxx/
- ErrorDocument 404 /Lame_excuses/not_found.html
- ErrorDocument 401 /Subscription/how_to_subscribe.html
-
構文
- -
- ErrorDocument <3-digit-code> <action>
-
action (動作) は、
- -スクリプト/SSI に追加の環境変数が利用可能になるように、 - リダイレクトされた URL に対する Apache の動作が変更されました。
- -リダイレクトされたスクリプトは標準の CGI - 環境変数を利用可能でした。しかし、どこからリダイレクト - されたかの情報は提供されていませんでした。
- - -リダイレクトされた先のスクリプトが使用可能なように、
- 新しいたくさんの環境変数が初期化されます。新しい変数は、それぞれ
- REDIRECT_
で始まります。
- REDIRECT_
で始まる環境変数はリダイレクトされる前に存在していた
- CGI 環境変数の頭に REDIRECT_
を付けて作成されます。
- すなわち、HTTP_USER_AGENT
は
- REDIRECT_HTTP_USER_AGENT
になります。
- これらの新しい変数に加えて、Apache は、
- スクリプトがリダイレクト元のトレースを助けるために
- REDIRECT_URL
と REDIRECT_STATUS
- を定義します。アクセスログには元の URL とリダイレクトされた URL
- の両方が記録されます。
ErrorDocument が CGI スクリプトへのローカルリダイレクトを
- 指定している場合は、それを起動することになったエラーの状態を
- クライアントまで確実に伝えるために "Status:"
- ヘッダを含むべきです。例えば、ErrorDocument 用の Perl
- スクリプトは以下のようなものを含むかもしれません。
-
- ...
- print "Content-type: text/html\n";
- printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
- ...
-
スクリプトが 404 Not Found
のような
- 特定のエラーコンディションを扱うためだけに使われる場合は、
- 代わりに特定のコードとエラーテキストを使用することができます。
Apache HTTP 泣若 若吾с 2.3
+с鴻帥若篏若馹絲障 + Apache 綽荐絎с菴遵罘純箴障
+ +泣若若馹肴翫綽 + 鴻帥ゃ冴絎臂с障
+ +鴻絎茵紊掩 "500 Server Error" + 榊障翫綽絅純障鴻ャ + URL (喝) 吾ゃ激с潟臀с障 +
+NCSA httpd 1.3 ゃ絮/馹<祉若吾 + 菴障違違若吟≧潟с + 障榊荐蚊号箴障с
+ + +泣若荐絎с障
+ +ャ URL ゃ綵鴻腴<障 + 茯腆冴茯ゃ/馹荐蚊 + 篏宴篌障
+ +絎憗 Apache 違 CGI 医紊違 + 絎臂障:
+ +
+ REDIRECT_HTTP_ACCEPT=*/*, image/gif,
+ image/x-xbitmap, image/jpeg
+ REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX
+ A.09.05 9000/712)
+ REDIRECT_PATH=.:/bin:/usr/local/bin:/etc
+ REDIRECT_QUERY_STRING=
+ REDIRECT_REMOTE_ADDR=121.345.78.123
+ REDIRECT_REMOTE_HOST=ooh.ahhh.com
+ REDIRECT_SERVER_NAME=crash.bang.edu
+ REDIRECT_SERVER_PORT=80
+ REDIRECT_SERVER_SOFTWARE=Apache/0.8.15
+ REDIRECT_URL=/cgi-bin/buggy.pl
+
篁 REDIRECT_
羈
絨 REDIRECT_URL
+ REDIRECT_QUERY_STRING
違 URL (CGI 鴻
+ CGI ゃ潟若с篁絎障) 羝<障
+ 篁紊違若馹莎激絖翫絖障
+ 荐絎 ErrorDocument
紊ゃ
+ (http:
+ 篏膤糸紮障鴻鴻)
+ 違障c荐絎障
AllowOverride
荐絎違
+ .htaccess <ゃ ErrorDocument
+ 篏睡с障
ゃ箴障
+ +
+ ErrorDocument 500 /cgi-bin/crash-recover
+ ErrorDocument 500 "Sorry, our script crashed. Oh dear"
+ ErrorDocument 500 http://xxx/
+ ErrorDocument 404 /Lame_excuses/not_found.html
+ ErrorDocument 401 /Subscription/how_to_subscribe.html
+
罕
+ +
+ ErrorDocument <3-digit-code> <action>
+
action (篏)
+ +鴻/SSI 菴遵医紊違純 + ゃ URL 絲障 Apache 篏紊眼障
+ +ゃ鴻罔羣 CGI + 医紊違純сゃ + 宴箴障с
+ + +ゃ鴻篏睡純
+ 違医紊違障違紊違
+ REDIRECT_
у障障
+ REDIRECT_
у障医紊違ゃ絖
+ CGI 医紊違 REDIRECT_
篁篏障
+ HTTP_USER_AGENT
+ REDIRECT_HTTP_USER_AGENT
障
+ 違紊違Apache
+ 鴻ゃ若鴻
+ REDIRECT_URL
REDIRECT_STATUS
+ 絎臂障≪祉鴻違 URL ゃ URL
+ 筝≧鴻荐蚊障
ErrorDocument CGI 鴻吾若ゃ
+ 絎翫莎桁c若倶
+ ゃ≪潟障х∈絎篌 "Status:"
+ 鴻с箴違ErrorDocument Perl
+ 鴻篁ヤ障
+
+ ...
+ print "Content-type: text/html\n";
+ printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
+ ...
+
鴻 404 Not Found
+ 劫若潟潟c激с潟宴篏帥翫
+ 篁c劫潟若若鴻篏睡с障
Apache HTTP サーバ バージョン 2.3
-この文書は mod_mmap_static
モジュールを Apache 2.0 用に移植した時に
- 学んだ経験をもとに書いた、最初の手引き書です。まだまだ完全じゃないし、
- ひょっとすると間違っている部分もあるかもしれませんが、
- 取っ掛りにはなるでしょう。
クリーンナップルーチンは apr_status_t
型である必要があります。
- そして、apr_status_t 型の値を返さなくてはなりません。
- クリーンナップ中のエラーを通知する必要がなければ、返り値は普通、
- ARP_SUCCESS
です。たとえエラーを通知したとしても、
- すべてのコードがその通知をチェックしたり、
- エラーに応じた動作をするわけではないことに気をつけてください。
初期化ルーチンは処理全体から見てしっくりくるような意味を表すように、
- 名前が変更されました。ですから、mmap_init
から mmap_post_config
- のようにちょっと変更されました。
- 渡される引数は大幅に変更され、次のようになりました。
apr_pool_t *p
apr_pool_t *plog
apr_pool_t *ptemp
server_rec *s
データ型のほとんどは APR に移されました。つまり、 - いくつかの名前が前述のように変更されています。 - 施すべき変更点の簡単な一覧を以下に示します。
- -pool
becomes apr_pool_t
table
becomes apr_table_t
新しいアーキテクチャでは作成した関数を呼び出すのに
- 一連のフックを使用します。このフックは、新しい関数
- static void register_hooks(void)
を使って登録するよう、
- モジュールに書き足さなくてはなりません。
- この関数は、なにをすべきか一旦理解してしまえば、
- 十分にわかりやすいものです。
- リクエストの処理のあるステージで呼び出さなくてはならない
- 関数は登録する必要があります。ハンドラは登録する必要はありません。
- 関数を登録できるフェーズはたくさんあります。
- それぞれのフェーズで、関数を呼び出す相対的な順番は、
- かなりの程度制御できます。
以下は、mod_mmap_static
に追加したコードです:
-static void register_hooks(void) -{ - static const char * const aszPre[]={ "http_core.c",NULL }; - ap_hook_post_config(mmap_post_config,NULL,NULL,HOOK_MIDDLE); - ap_hook_translate_name(mmap_static_xlat,aszPre,NULL,HOOK_LAST); -};
ここでは呼びだすべき二つの関数を登録しています。一つは
- post_config
ステージ用 (ほとんどすべてのモジュール
- はこれが必要です) で、もう一つは translate_name
フェーズ用です。
- それぞれの関数は名前は違うけれども形式は同じであることに注意してください。
- それでは、形式はどのようになっているでしょうか?
- ap_hook_phase_name(function_name,
- predecessors, successors, position);
-
三つの位置が定義されています…
- -HOOK_FIRST
HOOK_MIDDLE
HOOK_LAST
位置を定義するには、上記の「位置」を指定し、 - 修飾子である「先行」と「後行」で手を加えます。 - 「先行」「後行」は、呼ばれるべき関数のリストです。 - 「先行」は関数の実行前に呼ばれるもので、 - 「後行」は実行後に呼ばれるものです。
- -mod_mmap_static
の場合、post_config
- ステージでは必要ありませんが、
- mmap_static_xlat
が core モジュールが名前の変換を実行した後に
- 呼ばれなければなりません。
- そこで aszPre を使って HOOK_LAST
の修飾子を定義しています。
モジュールの定義を作成する際に注意しなければならない - ステージの数は激減しています。古い定義は次のようになっていました。
- --module MODULE_VAR_EXPORT module_name_module = -{ - STANDARD_MODULE_STUFF, - /* initializer */ - /* dir config creater */ - /* dir merger --- default is to override */ - /* server config */ - /* merge server config */ - /* command handlers */ - /* handlers */ - /* filename translation */ - /* check_user_id */ - /* check auth */ - /* check access */ - /* type_checker */ - /* fixups */ - /* logger */ - /* header parser */ - /* child_init */ - /* child_exit */ - /* post read-request */ -};
新しい構造体はとってもシンプルです…
--module MODULE_VAR_EXPORT module_name_module = -{ - STANDARD20_MODULE_STUFF, - /* create per-directory config structures */ - /* merge per-directory config structures */ - /* create per-server config structures */ - /* merge per-server config structures */ - /* command handlers */ - /* handlers */ - /* register hooks */ -};
このうちのいくつかは古いものから新しいものに直接読み替えられるもので、 - いくつかはそうではありません。どうすればいいのかを要約してみます。
- -直接読み替えられるステージ:
- -/* ディレクトリ設定作成関数 */
/* ディレクトリ毎設定構造体作成 */
/* サーバ設定作成関数 */
/* サーバ毎設定構造体作成 */
/* ディレクトリ設定マージ関数 */
/* ディレクトリ毎設定構造体マージ */
/* サーバ設定マージ関数 */
/* サーバ毎設定構造体作成マージ */
/* コマンド・テーブル */
/* コマンド apr_table_t */
/* ハンドラ */
/* ハンドラ */
古い関数の残りのものはフックとして登録されるべきです。 - 現時点で次のようなフック・ステージが定義されています…
- -ap_hook_post_config
_init
ルーチンが登録されるべき場所です)ap_hook_http_method
ap_hook_open_logs
ap_hook_auth_checker
ap_hook_access_checker
ap_hook_check_user_id
ap_hook_default_port
ap_hook_pre_connection
ap_hook_process_connection
ap_hook_child_init
ap_hook_create_request
ap_hook_fixups
ap_hook_handler
ap_hook_header_parser
ap_hook_insert_filter
ap_hook_log_transaction
ap_hook_optional_fn_retrieve
ap_hook_post_read_request
ap_hook_quick_handler
ap_hook_translate_name
ap_hook_type_checker
Apache HTTP 泣若 若吾с 2.3
+吾 mod_mmap_static
≪吾ャ若 Apache 2.0 腱紙
+ 絖腟薑吾綣吾с障障絎
+ 蚊cc障
+ fс
若潟若潟 apr_status_t
с綽荀障
+ apr_status_t ゃ菴障
+ 若潟筝若ャ綽荀違菴ゃ
+ ARP_SUCCESS
с若ャ
+ 鴻潟若ャс
+ 若綽篏с羂ゃ
若潟篏荀c潟茵
+ 紊眼障сmmap_init
mmap_post_config
+ <c紊眼障
+ 羝<綣違紊у紊眼罨<障
apr_pool_t *p
apr_pool_t *plog
apr_pool_t *ptemp
server_rec *s
若水祉 APR 腱祉障ゃ障 + ゃ菴違紊眼障 + 純鴻紊雁鴻膂≦筝荀с篁ヤ腓冴障
+ +pool
becomes apr_pool_t
table
becomes apr_table_t
違≪若cс篏∽違若喝冴
+ 筝c篏睡障違∽
+ static void register_hooks(void)
篏帥c脂蚊
+ ≪吾ャ若吾莇潟障
+ ∽違鴻筝茹c障違
+ с
+ 鴻鴻若吾у若喝冴
+ ∽違脂蚊綽荀障潟脂蚊綽荀障
+ ∽違脂蚊сс若冴障
+ с若冴с∽違若喝冴後丞
+ 腮綺九勝с障
篁ヤmod_mmap_static
菴遵潟若с:
+static void register_hooks(void) +{ + static const char * const aszPre[]={ "http_core.c",NULL }; + ap_hook_post_config(mmap_post_config,NULL,NULL,HOOK_MIDDLE); + ap_hook_translate_name(mmap_static_xlat,aszPre,NULL,HOOK_LAST); +};
с若潟鴻篋ゃ∽違脂蚊障筝ゃ
+ post_config
鴻若悟 (祉鴻≪吾ャ若
+ 綽荀с) с筝ゃ translate_name
с若榊с
+ ∽違綵√с羈
+ с綵√cс?
+ ap_hook_phase_name(function_name,
+ predecessors, successors, position);
+
筝ゃ篏臀絎臂障
+ +HOOK_FIRST
HOOK_MIDDLE
HOOK_LAST
篏臀絎臂筝荐篏臀絎 + 篆蕋上с茵緇茵ф障 + 茵緇茵若違鴻∽違鴻с + 茵∽違絎茵若違с + 緇茵絎茵緇若違с
+ +mod_mmap_static
翫post_config
+ 鴻若吾с綽荀障
+ mmap_static_xlat
core ≪吾ャ若紊絎茵緇
+ 若違違障
+ aszPre 篏帥c HOOK_LAST
篆蕋上絎臂障
≪吾ャ若絎臂篏羈違 + 鴻若吾違羶羝障ゃ絎臂罨<c障
+ ++module MODULE_VAR_EXPORT module_name_module = +{ + STANDARD_MODULE_STUFF, + /* initializer */ + /* dir config creater */ + /* dir merger --- default is to override */ + /* server config */ + /* merge server config */ + /* command handlers */ + /* handlers */ + /* filename translation */ + /* check_user_id */ + /* check auth */ + /* check access */ + /* type_checker */ + /* fixups */ + /* logger */ + /* header parser */ + /* child_init */ + /* child_exit */ + /* post read-request */ +};
違罕篏c激潟с
++module MODULE_VAR_EXPORT module_name_module = +{ + STANDARD20_MODULE_STUFF, + /* create per-directory config structures */ + /* merge per-directory config structures */ + /* create per-server config structures */ + /* merge per-server config structures */ + /* command handlers */ + /* handlers */ + /* register hooks */ +};
<ゃゃ違贋・茯炊帥с + ゃс障違荀膣帥障
+ +贋・茯炊帥鴻若:
+ +/* c荐絎篏∽ */
/* c罸荐絎罕篏篏 */
/* 泣若荐絎篏∽ */
/* 泣若罸荐絎罕篏篏 */
/* c荐絎若檎∽ */
/* c罸荐絎罕篏若 */
/* 泣若荐絎若檎∽ */
/* 泣若罸荐絎罕篏篏若 */
/* 潟潟祉若 */
/* 潟潟 apr_table_t */
/* 潟 */
/* 潟 */
ゃ∽違罧脂蚊鴻с + 憝鴻ф<祉鴻若吾絎臂障
+ +ap_hook_post_config
_init
若潟脂蚊鴻贋с)ap_hook_http_method
ap_hook_open_logs
ap_hook_auth_checker
ap_hook_access_checker
ap_hook_check_user_id
ap_hook_default_port
ap_hook_pre_connection
ap_hook_process_connection
ap_hook_child_init
ap_hook_create_request
ap_hook_fixups
ap_hook_handler
ap_hook_header_parser
ap_hook_insert_filter
ap_hook_log_transaction
ap_hook_optional_fn_retrieve
ap_hook_post_read_request
ap_hook_quick_handler
ap_hook_translate_name
ap_hook_type_checker
Apache HTTP サーバ バージョン 2.3
-本文書の内容は次の一言に尽きます。「Apache が設定ファイルを読み込むときに - DNS を使用する必要がないようにして下さい」。Apache が設定ファイルを - 読み込むときに DNS を使用する必要がある場合、信頼性の問題 - (起動しないかもしれません) やサービス拒否や盗用アタック - (他のユーザからヒットを盗むことを含みます) - の問題に直面するかもしれません。
-
- <VirtualHost www.abc.dom>
- ServerAdmin webgirl@abc.dom
- DocumentRoot /www/abc
- </VirtualHost>
-
Apache が正常に機能するには、バーチャルホスト毎に必ず二つの
- 情報が必要になります。それは、
- ServerName
- と、そのサーバが応答するための IP (最低一つ) です。
- 上記例では IP アドレスを含んでいませんので、Apache は DNS
- を使用して www.abc.dom
を見つけなければなりません。
- 何らかの理由で設定ファイルを読み込んでいるときに DNS
- が利用できなかった場合、
- バーチャルホストは設定されません。
- そして、そのバーチャルホストに対するヒットには応答がなされません
- (Apache 1.2 以前では起動すらしません)。
www.abc.dom
のアドレスが 192.0.2.1
- だとします。では、次の設定について考えてみましょう。
- <VirtualHost 192.0.2.1>
- ServerAdmin webgirl@abc.dom
- DocumentRoot /www/abc
- </VirtualHost>
-
現在のリリースでは Apache は DNS 逆引きを使用して
- このバーチャルホストの ServerName
- を見つけます。
- その逆引きが失敗した場合は部分的にバーチャルホストを無効にします
- (Apache 1.2 より前では起動すらしません)。
- バーチャルホストが名前ベースであれば完全に無効になりますが、
- IP ベースであれば概ね動作します。しかしながら、サーバ名を
- 含む完全な URL を生成しなければならない場合は、正しい URL
- の生成ができません。
次の例は上記の問題を解決しています。
- -
- <VirtualHost 192.0.2.1>
- ServerName www.abc.dom
- ServerAdmin webgirl@abc.dom
- DocumentRoot /www/abc
- </VirtualHost>
-
サービス拒否が起こる場合、(少なくとも) 二つのケースがあります。
- Apache 1.2 より前を実行している場合、バーチャルホストのための
- 上記の二つの DNS 検索のうち一つ失敗すれば起動すらしません。
- そしてこの DNS 検索が自分の制御下にすらない場合もありえます。
- 例えば、abc.dom
が顧客のサーバの一つで、
- DNS は顧客自身で管理している場合、単に
- www.abc.dom
レコードを削除するだけで、
- (1.2 より前の) サーバを起動不能にすることができます。
もう一つのケースは、より気付きにくいものです。 - 次の設定について考えてみましょう。
- -
- <VirtualHost www.abc.dom>
- ServerAdmin webgirl@abc.dom
- DocumentRoot /www/abc
- </VirtualHost>
-
- <VirtualHost www.def.dom>
- ServerAdmin webguy@def.dom
- DocumentRoot /www/def
- </VirtualHost>
-
192.0.2.1 を www.abc.dom
に、
- 192.0.2.2 を www.def.dom
に割り当てているとします。
- また、def.dom
は顧客自身の DNS
- の制御下にあるとします。この設定で、abc.dom
- に向けられたトラフィック全てを奪うことができる位置に
- def.dom
を設置できています。後は単に
- www.def.dom
が 192.0.2.1 を参照するように
- 設定するだけです。DNS は顧客側の DNS でコントロールされているので、
- www.def.dom
レコードが好きな場所を指すように
- 設定できてしまうのを止めさせることができません。
192.0.2.1 に対するリクエスト
- (http://www.abc.dom/whatever
形式の URL
- を入力したユーザからのもの全てを含みます)
- は、def.dom
バーチャルホストで応答されます。
- このようなことが何故起こるかもっと良く知るためには、
- 応答の必要なバーチャルホストへのリクエストに対して、
- Apache がどのように整合性を確保するかについて、
- 深い議論が必要になります。おおざっぱな説明はこちらに記述されています。
Apache 1.1 での 名前ベースのバーチャルホストのサポート 追加の際に、
- Apache は httpd
の実行されているホストの IP
- アドレスを知る必要が出てきました。このアドレスを得るために、
- (もしあれば) グローバルな
- ServerName
を使用するか、
- C 言語の関数 gethostname
(コマンドプロンプトで
- hostname
とタイプしたときと同じものを返します)
- を呼び出すかをします。
- その後、得られたアドレスで DNS 検索を行ないます。
- 現在のところ、この DNS 検索を回避する方法はありません。
DNS サーバがダウンして、この検索ができない事態が起こることを
- 恐れているのであれば、/etc/hosts
- にホスト名を記述しておくことができます
- (マシンが正常に起動するように既に設定されているかもしれません)。
- その場合、DNS 参照が失敗した場合にマシンが /etc/hosts
- を使用するように設定していることを確認してください。
- その方法は、どの OS を使用しているかに依存しますが、
- /etc/resolv.conf
か /etc/nsswitch.conf
- を編集することで設定できます。
もし他の理由で DNS を利用する必要がない場合は、
- HOSTRESORDER
環境変数を「 local
- 」に設定することでそのようにできます。以上これらの事柄は、どんな
- OS 、レゾルバライブラリを使用しているかに依存します。また、
- mod_env
を使用して環境変数を制御しない限り、
- CGI にも影響を与えます。man ページや使用している OS
- の FAQ で調べると良いでしょう。
VirtualHost
- で IP アドレスを使用する。
- Listen
- で IP アドレスを使用する。
- ServerName
- を持つようにする。
- <VirtualHost _default_:*>
- サーバを作る。DNS に関して、現状は全く宜しくありません。Apache 1.2 で、 - DNS のイベントが失敗しても少なくとも起動プロセスが続くようにしましたが、 - これが最高の解決方法ではないでしょう。アドレスの再割り当てが必要不可避 - となっている今日のインターネットにおいては、 - 設定ファイルの中で明示的な IP アドレスを要求する仕様は、 - 全く宜しくありません。
- -盗用のサービスアタックに関して行なうべき事は、 - DNS 順引きを行なって得られたアドレスに対する DNS - 逆引きを行なって、二つの名前を比較することです。 - この二つが一致しなければバーチャルホストは無効になるようにします。 - こうするためには逆引き DNS が適切に設定されている必要があります - (FTP サーバや TCP ラッパーのおかげで「二重逆引き」DNS は一般的に - なっていますので、管理者にはお馴染みものでしょう)。
- -IP アドレスが使用されていなくて DNS が失敗した場合は、 - どうしてもバーチャルホストウェブサーバを信頼性を確保して - 起動させることは不可能のようです。 - 設定の一部を無効にするというような部分的な解決では、 - サーバが何をするようにするかにもよりますが、 - そのサーバが起動しないより確実に悪い状況になるでしょう。
- -HTTP/1.1 が開発され、ブラウザやプロキシが Host
- ヘッダを発行するようになったので、IP ベースのバーチャルホストを
- 全く使用しなくても済むようになるかもしれません。
- この場合、ウェブサーバは設定中に DNS 参照をしなくても済みます。
- しかし 1997 年 3 月時点の状況では、
- 商用レベルのウェブサーバで使用できるほどには、
- これらの機能は広く開発が進んでいません。
Apache HTTP 泣若 若吾с 2.3
+吾絎鴻罨<筝荐絨純障Apache 荐絎<ゃ茯粋昭 + DNS 篏睡綽荀筝Apache 荐絎<ゃ + 茯粋昭 DNS 篏睡綽荀翫篆♂惹с馹 + (莎桁障) 泣若号≪帥 + (篁若吟帥障) + 馹顔≪障
+
+ <VirtualHost www.abc.dom>
+ ServerAdmin webgirl@abc.dom
+ DocumentRoot /www/abc
+ </VirtualHost>
+
Apache 罩e幻罘純若c鴻罸綽篋ゃ
+ 宴綽荀障
+ ServerName
+ 泣若綽膈 IP (篏筝) с
+ 筝荐箴с IP ≪鴻с障сApache DNS
+ 篏睡 www.abc.dom
荀ゃ違障
+ 篏宴ц┃絎<ゃ茯粋昭с DNS
+ сc翫
+ 若c鴻荐絎障
+ 若c鴻絲障綽膈障
+ (Apache 1.2 篁ュс莎桁障)
www.abc.dom
≪鴻 192.0.2.1
+ 障с罨<荐絎ゃ帥障
+ <VirtualHost 192.0.2.1>
+ ServerAdmin webgirl@abc.dom
+ DocumentRoot /www/abc
+ </VirtualHost>
+
憜若鴻с Apache DNS 綣篏睡
+ 若c鴻 ServerName
+ 荀ゃ障
+ 綣紊掩翫若c鴻≦鴻障
+ (Apache 1.2 с莎桁障)
+ 若c鴻若鴻с医≦鴻障
+ IP 若鴻с井篏障泣若
+ 絎 URL 違翫罩c URL
+ с障
罨<箴筝荐馹茹f浦障
+ +
+ <VirtualHost 192.0.2.1>
+ ServerName www.abc.dom
+ ServerAdmin webgirl@abc.dom
+ DocumentRoot /www/abc
+ </VirtualHost>
+
泣若号莎激翫(絨) 篋ゃ宴若鴻障
+ Apache 1.2 絎茵翫若c鴻
+ 筝荐篋ゃ DNS 罎膣≪>ゅけ域儀障
+ DNS 罎膣≪九勝筝翫障
+ 箴違abc.dom
蕁у≪泣若筝ゃс
+ DNS 蕁у∵荳х∞翫
+ www.abc.dom
潟若ゃс
+ (1.2 ) 泣若莎桁筝純с障
筝ゃ宴若鴻羂篁с + 罨<荐絎ゃ帥障
+ +
+ <VirtualHost www.abc.dom>
+ ServerAdmin webgirl@abc.dom
+ DocumentRoot /www/abc
+ </VirtualHost>
+
+ <VirtualHost www.def.dom>
+ ServerAdmin webguy@def.dom
+ DocumentRoot /www/def
+ </VirtualHost>
+
192.0.2.1 www.abc.dom
+ 192.0.2.2 www.def.dom
蚊綵障
+ 障def.dom
蕁у∵荳 DNS
+ 九勝筝障荐絎сabc.dom
+ c絅с篏臀
+ def.dom
荐臀с障緇
+ www.def.dom
192.0.2.1 с
+ 荐絎сDNS 蕁у√眼 DNS с潟潟若с
+ www.def.dom
潟若絅純贋
+ 荐絎с障罩≪с障
192.0.2.1 絲障鴻
+ (http://www.abc.dom/whatever
綵√ URL
+ ュ若吟帥障)
+ def.dom
若c鴻у膈障
+ 篏莎激cャ
+ 綽膈綽荀若c鴻吾鴻絲障
+ Apache 翫с腆坂ゃ
+ 羞宴茘域綽荀障c宴茯<荐菴違障
Apache 1.1 с 若鴻若c鴻泣若 菴遵
+ Apache httpd
絎茵鴻 IP
+ ≪鴻ャ綽荀冴障≪鴻緇
+ () 違若
+ ServerName
篏睡
+ C 荐茯∽ gethostname
(潟潟潟
+ hostname
帥ゃ菴障)
+ 若喝冴障
+ 緇緇≪鴻 DNS 罎膣≪茵障
+ 憜 DNS 罎膣≪帥号障
DNS 泣若潟罎膣≪с篋莎激
+ с違/etc/hosts
+ 鴻荐菴違с障
+ (激潟罩e幻莎桁≪荐絎障)
+ 翫DNS с紊掩翫激潟 /etc/hosts
+ 篏睡荐絎腆肴
+ 号 OS 篏睡箴絖障
+ /etc/resolv.conf
/etc/nsswitch.conf
+ 膩ц┃絎с障
篁宴 DNS 綽荀翫
+ HOSTRESORDER
医紊違 local
+ 荐絎сс障篁ヤ篋
+ OS 障ゃ篏睡箴絖障障
+ mod_env
篏睡医紊違九勝
+ CGI 綵演帥筝障man 若吾篏睡 OS
+ FAQ ц帥鴻с
VirtualHost
+ IP ≪鴻篏睡
+ Listen
+ IP ≪鴻篏睡
+ ServerName
+ ゃ
+ <VirtualHost _default_:*>
+ 泣若篏DNS ≪憟吟鎘障Apache 1.2 с + DNS ゃ潟紊掩絨莎桁祉鴻膓障 + 蕭茹f浦号сс≪鴻蚊綵綽荀筝 + c篁ャゃ潟帥若 + 荐絎<ゃ筝ф腓榊 IP ≪鴻荀羆篁罕 + 鎘障
+ +泣若鴻≪帥≪茵鴻篋 + DNS 綣茵c緇≪鴻絲障 DNS + 綣茵c篋ゃ罸莠с + 篋ゃ筝眼違若c鴻≦鴻障 + 綣 DNS 荐絎綽荀障 + (FTP 泣若 TCP 若с篋綣DNS 筝 + c障с膊∞薤贋帥с)
+ +IP ≪鴻篏睡 DNS 紊掩翫 + 若c鴻с泣若篆♂惹с腆坂 + 莎桁筝純с + 荐絎筝≦鴻茹f浦с + 泣若篏障 + 泣若莎桁腆阪倶с
+ +HTTP/1.1 冴吟激 Host
+ 肴cсIP 若鴻若c鴻
+ 鋎睡羝障
+ 翫с泣若荐絎筝 DNS с羝帥障
+ 1997 綛 3 鴻倶с
+ с泣若т戎с祉
+ 罘純綺冴蚊с障
Apache HTTP サーバ バージョン 2.3
-Apache HTTP サーバはモジュール化されたプログラムで、
- 管理者がモジュールを選択することでサーバに組み込む機能を選ぶことができます。
- モジュールはサーバがビルドされるときに httpd
バイナリに
- 静的に組み込むことができます。もしくは、httpd
バイナリとは
- 別に存在する動的共有オブジェクト (訳注: Dynamic Shared Object)
- (DSO) としてコンパイルすることも
- できます。DSO モジュールはサーバがビルドされるときにコンパイルしたり、
- Apache 拡張ツール (apxs
) を
- 使って後でコンパイルして追加したりできます。
この文書は DSO モジュールの使い方と、仕組みについて - 説明します。
-関連モジュール | 関連ディレクティブ |
---|---|
個々の Apache モジュールをロードするための DSO サポートは
- mod_so.c
というモジュールの機能に基づいています。
- このモジュール は Apache のコアに静的に組み込まれている必要があります。
- それは core.c
以外では DSO にできない唯一の
- モジュールです。事実上、他のすべての Apache のモジュールは、
- インストールの文書で説明されているように、
- configure
の
- --enable-module=shared
オプションでそれぞれを
- DSO ビルドにすることにより、DSO モジュールにすることができます。
- mod_foo.so
のような DSO にモジュールがコンパイルされれば、
- httpd.conf
ファイル中で mod_so
の
- LoadModule
- ディレクティブを使うことでサーバの起動や再起動時にこのモジュールを
- ロードするようにできます。
Apache モジュール用の (特にサードパーティモジュールの) DSO ファイルの
- 作成を簡単にするために、apxs
- (APache eXtenSion) という新しいサポートプログラムがあります。
- Apache のソースツリーの外で DSO モジュールをビルドするために
- 使うことができます。発想は単純です: Apache のインストール時の
- configure
、make install
のときに Apache の
- C ヘッダをインストールし、DSO ビルド用のプラットフォーム依存の
- コンパイラとリンカのフラグを apxs
プログラムに追加します。
- これにより、ユーザが Apache の配布ソースツリーなしで、さらに
- DSO サポートのためのプラットフォーム依存のコンパイラやリンカの
- フラグをいじることなく Apache のモジュールのソースをコンパイル
- できるようになります。
Apache 2.2 の DSO 機能の概略を知ることができるための、 - 短く簡潔な概要です:
- -mod_foo.c
- として、それを DSO mod_foo.so
にビルド、インストール:
-
-
-$ ./configure --prefix=/path/to/install --enable-foo=shared
-$ make install
-
mod_foo.c
- として、それを DSO mod_foo.so
にビルド、インストール:
-
-
-$ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c \
-
- --enable-foo=shared
-
-$ make install
-
-$ ./configure --enable-so
-$ make install
-
mod_foo.c
- として、それを apxs
を使って
- Apache ソースツリーの外で DSO にビルド、インストール:
-
-
-$ cd /path/to/3rdparty
-$ apxs -c mod_foo.c
-$ apxs -i -a -n foo mod_foo.la
-
どの場合においても、共有モジュールをコンパイルした後で、
- httpd.conf
で
- LoadModule
- ディレクティブを使って Apache がモジュールを使用するように
- しなければなりません。
最近の Unix 系の OS には 動的共有オブジェクト (DSO) - の動的リンク/ロードという気のきいた機構が - 存在します。これは、実行時にプログラムのアドレス空間に - ロードできるような特別な形式でプログラムをビルドすることを - 可能にします。
- -このロードは二つの方法で行なうことができます: 実行プログラムが
- 起動されたときに ld.so
というシステムプログラム
- により自動的に行なわれる方法と、実行プログラム中から、システムコール
- dlopen()/dlsym()
による Unix ローダへの
- プログラムシステムのインタフェースを使って手動で行なう方法とが
- あります。
最初の方法では DSO は普通は共有ライブラリや DSO
- ライブラリ と呼ばれていて、DSO の名前は
- libfoo.so
や libfoo.so.1.2
のようになっています。
- これらはシステムディレクトリ (通常 /usr/lib
) に存在し、
- 実行プログラムへのリンクはビルド時に -lfoo
をリンカに
- 指定することで確立されます。これによりライブラリへの参照が実行プログラムの
- ファイルに書き込まれて、起動時に Unix のローダが /usr/lib
や、
- リンカの -R
のようなオプションによりハードコードされたパス、
- 環境変数 LD_LIBRARY_PATH
により設定されたパス、の中から
- libfoo.so
の場所を見つけることができます。それから、
- 実行プログラム中の (まだ未解決の) シンボルを DSO にあるシンボルで
- 解決します。
普通は実行プログラム中のシンボルは DSO からは参照されません
- (DSO は一般的なコードによる再利用可能なライブラリですので)。
- ですから、さらなるシンボルの解決は必要ありません。
- シンボルは Unix ローダにより完全な解決が行なわれますので、実行ファイル自身は
- 何もする必要がありません。(実際のところ、静的でない方法でリンクされている
- すべての実行プログラムに組み込まれている開始用のコードの一部に
- ld.so
を起動するコードが含まれています)。よく使われる
- ライブラリの動的ロードの利点は明らかです。ライブラリのコードは
- システムライブラリに libc.so
のようにして一度保存するだけでよく、
- プログラムのために必要なディスクの領域を節約することができます。
二つめの方法では DSO は普通は共有オブジェクトや
- DSO ファイルと呼ばれていて、任意の拡張子を付けることができます
- (ただし、標準的な名前は foo.so
です)。
- これらのファイルは通常はプログラム専用のディレクトリに置かれ、
- これらを使う実行プログラムへのリンクは自動的にはされません。
- ですので、実行プログラムは dlopen()
を使って
- 実行時に手動で DSO をプログラムのアドレス空間にロードする必要があります。
- この時点では実行プログラムに対して DSO のシンボルの解決は行なわれません。
- しかし、その代わりに Unix のローダが DSO の (まだ未解決の) シンボルを
- 実行プログラムによりエクスポートされたシンボルと既にロードされた
- DSO ライブラリによりエクスポートされたシンボル (特に、どこにでもある
- libc.so
のすべてのシンボル) で自動的に解決します。
- こうすることで、DSO は最初から静的にリンクされていたかのように、
- 実行プログラムのシンボルを知ることができます。
最後に、DSO の API を利点を生かすために、プログラムは
- 後でディスパッチテーブルなどでシンボルを使うことができるように、
- dlsym()
を使っていくつかのシンボルを解決します。
- すなわち: 実行プログラムは必要なすべてのシンボルを手動で解決しなければ
- なりません。この機構の利点はプログラムのオプショナルな部分は
- 必要になるまでロードする必要がない (だからメモリも消費しない)
- ことです。必要ならば、基本プログラムの機能を拡張するために
- これらの部分を動的にロードすることができます。
この DSO 機構は簡単なように見えますが、少なくとも一つ難しい点が - あります: プログラムを拡張するために DSO を使っているときに、 - DSO が実行プログラムからシンボルを解決する点です (二番目の方法)。 - これはなぜでしょうか。それは、DSO のシンボルを実行プログラムの - シンボルから「逆解決」するというのはライブラリの設計 - (ライブラリはそれを使用するプログラムのことは何も - 知らない) に反していて、この機能はすべてのプラットフォームに - あるわけではなく、標準化もされていないからです。 - 実際には実行プログラムのグローバルなシンボルは再エクスポートされることは - あまりなく、DSO から使うことができません。リンカにグローバルシンボルすべてを - エクスポートするようにさせる方法を見つけることが、実行時にプログラムを - 拡張するために DSO を使うときの一番の問題です。
- -共有ライブラリのアプローチが普通の方法です。DSO 機構はそのために - 設計されたものですから。したがって、その方法はオペレーティングシステムが - 提供するほとんどすべての種類のライブラリで使われています。 - 一方、プログラムの拡張のために共有オブジェクトを使用する、という方は - あまり使われていません。
- -1998 年の時点で、実行時に実際に機能拡張のために DSO 機構を使っている - ソフトウェアパッケージは少しだけでした: Perl 5 (XS 機構と DnaLoader モジュール - によるもの)、Netscape サーバなどです。Apache はすでに - モジュールの概念を使って機能拡張をしていて、内部的にディスパッチリストに - 基づいた外部モジュールの Apache コア機能へのリンクを行なっていましたので、 - バージョン 1.3 から、Apache も DSO 機構を使う仲間になりました。 - Apache は実行時に DSO を使ってモジュールをロードするようにすでに - 運命付けられていたのです。
-上記の DSO に基づいた機能は以下の利点があります:
- -configure
のオプションを使う代わりに
- 実行時に httpd.conf
の設定用コマンド
- LoadModule
- を使うことができますので、サーバパッケージの柔軟性が高まりました。
- たとえば、一つの Apache のインストールから
- 違う構成のサーバ (標準版と SSL 版、最小構成と拡張版 [mod_perl, PHP3]
- など) を実行することができます。apxs
の組み合わせにより、Apache ソースツリーの
- 外で作業でき、開発中のモジュールの新しいバージョンを
- 実行中の Apache サーバに組み込むために apxs -i
と
- apachectl restart
を行なうだけで良くなるからです。DSO には以下の欠点があります:
- -ld -lfoo
)
- というわけではありませんので (たとえば、a.out のプラットフォームでは
- この機能はありませんが、ELF のプラットフォームにはあります)、
- すべての種類のモジュールに DSO 機構を使えるわけではありません。
- 言い換えると、DSO ファイルとしてコンパイルされたモジュールの
- 使えるシンボルは、
- Apache のコアのシンボル、C ライブラリ (libc
) と
- Apache コアが使っている他のすべての静的なライブラリと動的ライブラリの
- シンボル、PIC による静的なライブラリ (libfoo.a
) の
- シンボルのみに制限されます。その他のコードを使う方法は、
- Apache コア自身がすでにそのコードへの参照があるようにするか、
- dlopen ()
を使ってコードを自分自身でロードするかの
- どちらかしかありません。Apache HTTP 泣若 若吾с 2.3
+Apache HTTP 泣若≪吾ャ若違с
+ 膊∞≪吾ャ若御с泣若腟粋昭罘純吾吟с障
+ ≪吾ャ若泣若 httpd
ゃ
+ 腟粋昭с障httpd
ゃ
+ ャ絖掩吾с (荐恰絵: Dynamic Shared Object)
+ (DSO) 潟潟ゃ
+ с障DSO ≪吾ャ若泣若潟潟ゃ
+ Apache ≦宍若 (apxs
)
+ 篏帥c緇с潟潟ゃ菴遵с障
吾 DSO ≪吾ャ若篏帥鴻篁腟帥ゃ + 茯障
+∫c≪吾ャ若 | ∫ccc |
---|---|
Apache ≪吾ャ若若 DSO 泣若
+ mod_so.c
≪吾ャ若罘純冴ャ障
+ ≪吾ャ若 Apache 潟≪腟粋昭障綽荀障
+ core.c
篁ュс DSO с筝
+ ≪吾ャ若с篋絎筝篁鴻 Apache ≪吾ャ若
+ ゃ潟鴻若ц
+ configure
+ --enable-module=shared
激с潟с
+ DSO DSO ≪吾ャ若с障
+ mod_foo.so
DSO ≪吾ャ若潟潟ゃ違
+ httpd.conf
<ゃ筝 mod_so
+ LoadModule
+ cc篏帥с泣若莎桁莎桁≪吾ャ若
+ 若с障
Apache ≪吾ャ若 (鴻泣若若c≪吾ャ若) DSO <ゃ
+ 篏膂≦apxs
+ (APache eXtenSion) 違泣若違障
+ Apache 純若鴻若紊 DSO ≪吾ャ若
+ 篏帥с障堺潟膣с: Apache ゃ潟鴻若
+ configure
make install
Apache
+ C ゃ潟鴻若DSO 若箴絖
+ 潟潟ゃ潟違 apxs
違菴遵障
+ 若吟 Apache 絽純若鴻若с
+ DSO 泣若若箴絖潟潟ゃ潟
+ 違 Apache ≪吾ャ若純若鴻潟潟ゃ
+ с障
Apache 2.2 DSO 罘純网ャャс + 靎≧网荀с:
+ +mod_foo.c
+ DSO mod_foo.so
ゃ潟鴻若:
+
+
+$ ./configure --prefix=/path/to/install --enable-foo=shared
+$ make install
+
mod_foo.c
+ DSO mod_foo.so
ゃ潟鴻若:
+
+
+$ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c \
+
+ --enable-foo=shared
+
+$ make install
+
+$ ./configure --enable-so
+$ make install
+
mod_foo.c
+ apxs
篏帥c
+ Apache 純若鴻若紊 DSO ゃ潟鴻若:
+
+
+$ cd /path/to/3rdparty
+$ apxs -c mod_foo.c
+$ apxs -i -a -n foo mod_foo.la
+
翫掩≪吾ャ若潟潟ゃ緇с
+ httpd.conf
+ LoadModule
+ cc篏帥c Apache ≪吾ャ若篏睡
+ 違障
菴 Unix 膤祉 OS 掩吾с (DSO) + 潟/若羂罘罕 + 絖障絎茵違≪合咲 + 若с劫ャ綵√с違 + 純障
+ +若篋ゃ号цс障: 絎茵違
+ 莎桁 ld.so
激鴻違
+ 茵号絎茵違筝激鴻潟若
+ dlopen()/dlsym()
Unix 若吾
+ 違激鴻ゃ潟帥с若鴻篏帥cц号
+ 障
号с DSO 掩ゃ DSO
+ ゃ 若違DSO
+ libfoo.so
libfoo.so.1.2
c障
+ 激鴻c (絽 /usr/lib
) 絖
+ 絎茵違吾潟 -lfoo
潟
+ 絎х∈腴障ゃ吾с絎茵違
+ <ゃ吾莨若障莎桁 Unix 若 /usr/lib
+ 潟 -R
激с潟若潟若鴻
+ 医紊 LD_LIBRARY_PATH
荐絎鴻筝
+ libfoo.so
贋荀ゃс障
+ 絎茵違筝 (障茹f浦) 激潟 DSO 激潟
+ 茹f浦障
絎茵違筝激潟 DSO с障
+ (DSO 筝潟若純ゃс)
+ с激潟茹f浦綽荀障
+ 激潟 Unix 若絎茹f浦茵障с絎茵<ゃ荳
+ 篏綽荀障(絎с号с潟
+ 鴻絎茵違腟粋昭障紮潟若筝
+ ld.so
莎桁潟若障障)鋎帥
+ ゃ若鴻сゃ潟若
+ 激鴻ゃ libc.so
筝綺篆絖с
+ 違綽荀c鴻膀膣с障
篋ゃ号с DSO 掩吾с
+ DSO <ゃ若違篁紙≦宍絖篁с障
+ (罔羣 foo.so
с)
+ <ゃ絽吾違絨c臀
+ 篏帥絎茵違吾潟障
+ сс絎茵違 dlopen()
篏帥c
+ 絎茵 DSO 違≪合咲若綽荀障
+ 鴻с絎茵違絲障 DSO 激潟茹f浦茵障
+ 篁c Unix 若 DSO (障茹f浦) 激潟
+ 絎茵違鴻若激潟≪若
+ DSO ゃ鴻若激潟 (鴻с
+ libc.so
鴻激潟) ц茹f浦障
+ сDSO 潟
+ 絎茵違激潟ャс障
緇DSO API 鴻違
+ 緇сc鴻若с激潟篏帥с
+ dlsym()
篏帥cゃ激潟茹f浦障
+ : 絎茵違綽荀鴻激潟цВ羆冴
+ 障罘罕鴻違激с
+ 綽荀障с若綽荀 (<≪羔莢祉)
+ с綽荀違堺違罘純≦宍
+ 若с障
DSO 罘罕膂≦荀障絨筝らc鴻 + 障: 違≦宍 DSO 篏帥c + DSO 絎茵違激潟茹f浦鴻с (篋号) + сDSO 激潟絎茵違 + 激潟茹f浦ゃ荐荐 + (ゃ篏睡違篏 + ャ) 罘純鴻若 + с罔羣с + 絎絎茵違違若激潟鴻若 + 障DSO 篏帥с障潟違若激潟鴻 + 鴻若号荀ゃ絎茵違 + ≦宍 DSO 篏帥筝馹с
+ +掩ゃ≪若号сDSO 罘罕 + 荐荐сc号若c潟違激鴻 + 箴祉鴻腮蕁ゃт戎障 + 筝鴻違≦宍掩吾с篏睡鴻 + 障篏帥障
+ +1998 綛眼鴻с絎茵絎罘醇≦宍 DSO 罘罕篏帥c + 純с≪宴若吾絨с: Perl 5 (XS 罘罕 DnaLoader ≪吾ャ若 + )Netscape 泣若сApache с + ≪吾ャ若网綽泣篏帥c罘醇≦宍c鴻鴻 + 冴ャ紊≪吾ャ若 Apache 潟∽純吾潟茵c障с + 若吾с 1.3 Apache DSO 罘罕篏帥篁臥障 + Apache 絎茵 DSO 篏帥c≪吾ャ若若с + 巡с
+筝荐 DSO 冴ャ罘純篁ヤ鴻障:
+ +configure
激с潟篏帥篁c
+ 絎茵 httpd.conf
荐絎潟潟
+ LoadModule
+ 篏帥с障с泣若宴若吾荵с蕭障障
+ 違筝ゃ Apache ゃ潟鴻若
+ 罕泣若 (罔羣 SSL 絨閝≦宍 [mod_perl, PHP3]
+ ) 絎茵с障apxs
腟水Apache 純若鴻若
+ 紊т罐с坂賢≪吾ャ若違若吾с潟
+ 絎茵筝 Apache 泣若腟粋昭 apxs -i
+ apachectl restart
茵цсDSO 篁ヤ罨鴻障:
+ +ld -lfoo
)
+ с障 (違a.out 若с
+ 罘純障ELF 若障)
+ 鴻腮蕁≪吾ャ若 DSO 罘罕篏帥с障
+ 荐DSO <ゃ潟潟ゃ≪吾ャ若
+ 篏帥激潟
+ Apache 潟≪激潟C ゃ (libc
)
+ Apache 潟≪篏帥c篁鴻ゃゃ
+ 激潟PIC ゃ (libfoo.a
)
+ 激潟帥狗障篁潟若篏帥号
+ Apache 潟∵荳с潟若吾с
+ dlopen ()
篏帥c潟若荳с若
+ <障Apache HTTP サーバ バージョン 2.3
-Apache HTTP サーバは環境変数と呼ばれる、名前のついた - 変数に情報を記憶する仕組みを提供しています。この情報はログ収集や - アクセス制御などのいろいろな操作を制御するために使うことができます。 - これらの変数は CGI スクリプトなどの外部プログラムと通信するためにも - 使われます。この文書はそれらの変数の操作方法と使用方法をいくつか - 紹介します。
- -これらの変数は環境変数と呼ばれていますが、オペレーティング - システムによって制御されている環境変数と同じではありません。 - 実際は、これらの変数は Apache の内部構造の中に記憶され、操作されています。 - それらは、CGI や SSI スクリプトに渡されたときだけ、実際の - オペレーティングシステムの環境変数になります。サーバ自身が - 実行されているオペレーティングシステムの環境を操作したい場合は、 - オペレーティングシステムのシェルが提供している標準の環境変数の - 操作方法を使わなければなりません。
-関連モジュール | 関連ディレクティブ |
---|---|
Apache において環境変数を設定する一番基本的な方法は、
- 無条件に環境変数を設定する SetEnv
ディレクティブを使用することです。
- PassEnv
- ディレクティブにより、Apache が起動されたシェルの
- 環境変数を渡すこともできます。
より柔軟性を高めるために、mod_setenvif
- で提供されているディレクティブを使用することで、リクエストの
- 特性に基づいて環境変数を設定することができます。例えば、特定のブラウザ
- (User-Agent) のリクエストや特定の Referer [意図的な綴りです]
- (訳注: 正しい綴りは referrer ですが、HTTP の仕様では Referer
- となっています) ヘッダが見つかったときのみ変数を設定することができます。
- mod_rewrite の RewriteRule
- ディレクティブにおいて環境変数を設定する [E=...]
- オプションを使用することで、
- より柔軟な設定を行なうことができます。
mod_unique_id は、非常に限られた条件の下で
- 「すべて」のリクエストについて、一意であることが保証されている値を環境変数
- UNIQUE_ID
に設定します。
Apache の設定ファイルで設定された環境変数とシェルから渡される - 環境変数に加えて、CGI スクリプトと SSI ページには CGI の仕様で要求されている、 - リクエストのメタ情報を持った環境変数の組が提供されます。
- - -suexec
- が使用されている場合、CGI スクリプトが起動するために、環境変数は安全な環境変数の組に整理されます。
- この安全な環境変数の集合は、コンパイル時に suexec.c
- で定義されます。関連モジュール | 関連ディレクティブ |
---|---|
環境変数の主な利用法の一つは、CGI スクリプトに情報を伝えることです。 - 上で説明されているように、CGI スクリプトに渡される環境変数は Apache - の設定により設定される変数に加えて、リクエストの標準のメタ情報を含んでいます。 - 詳細は CGI チュートリアル - を参照してください。
- - -mod_include の INCLUDES
フィルタで処理される
- server-parsed (SSI) ドキュメントでは、echo
- 要素を使用すると環境変数が出力されます。
- また、ページのある部分がリクエストの性質に応じて変更されるように、
- 環境変数をフロー制御要素で使うことができます。詳細は
- SSI チュートリアル を参照してください。
allow from env=
ディレクティブと deny from env=
- ディレクティブを使用して、サーバへのアクセスを環境変数の値で制御することができます。
- SetEnvIf
- ディレクティブと組み合わせることで、クライアントの特性に基づいて
- サーバへのアクセス制御を柔軟に行なうことができるようになります。
- たとえば、これらのディレクティブを使用して、特定のブラウザ (User-Agent)
- からのアクセスを拒否することができます。
LogFormat
- ディレクティブのオプション %e
- を使用することで、環境変数をアクセスログに記録することができます。さらに、
- CustomLog
- ディレクティブの条件分岐式を使用することで、
- 環境変数の値によってリクエストをログに記録するかどうかを決めることができます。
- SetEnvIf
- ディレクティブと組み合わせることで、
- どのリクエストをログに記録するかを柔軟に制御することが可能になります。たとえば、
- gif
で終わるファイル名へのリクエストはログに記録しない、
- 違うサブネットのクライアントからのリクエストだけをログに記録する、
- という選択が可能です。
Header
- ディレクティブは環境変数の存在や不在によってクライアントへの応答に特定の
- HTTP ヘッダを付けるかどうかを決めることができます。
- これにより、たとえば、クライアントからのリクエスト
- にあるヘッダがある場合にのみ特定の応答ヘッダを送る、というようなことが
- できます。
ExtFilterDefine
- ディレクティブを使用して
- mod_ext_filter
で設定される外部フィルタは、
- disableenv=
と enableenv=
- オプションを使って、環境変数による条件付き適用ができます。
RewriteCond
- ディレクティブで評価文字列として
- %{ENV:...}
式を指定することで、mod_rewrite
- の書き換えエンジンが環境変数に基いて条件分岐を行なうことができます。
- mod_rewrite が使用可能な変数で ENV:
が前についていない変数は、
- 実際は環境変数ではないということに注意してください。
- それらは他のモジュールからは使用できない mod_rewrite 用の特別な変数です。
-
互換性の問題を解決するために、特定のクライアントと通信しているときは
- Apache の動作を変更できる機構が導入されました。できるだけ柔軟にするために、
- これらの機構は環境変数を定義することで呼び出されます。普通は、
- BrowserMatch
- ディレクティブを使いますが、たとえば SetEnv
ディレクティブや PassEnv
ディレクティブも使用することができます。
これを指定することで、リクエストが HTTP/1.0 - より新しいプロトコルの場合でも、HTTP/1.0 として扱われます。
- - -DEFLATE
フィルタが使用するように設定されているときに、
- この環境変数はブラウザの accept-encoding の設定を無視して常に
- 圧縮された出力を送るようにします。
応答ヘッダがクライアントに送られる前に Vary
- フィールドを取り除きます。
- クライアントの中にはこのフィールドを正しく解釈しないものがあります。
- この変数を設定することでその問題を回避することができます。
- この変数を設定すると、force-response-1.0
- が設定されたことになります。
これが設定されていると、HTTP/1.0 リクエストを発行するクライアントに対しては - 常に HTTP/1.0 で応答するようになります。この機能は、 - 元々は AOL のプロキシの問題のために実装されました。HTTP/1.0 クライアントの中には、 - HTTP/1.1 の応答を返されると正しく動作しないものがあるかもしれません。 - この機能を使用することで、そのようなクライアントとの間の互換性問題を解決できます。
- - -これが 1 に設定されると、この変数は text/html
- 以外のコンテントタイプに対する、mod_deflate
- 提供の DEFLATE
出力フィルタを無効にします。
- また、静的に、既に圧縮されたファイルを使用したい場合、
- (gzip だけでなく、"identity" と異なる全てのエンコードに対して)
- mod_negotiation
も変数を評価します。
セットされると、mod_deflate
の
- DEFLATE
フィルタがオフになります。
- そして mod_negotiation
- はエンコードされたリソースを送らないようにします。
これが設定されている場合は、KeepAlive
を使用しないようにします。
mod_negotiation
の挙動に影響を与えます。
- (en
, ja
, x-klingon
といった)
- 言語タグが格納されていれば、その言語の variant を送信しようとします。
- そのような variant がない場合は、
- 通常のネゴシエーション処理が
- 適用されます。
これはクライアントへのリダイレクトの送信をサーバがより注意深く - 行なうようにします。 - これは通常、リダイレクトに際してクライアントに - 問題があることが分かっている場合に使われます。この機能は元々は - マイクロソフトのウェブフォルダのソフトが DAV - メソッドによるディレクトリのリソースへのリダイレクトの扱いに - 問題がり、それを回避するために実装されました。
- - - -Apache 2.2 以降で利用可能
- -クライアントのリクエストに対する応答としてリダイレクトを送信する際、 - レスポンスにはリダイレクトが自動的に行なえない (行なわれない) - 場合に表示するテキストが含まれます。 - 通常、このテキストに合致したキャラクタセット、ISO-8859-1 - でラベル付けをします。
-しかし、リダイレクト先が別の文字セットを使っている場合、 - ある問題のあるブラウザのバージョンでは、 - リダイレクト先の実際の文字セットの代わりに、 - リダイレクト元の文字セットを使ってしまうことがあります。 - その結果、例えば変な描画が行なわれたりして、読めなくなったりします。
-この環境変数を設定することで、リダイレクションテキストに対する - キャラクタセットの指定を除去しますので、それら問題のあるブラウザでも - リダイレクト先の文字セットを正しく使うようにできます。
- - - -これらの指示子は mod_proxy
の挙動を変更します。
- 詳細は mod_proxy
のドキュメントをご参照ください。
クライアントに関する既知の問題に対処するために、以下の行を - httpd.conf に入れることを推奨しています。
-古いバージョンの Apache では、クライアントの問題に対応するために - httpd.conf に次の行を加えるよう推奨されていましたが、 - 今となっては、問題としていたクライアントは実際には見かけることは - なくなってきたので、この設定はもはや必要ないかもしれません。
--# -# The following directives modify normal HTTP response behavior. -# The first directive disables keepalive for Netscape 2.x and browsers that -# spoof it. There are known problems with these browser implementations. -# The second directive is for Microsoft Internet Explorer 4.0b2 -# which has a broken HTTP/1.1 implementation and does not properly -# support keepalive when it is used on 301 or 302 (redirect) responses. -# -BrowserMatch "Mozilla/2" nokeepalive -BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 - -# -# The following directive disables HTTP/1.1 responses to browsers which -# are in violation of the HTTP/1.0 spec by not being able to grok a -# basic 1.1 response. -# -BrowserMatch "RealPlayer 4\.0" force-response-1.0 -BrowserMatch "Java/1\.0" force-response-1.0 -BrowserMatch "JDK/1\.0" force-response-1.0
この例では、画像へのリクエストがアクセスログに現れないようにします。 - これを変更することで、特定のディレクトリのログ収集をやめたり、 - 特定のホストからのリクエストのログ収集をやめたりすることが簡単にできます。 -
--SetEnvIf Request_URI \.gif image-request -SetEnvIf Request_URI \.jpg image-request -SetEnvIf Request_URI \.png image-request -CustomLog logs/access_log common env=!image-request
この例は、別のサーバにいる人が、あなたのサーバにある画像を
- inline 画像として使用することを防ぎます。
- これは推奨されている設定ではありませんが、ある限定された状況では有効です。
- ここでは、すべての画像は /web/images
- というディレクトリにあると仮定します。
-SetEnvIf Referer "^http://www\.example\.com/" local_referal -# Allow browsers that do not send Referer info -SetEnvIf Referer "^$" local_referal -<Directory /web/images> - Order Deny,Allow - Deny from all - Allow from env=local_referal -</Directory>
この手法に関する詳しい情報は ApacheToday のチュートリアル「Keeping Your Images from Adorning Other Sites - 」を参照してください。
- -Apache HTTP 泣若 若吾с 2.3
+Apache HTTP 泣若医紊若違ゃ + 紊違宴荐吟篁腟帥箴障宴医 + ≪祉劫九勝篏九勝篏帥с障 + 紊違 CGI 鴻紊違篆< + 篏帥障吾紊違篏号篏睡号ゃ + 膣剛障
+ +紊違医紊若違障若c潟 + 激鴻c九勝医紊違с障 + 絎紊違 Apache 罕筝荐吟篏障 + CGI SSI 鴻羝<絎 + 若c潟違激鴻医紊違障泣若荳 + 絎茵若c潟違激鴻医篏翫 + 若c潟違激鴻激с箴罔羣医紊違 + 篏号篏帥違障
+∫c≪吾ャ若 | ∫ccc |
---|---|
Apache 医紊違荐絎筝堺号
+ ≧>散医紊違荐絎 SetEnv
cc篏睡с
+ PassEnv
+ ccApache 莎桁激с
+ 医紊違羝<с障
荵с蕭mod_setenvif
+ ф箴cc篏睡с鴻
+ 号с冴ャ医紊違荐絎с障箴違劫
+ (User-Agent) 鴻劫 Referer [括膓眼с]
+ (荐恰絵: 罩c膓眼 referrer сHTTP 篁罕с Referer
+ c障) 荀ゃc水違荐絎с障
+ mod_rewrite RewriteRule
+ cc医紊違荐絎 [E=...]
+ 激с潟篏睡с
+ 荵荐絎茵с障
mod_unique_id 絽吾>散筝
+ 鴻鴻ゃ筝с篆荐若ゃ医紊
+ UNIQUE_ID
荐絎障
Apache 荐絎<ゃц┃絎医紊違激с羝< + 医紊違CGI 鴻 SSI 若吾 CGI 篁罕ц羆 + 鴻<炊宴c医紊違腟箴障
+ + +suexec
+ 篏睡翫CGI 鴻莎桁医紊違絎医紊違腟雁障
+ 絎医紊違潟潟ゃ suexec.c
+ у臂障∫c≪吾ャ若 | ∫ccc |
---|---|
医紊違筝祉羈筝ゃCGI 鴻宴篌с + 筝цCGI 鴻羝<医紊違 Apache + 荐絎荐絎紊違鴻罔羣<炊宴с障 + 荅括完 CGI ャ若≪ + с
+ + +mod_include INCLUDES
c帥у
+ server-parsed (SSI) ャ<潟сecho
+ 荀膣篏睡医紊違阪障
+ 障若吾鴻ц蟹綽紊眼
+ 医紊違弱九勝荀膣т戎с障荅括完
+ SSI ャ若≪ с
allow from env=
cc deny from env=
+ cc篏睡泣若吾≪祉鴻医紊違ゃу九勝с障
+ SetEnvIf
+ cc腟水сゃ≪潟号с冴ャ
+ 泣若吾≪祉劫九勝荵茵с障
+ 違cc篏睡劫 (User-Agent)
+ ≪祉鴻с障
LogFormat
+ cc激с %e
+ 篏睡с医紊違≪祉鴻違荐蚊с障
+ CustomLog
+ cc>散絏綣篏睡с
+ 医紊違ゃc鴻違荐蚊羆冴с障
+ SetEnvIf
+ cc腟水с
+ 鴻違荐蚊荵九勝純障違
+ gif
х<ゃ吾鴻違荐蚊
+ 泣ゃ≪潟鴻違荐蚊
+ 御純с
Header
+ cc医紊違絖筝cゃ≪潟吾綽膈劫
+ HTTP 篁羆冴с障
+ 違ゃ≪潟鴻
+ 翫睡劫綽膈
+ с障
ExtFilterDefine
+ cc篏睡
+ mod_ext_filter
ц┃絎紊c帥
+ disableenv=
enableenv=
+ 激с潟篏帥c医紊違>散篁с障
RewriteCond
+ cc荅箴≧絖
+ %{ENV:...}
綣絎сmod_rewrite
+ 吾潟吾潟医紊違冴>散絏茵с障
+ mod_rewrite 篏睡純紊違 ENV:
ゃ紊違
+ 絎医紊違с羈
+ 篁≪吾ャ若篏睡с mod_rewrite 劫ャ紊違с
+
篋с馹茹f浦劫ゃ≪潟篆<
+ Apache 篏紊眼с罘罕絨ャ障с荵
+ 罘罕医紊違絎臂у若喝冴障
+ BrowserMatch
+ cc篏帥障 SetEnv
cc PassEnv
cc篏睡с障
絎с鴻 HTTP/1.0 + 違潟翫сHTTP/1.0 宴障
+ + +DEFLATE
c帥篏睡荐絎
+ 医紊違吟 accept-encoding 荐絎∴絽吾
+ х軒阪障
綽膈ゃ≪潟 Vary
+ c若ゃ障
+ ゃ≪潟筝c若罩c頵i障
+ 紊違荐絎с馹帥с障
+ 紊違荐絎force-response-1.0
+ 荐絎障
荐絎HTTP/1.0 鴻肴ゃ≪潟絲障 + 絽吾 HTTP/1.0 у膈障罘純 + AOL 激馹絎茖障HTTP/1.0 ゃ≪潟筝 + HTTP/1.1 綽膈菴罩c篏障 + 罘純篏睡сゃ≪潟篋у馹茹f浦с障
+ + + 1 荐絎紊違 text/html
+ 篁ュ潟潟潟帥ゃ絲障mod_deflate
+ 箴 DEFLATE
阪c帥≦鴻障
+ 障≪х軒<ゃ篏睡翫
+ (gzip с"identity" 違潟潟若絲障)
+ mod_negotiation
紊違荅箴<障
祉mod_deflate
+ DEFLATE
c帥障
+ mod_negotiation
+ 潟潟若純若鴻障
荐絎翫KeepAlive
篏睡障
mod_negotiation
綵演帥筝障
+ (en
, ja
, x-klingon
c)
+ 荐茯帥違主違荐茯 variant 篆<障
+ variant 翫
+ 絽吾眼激若激с
+ 障
ゃ≪潟吾ゃ篆<泣若羈闋宴 + 茵障 + 絽吾ゃゃ≪潟 + 馹c翫篏帥障罘純 + ゃ純с純 DAV + <純c純若鴻吾ゃ宴 + 馹帥絎茖障
+ + + +Apache 2.2 篁ラу
+ +ゃ≪潟鴻絲障綽膈ゃ篆< + 鴻潟鴻ゃ茵 (茵) + 翫茵腓冴鴻障障 + 絽吾鴻眼c帥祉ISO-8859-1 + с篁障
+ゃャ絖祉篏帥c翫 + 馹吟若吾с潟с + ゃ絎絖祉篁c + ゃ絖祉篏帥c障障 + 腟箴医祉茵茯c障
+医紊違荐絎сゃ激с潟鴻絲障 + c帥祉絎ゅサ障с馹吟с + ゃ絖祉罩c鋎帥с障
+ + + +ゃ≪潟≪∝ャ馹絲上篁ヤ茵 + httpd.conf ャィ絅障
+ゃ若吾с潟 Apache сゃ≪潟馹絲上 + httpd.conf 罨<茵ィ絅障 + 篁c馹ゃ≪潟絎荀 + cс荐絎綽荀障
++# +# The following directives modify normal HTTP response behavior. +# The first directive disables keepalive for Netscape 2.x and browsers that +# spoof it. There are known problems with these browser implementations. +# The second directive is for Microsoft Internet Explorer 4.0b2 +# which has a broken HTTP/1.1 implementation and does not properly +# support keepalive when it is used on 301 or 302 (redirect) responses. +# +BrowserMatch "Mozilla/2" nokeepalive +BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 + +# +# The following directive disables HTTP/1.1 responses to browsers which +# are in violation of the HTTP/1.0 spec by not being able to grok a +# basic 1.1 response. +# +BrowserMatch "RealPlayer 4\.0" force-response-1.0 +BrowserMatch "Java/1\.0" force-response-1.0 +BrowserMatch "JDK/1\.0" force-response-1.0
箴с糸吾鴻≪祉鴻違憗障 + 紊眼с劫c医 + 劫鴻鴻医膂≦с障 +
++SetEnvIf Request_URI \.gif image-request +SetEnvIf Request_URI \.jpg image-request +SetEnvIf Request_URI \.png image-request +CustomLog logs/access_log common env=!image-request
箴ャ泣若篋冴泣若糸
+ inline 糸篏睡蚊障
+ ィ絅荐絎с障絎倶с鴻с
+ с鴻糸 /web/images
+ c篁絎障
+SetEnvIf Referer "^http://www\.example\.com/" local_referal +# Allow browsers that do not send Referer info +SetEnvIf Referer "^$" local_referal +<Directory /web/images> + Order Deny,Allow + Deny from all + Allow from env=local_referal +</Directory>
羈≪荅潟宴 ApacheToday ャ若≪Keeping Your Images from Adorning Other Sites + с
+ +Apache HTTP サーバ バージョン 2.3
-Apache でのフィルタの使い方について記述しています。
-関連モジュール | 関連ディレクティブ |
---|---|
フィルタ とは、サーバが送受信したデータに - 適用される処理プロセスのことをいいます。クライアントからサーバに - 送られたデータは 入力フィルタ によって、サーバから - クライアントに送られるデータは出力フィルタによって - 処理されます。複数のフィルタを適用することができ、 - その順番を厳密に指定することもできます。
- -Apache 内部では、チャンク (データのぶつ切り) を行ったり、
- バイト範囲の指定されたリクエストを扱ったりといった機能を
- 行う際に、フィルタが使われています。それに加えて、
- 実行時の設定ディレクティブで選択が可能なフィルタを
- モジュールが提供できます。
- データに適応されるフィルタのセットは、
- SetInputFilter
,
- SetOutputFilter
,
- AddInputFilter
,
- AddOutputFilter
,
- RemoveInputFilter
,
- RemoveOutputFilter
- ディレクティブで制御できます。
現行の Apache HTTP サーバの配布では、 - 次のユーザ選択可能なフィルタが提供されています。
- -mod_include
で Server-Side Include をします。mod_deflate
- を使って、クライアントに送信する前に出力を圧縮します。また、mod_ext_filter
モジュールで
- 外部プログラムをフィルタとして指定することができます。
Apache HTTP 泣若 若吾с 2.3
+Apache сc帥篏帥鴻ゃ荐菴違障
+∫c≪吾ャ若 | ∫ccc |
---|---|
c 泣若篆<若帥 + 祉鴻障ゃ≪潟泣若 + 若帥 ュc c泣若 + ゃ≪潟若帥阪cc + 障茲違c帥с + ウ絲絎с障
+ +Apache сc潟 (若帥吟ゅ) 茵c
+ ゃ膀蚊絎鴻宴cc罘純
+ 茵c帥篏帥障
+ 絎茵荐絎ccч御純c帥
+ ≪吾ャ若箴с障
+ 若帥綽c帥祉
+ SetInputFilter
,
+ SetOutputFilter
,
+ AddInputFilter
,
+ AddOutputFilter
,
+ RemoveInputFilter
,
+ RemoveOutputFilter
+ ccу九勝с障
憠 Apache HTTP 泣若絽с + 罨<若狗御純c帥箴障
+ +mod_include
Server-Side Include 障mod_deflate
+ 篏帥cゃ≪潟篆<阪х軒障障mod_ext_filter
≪吾ャ若
+ 紊違c帥絎с障
Apache HTTP サーバ バージョン 2.3
-Apache のハンドラの使用に関して記述しています。
-関連モジュール | 関連ディレクティブ |
---|---|
「ハンドラ」とは、ファイルが呼ばれたときに実行される動作の - Apache における内部表現です。 - 通常、ファイルはファイル型に基づいた暗黙のハンドラがあります。 - 普通はすべてのファイルは単にサーバに扱われますが、 - ファイルタイプの中には別に「ハンドル」(訳注: 扱う) - されるものもあります。
- -Apache 1.1 では、ハンドラを明示的に使用する機能が追加されました。 - ファイルの拡張子や置いている場所に基づいて、 - ファイル型と関係なくハンドラを指定することができます。 - これはより優雅な解決法という点と、ファイルにタイプとハンドラの両方を関連付けることができるという点で優れています。 - (複数の拡張子のあるファイルも参照してください)。
- -ハンドラはサーバに組み込んだり、モジュールとして含めたり、
- Action
- ディレクティブとして追加したりすることができます。
- 以下は標準配布に組み込まれているハンドラです。
-
default_handelr()
- を使ってファイルを送ります。
- 静的なコンテンツを扱うときにデフォルトで使用されるハンドラです。
- (core
)mod_asis
)mod_cgi
)mod_imagemap
)mod_info
)mod_status
)mod_negotiation
)以下のディレクティブによって、拡張子が html
- であるファイルは footer.pl
- CGI スクリプトを起動するようになります。
- Action add-footer /cgi-bin/footer.pl
- AddHandler add-footer .html
-
CGI スクリプトは希望の修正や追加を行なって、元々要求された文書
- (環境変数 PATH_TRANSLATED
- で指されています) を送る責任があります。
-
以下のディレクティブは send-as-is
- ハンドラを使用するように指示します。このハンドラは自分自身の HTTP
- ヘッダを持っているファイルに使用されます。ここでは、拡張子に関わらず、
- /web/htdocs/asis
ディレクトリにある全てのファイルは
- send-as-is
ハンドラによって扱われます。
- <Directory /web/htdocs/asis>
- SetHandler send-as-is
- </Directory>
-
ハンドラの機能を実装するために、利用すると便利かもしれないものが
- Apache API
- に追加されました。詳しく言うと、request_rec
- 構造体に新しいレコードが追加されたということです。
- char *handler
-
もしモジュールがハンドラに関わりたい場合、
- やらなければならないことは、リクエストが invoke_handler
- ステージに達する以前に r->handler
- を設定することだけです。ハンドラはコンテントタイプの代わりに
- ハンドラ名を使うようになっていること以外は、以前と同じように実装されています。
- 必ず要求されているわけではありませんが、メディアタイプ
- の名前空間を侵さないように、ハンドラの名前にはスラッシュを含まない、
- ダッシュ (訳注: "-") で分離された名前を付ける習慣になっています。
Apache HTTP 泣若 若吾с 2.3
+Apache 潟篏睡≪荐菴違障
+∫c≪吾ャ若 | ∫ccc |
---|---|
潟<ゃ若違絎茵篏 + Apache 茵憗с + 絽吾<ゃ<ゃ冴ャ藥潟障 + 鴻<ゃ泣若宴障 + <ゃ帥ゃ筝ャ潟(荐恰絵: 宴) + 障
+ +Apache 1.1 с潟腓榊篏睡罘純菴遵障 + <ゃ≦宍絖臀贋冴ャ + <ゃ≫潟絎с障 + 茹f浦羈鴻<ゃ帥ゃ潟筝≧鴻∫dс鴻у障 + (茲違≦宍絖<ゃс)
+ +潟泣若腟粋昭≪吾ャ若
+ Action
+ cc菴遵с障
+ 篁ヤ罔羣絽腟粋昭障潟с
+
default_handelr()
+ 篏帥c<ゃ障
+ 潟潟潟宴т戎潟с
+ (core
)mod_asis
)mod_cgi
)mod_imagemap
)mod_info
)mod_status
)mod_negotiation
)篁ヤccc≦宍絖 html
+ с<ゃ footer.pl
+ CGI 鴻莎桁障
+ Action add-footer /cgi-bin/footer.pl
+ AddHandler add-footer .html
+
CGI 鴻絽篆罩c菴遵茵c荀羆
+ (医紊 PATH_TRANSLATED
+ ф障) 莢篁祉障
+
篁ヤcc send-as-is
+ 潟篏睡腓冴障潟荳 HTTP
+ c<ゃ篏睡障с≦宍絖≪
+ /web/htdocs/asis
c<ゃ
+ send-as-is
潟c宴障
+ <Directory /web/htdocs/asis>
+ SetHandler send-as-is
+ </Directory>
+
潟罘純絎茖箴水
+ Apache API
+ 菴遵障荅潟頥request_rec
+ 罕篏違潟若菴遵с
+ char *handler
+
≪吾ャ若潟≪翫
+ 違鴻 invoke_handler
+ 鴻若吾篁ュ r->handler
+ 荐絎с潟潟潟潟帥ゃ篁c
+ 潟篏帥c篁ュ篁ュ絎茖障
+ 綽荀羆с障<c≪帥ゃ
+ 腥咲箴泣潟鴻激ャ障
+ 激 (荐恰絵: "-") у≪篁膺cc障
Apache HTTP サーバ バージョン 2.3
-「認証」とは、誰かが自分は誰であるかを主張した場合に、 - それを確認するための全過程を指します。「承認」とは、 - 誰かが行きたい場所に行けるように、あるいは欲しい情報を - 得ることができるようにするための全過程を指します。
-認証と承認の処理に関連する 3 種類のモジュールがあります。 -それぞれ少なくともひとつずつ必要です。
- -AuthType
ディレクティブ参照)
-
- AuthBasicProvider
,
- AuthDigestProvider
ディレクティブ参照)
-
-
- Require
ディレクティブ参照)
-
- これらのモジュールに加えて、mod_authn_core
- と mod_authz_core
があります。
- この 2 つのモジュールは認証モジュールに共通なコアディレクティブを
- 実装しています。
mod_authnz_ldap
は認証プロバイダと承認プロバイダの
- 両方の機能を持っています。
- mod_authz_host
はホスト名、IP アドレスや
- リクエストの特徴に基づいたアクセス制御を行いますが、
- 認証プロバイダのシステムの一部ではありません。
- mod_access との後方互換性のため、
- 新しいモジュールの mod_access_compat
があります。
様々なアクセス制御の行ない方については、 - アクセス制御の方法をご覧ください。
- -もし機密の情報や、ごくごく少数グループの人向けの情報を - ウェブサイトに置くのであれば、この文書に書かれている - テクニックを使うことで、そのページを見ている人たちが - 望みの人たちであることを確実にできるでしょう。
- -この文書では、多くの人が採用するであろう、 - ウェブサイトの一部分を保護する「一般的な」 - 方法についてカバーしています。
- -データが本当に機密なのであれば、認証に加えてさらに
- mod_ssl
を使うと良いでしょう。
この文書で取り扱われるディレクティブは、
- メインサーバ設定ファイル (普通は
- <Directory>
- セクション中) か、あるいはディレクトリ毎の設定ファイル
- (.htaccess
ファイル) かで用います。
.htaccess
ファイルを用いるのであれば、
- これらのファイルに認証用のディレクティブを置けるように
- サーバの設定をしないといけないでしょう。これは
- AllowOverride
- ディレクティブで可能になります。
- AllowOverride
- ディレクティブでは、ディレクトリ毎の設定ファイル中に置くことのできる
- ディレクティブを、もしあれば、指定します。
認証について話を進めているので、次のような
- AllowOverride
- ディレクティブが必要になるでしょう。
- AllowOverride AuthConfig
-
そうでなく、メインサーバ設定ファイルの中に - 直接置くのであれば、当然ながらそのファイルへの書き込み - 権限を持っていなければならないでしょう。
- -また、どのファイルがどこに保存されているか知るために、 - サーバのディレクトリ構造について少し知っておく - 必要があるでしょう。 - これはそんなに難しくないので、この文書中で - ディレクトリ構造について知っておく必要がある場面では、 - 明らかになるようにします。
- -mod_authn_core
と mod_authz_core
- の両方が httpd バイナリに静的に組み込み済みであるか、httpd.conf
- 設定ファイルで動的にロードされるかして、httpd に組み込まれていなければ
- なりません。これらの二つのモジュールは、設定ファイルのなかで非常に
- 重要でウェブサーバの認証と承認で使用されるコアディレクティブと
- その機能を提供しています。
では、サーバ上のあるディレクトリをパスワードで保護する - 基本手順を示します。
- -まずはじめに、パスワードファイルを作ります。 - どの認証プロバイダを使うかによって、パスワードファイル生成の手順は - 大きく異なります。ここでの例では、手始めにテキストパスワードファイルを - 使います。
- -このパスワードファイルは、ウェブからアクセスできる場所に
- 置くべきではありません。他の人がパスワードファイルを
- ダウンロードできないようにするためです。例えば、
- /usr/local/apache/htdocs
でドキュメントを
- 提供しているのであれば、パスワードファイルは
- /usr/local/apache/passwd
- などに置いた方が良いでしょう。
ファイルを作るためには、Apache 付属の htpasswd
- を使います。このコマンドは Apache をどこにインストールしようとも、
- インストールディレクトリの bin
- ディレクトリ以下に置かれます。サードバーティ製のパッケージで
- インストールした場合は、実行パスの中で見つかるでしょう。
ファイルを作るには、次のようにタイプしてください。
- -
- htpasswd -c /usr/local/apache/passwd/passwords rbowen
-
htpasswd
は、パスワードを要求し、その後
- 確認のためにもう一度入力するように要求してきます。
- # htpasswd -c /usr/local/apache/passwd/passwords rbowen
- New password: mypassword
- Re-type new password: mypassword
- Adding password for user rbowen
-
もし htpasswd
がパスの中に入っていない場合は、
- もちろん、実行するためにプログラムまでのフルパスを
- タイプする必要があります。デフォルトのインストール状態であれば、
- /usr/local/apache/bin/htpasswd
- にプログラムが置かれています。
次に、サーバがパスワードを要求するように設定して、
- どのユーザがアクセスを許されているかをサーバに知らせなければ
- なりません。 httpd.conf
を編集するか
- .htaccess
ファイルを使用するかで
- 設定します。例えば、ディレクトリ
- /usr/local/apache/htdocs/secret
- を保護したい場合は、
- /usr/local/apache/htdocs/secret/.htaccess
- か httpd.conf 中の <Directory
- /usr/local/apache/htdocs/secret> セクションに
- 配置して、次のディレクティブを使うことができます。
- AuthType Basic
- AuthName "Restricted Files"
- # (Following line optional)
- AuthBasicProvider file
- AuthUserFile /usr/local/apache/passwd/passwords
- Require user rbowen
-
個々のディレクティブについて見てみましょう。
- AuthType
- ディレクティブはどういう認証方法でユーザの認証を行うかを
- 選択します。最も一般的な方法は Basic
- で、これは mod_auth_basic
- で実装されています。しかしながら、
- これは気を付けるべき重要なポイントなのですが、
- Basic 認証はクライアントからサーバへ、
- パスワードを暗号化せずに送ります。ですからこの方法は、
- mod_ssl
と組み合わせない状態では、
- 特に機密性の高いデータに対しては用いるべきでは
- ありません。 Apache ではもう一つ別の認証方法:
- AuthType Digest
をサポートしています。
- この方法は mod_auth_digest
- で実装されていて、もっと安全です。
- 最近のクライアントは Digest
- 認証をサポートしているようです。
AuthName
- ディレクティブでは、認証に使う Realm (訳注: 領域)
- を設定します。Realm は大きく分けて二つの機能を提供します。
- 一つ目は、クライアントがパスワードダイアログボックスの
- 一部としてユーザにこの情報をよく提示する、というものです。
- 二つ目には、クライアントが与えられた認証領域に対してどのパスワードを
- 送信すれば良いのかを決定するために使われる、という機能です。
例えば、"Restricted Files"
領域中で
- 一度認証されれば、同一サーバ上で "Restricted Files"
- Realm としてマークされたどんな領域でも、クライアントは
- 自動的に同じパスワードを使おうと試みます。
- このおかげで、複数の制限領域に同じ realm を共有させて、
- ユーザがパスワードを何度も要求される事態を
- 防ぐことができます。もちろん、セキュリティ上の理由から、
- サーバのホスト名が変わればいつでも必ず、
- クライアントは再びパスワードを尋ねる必要があります。
AuthBasicProvider
- はデフォルト値が file
なので、今回の場合は無くても構いません。
- mod_authn_dbm
や mod_authn_dbd
- といった他のモジュールを使う場合には必要になります。
-
AuthUserFile
- ディレクティブは htpasswd
で作った
- パスワードファイルへのパスを設定します。
- ユーザ数が多い場合は、リクエスト毎のユーザの認証のための
- プレーンテキストの探索が非常に遅くなることがあります。
- Apache ではユーザ情報を高速なデータベースファイルに
- 保管することもできます。
- mod_authn_dbm
モジュールが
- AuthDBMUserFile
- ディレクティブを提供します。これらのファイルは dbmmanage
- プログラムで作成したり操作したりできます。
- Apache
- モジュールデータベース中にあるサードパーティー製の
- モジュールで、その他多くのタイプの認証オプションが
- 利用可能です。
最後に、Require
- ディレクティブが、サーバのこの領域にアクセスできるユーザを
- 指定することによって、プロセスの承認部分を提供します。
- 次のセクションでは、Require
- ディレクティブの様々な用法について述べます。
上記のディレクティブは、ただ一人 (具体的にはユーザ名
- rbowen
の誰か) がディレクトリに
- 入れるようにします。多くの場合は、複数の人が
- 入れるようにしたいでしょう。ここで
- AuthGroupFile
- の登場です。
もし複数の人が入れるようにしたいのであれば、 - グループに属するユーザの一覧の入っている、グループ名のついた - グループファイルを作る必要があります。このファイルの - 書式はきわめて単純で、お好みのエディタで生成できます。 - ファイルの中身は次のようなものです。
- -
- GroupName: rbowen dpitts sungo rshersey
-
一行にスペース区切りで、グループに所属するメンバーの - 一覧をならべるだけです。
- -既に存在するパスワードファイルにユーザを加える場合は、 - 次のようにタイプしてください。
- -
- htpasswd /usr/local/apache/passwd/passwords dpitts
-
以前と同じ応答が返されますが、新しいファイルを
- 作るのではなく、既にあるファイルに追加されています。
- (新しいパスワードファイルを作るには -c
- を使います。)
ここで次のようにして .htaccess
ファイルを
- 修正する必要があります。
- AuthType Basic
- AuthName "By Invitation Only"
- # Optional line:
- AuthBasicProvider file
- AuthUserFile /usr/local/apache/passwd/passwords
- AuthGroupFile /usr/local/apache/passwd/groups
- Require group GroupName
-
これで、グループ GroupName
にリストされていて、
- password
ファイルにエントリがある人は、
- 正しいパスワードをタイプすれば入ることができるでしょう。
もっと特定せずに複数のユーザが入れるようにする、 - もう一つの方法があります。グループファイルを作るのではなく、 - 次のディレクティブを使えばできます。
- -
- Require valid-user
-
require user rbowen
行でなく、上記を使うと、
- パスワードファイルにリストされている人であれば誰でも
- 許可されます。
- 単にパスワードファイルをグループ毎に分けておくことで、
- グループのような振る舞いをさせることもできます。
- このアプローチの利点は、Apache は二つではなく、
- ただ一つのファイルだけを検査すればよいという点です。
- 欠点は、たくさんのパスワードファイルを管理して、その中から
- AuthUserFile
- ディレクティブに正しいファイルを参照させなければならない点です。
Basic 認証が指定されている場合は、 - サーバにドキュメントをリクエストする度に - ユーザ名とパスワードを検査しなければなりません。 - これは同じページ、ページにある全ての画像を - リロードする場合であっても該当します - (もし画像も保護されたディレクトリから来るのであれば) 。 - 予想される通り、これは動作を多少遅くします。 - 遅くなる程度はパスワードファイルの大きさと比例しますが、 - これは、ファイルを開いてあなたの名前を発見するまで - ユーザ名のリストを読まなければならないからです。 - そして、ページがロードされる度にこれを行わなければ - なりません。
- -結論としては、一つのパスワードファイルに置くことのできる - ユーザ数には実質的な限界があります。 - この限界はサーバマシンの性能に依存して変わりますが、 - 数百のエントリを越えたあたりから速度低下が見られると予期されています。 - その時は他の認証方法を考慮に入れた方が良いでしょう。
-プレーンテキストでパスワードを保存する方法には上記の問題があり、 - データベースのような別の場所にパスワードを保存したいと思う - かもしれません。
- -mod_authn_dbm
と mod_authn_dbd
- を使うと、それができるようになります。
- AuthBasicSource
- で file の代わりに、dbm
あるいは dbd
- を格納形式として選べます。
テキストファイルの代わりに dbm ファイルを選択する場合は、たとえば次のようにします。
- -
- <Directory /www/docs/private>
- AuthName "Private"
- AuthType Basic
- AuthBasicProvider dbm
- AuthDBMUserFile /www/passwords/passwd.dbm
- Require valid-user
- </Directory>
-
この他のオプションも存在します。詳細に関しては
- mod_authn_dbm
のドキュメントをご覧ください。
認証承認アーキテクチャに基づいている新しいプロバイダを使うと、 - 認証承認の方法をひとつに縛る必要がなくなります。 - いくつものプロバイダを組み合わせて、自分の望みの挙動にできます。 - 次の例では file 認証プロバイダと ldap 認証プロバイダを - 組み合わせています。
- -
- <Directory /www/docs/private>
- AuthName "Private"
- AuthType Basic
- AuthBasicProvider file ldap
- AuthUserFile /usr/local/apache/passwd/passwords
- AuthLDAPURL ldap://ldaphost/o=yourorg
- Require valid-user
-
この例では、まず file プロバイダがユーザ認証を試みます。 - 認証できなかった場合には、ldap プロバイダが呼び出されます。 - 組織で複数の認証格納方法を使っている際などに、 - この方法を使って認証のスコープを拡大できます。 - もうひとつのシナリオは、ひとつの認証タイプと異なる承認を - 組み合わせる方法でしょう。たとえば、パスワードファイルで認証して、 - ldap ディレクトリで承認を行うといった場合です。
- -認証プロバイダを複数実装できるように、承認方法も複数使用できます。 - この例では file グループ承認と ldap グループ承認を使っています。
- -
- <Directory /www/docs/private>
- AuthName "Private"
- AuthType Basic
- AuthBasicProvider file
- AuthUserFile /usr/local/apache/passwd/passwords
- AuthLDAPURL ldap://ldaphost/o=yourorg
- AuthGroupFile /usr/local/apache/passwd/groups
- Require group GroupName
- Require ldap-group cn=mygroup,o=yourorg
-
承認をより細かく制御したい場合は、
- <SatisfyAll>
と
- <SatisfyOne>
- ディレクティブを使って AND/OR ロジックで指定し、設定ファイルで
- 承認の処理順番の制御ができるようになっています。
- これらのディレクティブをどのように使えるか、網羅した例をご覧ください。
承認の方法は、ひとつのデータソースを見て一回だけチェックするのと比べて、 - ずっと多彩な適用方法ができます。 - 承認処理の適用順序や制御、選択ができるようになりました。
- -承認がどのような順序で適用されているか、また、それをどのように制御するかは、
- これまで混乱を招いていました。
- Apache 2.2 ではプロバイダベースの認証メカニズムが導入され、
- 承認処理から認証処理とサポート機能とが切り分けられました。
- これによるひとつの効果として、
- 認証モジュールのロード順やモジュール自体の順序に依存することなく、
- 指定した順番で認証プロバイダが呼び出せるよう、
- 設定できるようになりました。
- このプロバイダメカニズムは承認処理でも導入されています。
- つまり、Require
- ディレクティブは単にどの承認手法が使われるかを指定するだけではなく、
- それらの呼び出し順序も指定できるようになりました。
- 複数の承認手法があるとき、その呼び出し順は、設定ファイルの
- Require
ディレクティブ中で
- 現れた順序と同じになります。
追加で導入された
- <SatisfyAll>
,
- <SatisfyOne>
- ディレクティブを使って、承認手法がいつ呼び出され、アクセスが許可された際に
- どの手続きが適用されるか指定することができます。
- たとえば、次の承認ブロックのロジックを見てみましょう:
- # if ((user == "John") ||
- # ((Group == "admin")
- # && (ldap-group <ldap-object> contains auth'ed_user)
- # && ((ldap-attribute dept == "sales")
- # || (file-group contains auth'ed_user))))
- # then
- # auth_granted
- # else
- # auth_denied
- #
- <Directory /www/mydocs>
-
- Authname ...
- AuthBasicProvider ...
- ...
- Require user John
- <SatisfyAll>
-
- Require Group admins
- Require ldap-group cn=mygroup,o=foo
- <SatisfyOne>
-
- Require ldap-attribute dept="sales"
- Require file-group
-
- </SatisfyOne>
-
- </SatisfyAll>
-
- </Directory>
-
デフォルトでは Require
- ディレクティブは OR 操作として扱われます。つまり、もし指定した承認手法の
- ひとつでも合格すれば、承認されます。
- Require
ディレクティブのセットを
- ひとつの <SatisfyAll>
- ブロックで囲むとAND 操作となり、全ての承認手法で合格しなければ許可されません。
ユーザ名とパスワードによる認証は全体の一部分でしかありません。 - 誰がアクセスしてきたかといった情報以外の条件を使いたい、 - とよく思うことでしょう。 - たとえば、どこからアクセスしてきているか、といった具合です。
- -承認プロバイダ all
,
- env
,
- host
,
- ip
- を使うと、リクエストを送信してきているマシンのホスト名や IP アドレス
- といった、ホストベースでのアクセス制御ができます。
これらプロバイダの扱いは
- Require
や
- Reject
で
- 指定されます。これらのディレクティブは承認プロバイダを登録し、
- リクエスト処理の承認段階で呼び出されます。たとえば:
- Require ip address
-
ここで、address は IP アドレス (あるいは IP アドレスの - 一部) か :
- -
- Require host domain_name
-
ここで domain_name は FQDN (あるいはドメイン名の一部) - で、必要であれば複数のアドレスやドメイン名を書くことができます。
- -たとえば、スパムメッセージを送信してくる誰かを拒否したい場合、 - 次のようになります :
- -
- Reject ip 10.252.46.165
-
このディレクティブが有効な範囲のコンテンツに対しては、 - そのアドレスからアクセスしてきても見ることができません。 - もしマシン名がわかっていて IP アドレスよりもそちらで - 指定したいのであれば、そのマシン名が使えます。
- -
- Reject host host.example.com
-
また、特定のドメインからのアクセス全てをブロックしたい場合は、 - IP アドレスの一部や、ドメイン名が指定できます :
- -
- <SatisfyAll>
-
- Reject ip 192.168.205
- Reject host phishers.example.com moreidiots.example
Reject host ke
-
- </SatisfyAll>
-
Reject
ディレクティブを
- <SatisfyAll>
ブロックの中で使うと、
- 許可したいグループにのみアクセスができるように確認できます。
上記の例では <SatisfyAll>
- を使って、アクセスに合格する前段階で、全ての
- Reject
ディレクティブが
- 満たされていることを確認しています。
認証プロバイダベースの機構があるため、以前使用されていたディレクティブ
- Order
,
- Allow
,
- Deny
,
- Satisfy
- は必要なくなりました。
- とはいうものの、古い設定ファイルでの後方互換性を提供するため、
- これらのディレクティブは mod_access_compat
モジュールに移されました。
これらのディレクティブの抱えていた問題のひとつに、承認の設定行とアクセス制御の設定行の
- 関係がとてもあいまいだったことが挙げられます。
- Satisfy
ディレクティブは
- リクエスト処理中でそれ自身を呼び出すことによって、これらの 2 つの処理段階を結びつけようとします。
- 現在は、これらのディレクティブは mod_access_compat
に移動し、
- 新しい認証ディレクティブと古いアクセス制御ディレクティブを混ぜて使うことは
- 難しくなっています。この問題のため、mod_authz_default
モジュールを
- ロードすることがとても重要で、必須になっています。
- mod_authz_default
モジュールの主な目的は、どの承認プロバイダで
- 処理されなかった承認リクエストを受けることにあります。
- しかし、古いアクセス制御ディレクティブが用いられた場合には、
- アクセス制御と承認を結びつけて、すべての処理段階の出力結果を見てアクセスに合格するかを決めています。
- ですから、古いディレクティブがうまく動作しない場合は、
- mod_authz_default
がロードされていないからかもしれない、
- と疑ってみてください。
これら全てがどのように動作するかについて
- もっと多くの情報が書かれている mod_auth_basic
と
- mod_authz_host
- の文書も読むとよいでしょう。
- <AuthnProviderAlias>
- ディレクティブを使うと、特定の認証設定が簡単に書けるようになります。
アクセス制御の方法も、 - 関連するトピックがたくさん記載されていますので、ご覧ください。
- -Apache HTTP 泣若 若吾с 2.3
+茯荐若茯違茯違с筝糸宍翫 + 腆肴腮障粋 + 茯違茵贋茵罨蚊宴 + 緇с腮障
+茯荐若粋∫c 3 腮蕁≪吾ャ若障 +絨蚊ゃゅ荀с
+ +AuthType
cc)
+
+ AuthBasicProvider
,
+ AuthDigestProvider
cc)
+
+
+ Require
cc)
+
+ ≪吾ャ若mod_authn_core
+ mod_authz_core
障
+ 2 ゃ≪吾ャ若茯荐若≪吾ャ若演潟≪cc
+ 絎茖障
mod_authnz_ldap
茯荐若ゃ粋ゃ
+ 筝≧鴻罘純c障
+ mod_authz_host
鴻IP ≪鴻
+ 鴻劫彰冴ャ≪祉劫九勝茵障
+ 茯荐若ゃ激鴻筝с障
+ mod_access 緇剛с
+ 違≪吾ャ若 mod_access_compat
障
罕≪祉劫九勝茵鴻ゃ + ≪祉劫九勝号荀с
+ +罘絲宴鎞違違若篋阪宴 + с泣ゃ臀с違吾吾 + 篏帥с若吾荀篋冴< + 帥篋冴<с腆阪сс
+ +吾с紊篋冴。с + с泣ゃ筝篆茘激筝 + 号ゃ若障
+ +若帥綵罘絲с違茯荐若
+ mod_ssl
篏帥с
吾у宴cc
+ <ゃ潟泣若荐絎<ゃ (
+ <Directory>
+ 祉激с割賢) c罸荐絎<ゃ
+ (.htaccess
<ゃ) х障
.htaccess
<ゃс違
+ <ゃ茯荐主cc臀
+ 泣若荐絎с
+ AllowOverride
+ ccу純障
+ AllowOverride
+ ccсc罸荐絎<ゃ筝臀с
+ cc違絎障
茯荐若ゃ荅宴蚊с罨<
+ AllowOverride
+ cc綽荀с
+ AllowOverride AuthConfig
+
с<ゃ潟泣若荐絎<ゃ筝 + 贋・臀с違綵吟<ゃ吾吾莨若 + 罔c違с
+ +障<ゃ篆絖ャ + 泣若c罕ゃ絨ャc + 綽荀с + cс娯賢 + c罕ゃャc鏆荀顔≪с + 障
+ +mod_authn_core
mod_authz_core
+ 筝≧鴻 httpd ゃ腟粋昭炊帥сhttpd.conf
+ 荐絎<ゃу若httpd 腟粋昭障
+ 障篋ゃ≪吾ャ若荐絎<ゃч絽吾
+ 荀сс泣若茯荐若粋т戎潟≪cc
+ 罘純箴障
с泣若筝c鴻若т茘激 + 堺腓冴障
+ +障鴻若<ゃ篏障 + 茯荐若ゃ篏帥c鴻若<ゃ + 紊с違障с箴с紮鴻鴻若<ゃ + 篏帥障
+ +鴻若<ゃс≪祉鴻с贋
+ 臀鴻с障篁篋冴鴻若<ゃ
+ 潟若сс箴違
+ /usr/local/apache/htdocs
сャ<潟
+ 箴с違鴻若<ゃ
+ /usr/local/apache/passwd
+ 臀鴻с
<ゃ篏Apache 篁絮 htpasswd
+ 篏帥障潟潟 Apache ゃ潟鴻若
+ ゃ潟鴻若c bin
+ c篁ヤ臀障泣若若h純宴若吾
+ ゃ潟鴻若翫絎茵鴻筝цゃс
<ゃ篏罨<帥ゃ
+ +
+ htpasswd -c /usr/local/apache/passwd/passwords rbowen
+
htpasswd
鴻若荀羆緇
+ 腆肴筝綺ュ荀羆障
+ # htpasswd -c /usr/local/apache/passwd/passwords rbowen
+ New password: mypassword
+ Re-type new password: mypassword
+ Adding password for user rbowen
+
htpasswd
鴻筝ャc翫
+ <絎茵違障с鴻
+ 帥ゃ綽荀障ゃ潟鴻若倶с違
+ /usr/local/apache/bin/htpasswd
+ 違臀障
罨<泣若鴻若荀羆荐絎
+ 若吟≪祉鴻荐宴泣若ャ
+ 障 httpd.conf
膩
+ .htaccess
<ゃ篏睡
+ 荐絎障箴違c
+ /usr/local/apache/htdocs/secret
+ 篆茘激翫
+ /usr/local/apache/htdocs/secret/.htaccess
+ httpd.conf 筝 <Directory
+ /usr/local/apache/htdocs/secret> 祉激с潟
+ 臀罨<cc篏帥с障
+ AuthType Basic
+ AuthName "Restricted Files"
+ # (Following line optional)
+ AuthBasicProvider file
+ AuthUserFile /usr/local/apache/passwd/passwords
+ Require user rbowen
+
ccゃ荀帥障
+ AuthType
+ cc茯荐惹号с若吟茯荐若茵
+ 御障筝号 Basic
+ с mod_auth_basic
+ у茖障
+ 羂篁鴻荀ゃ潟с
+ Basic 茯荐若ゃ≪潟泣若吾
+ 鴻若垸障с号
+ mod_ssl
腟水倶с
+ 鴻罘絲с蕭若帥絲障鴻с
+ 障 Apache с筝ゅャ茯荐惹号:
+ AuthType Digest
泣若障
+ 号 mod_auth_digest
+ у茖c絎с
+ 菴ゃ≪潟 Digest
+ 茯荐若泣若с
AuthName
+ ccс茯荐若篏帥 Realm (荐恰絵: )
+ 荐絎障Realm 紊с篋ゃ罘純箴障
+ 筝ょゃ≪潟鴻若ゃ≪違鴻
+ 筝若吟宴腓冴с
+ 篋ょゃ≪潟筝茯荐守絲障鴻若
+ 篆<域羆阪篏帥罘純с
箴違"Restricted Files"
筝
+ 筝綺茯荐若違筝泣若筝 "Restricted Files"
+ Realm 若сゃ≪潟
+ 鴻若篏帥荅帥障
+ с茲違狗 realm 掩
+ 若吟鴻若篏綺荀羆篋
+ 蚊с障<祉ャd宴
+ 泣若鴻紊違ゃс綽
+ ゃ≪潟潟鴻若絨綽荀障
AuthBasicProvider
+ ゃ file
с篁翫<罕障
+ mod_authn_dbm
mod_authn_dbd
+ c篁≪吾ャ若篏帥翫綽荀障
+
AuthUserFile
+ cc htpasswd
тc
+ 鴻若<ゃ吾鴻荐絎障
+ 若倶違紊翫鴻罸若吟茯荐若
+ 若潟鴻「膣≪絽吾障
+ Apache с若倶宴蕭若帥若鴻<ゃ
+ 篆膊<с障
+ mod_authn_dbm
≪吾ャ若
+ AuthDBMUserFile
+ cc箴障<ゃ dbmmanage
+ 違т篏с障
+ Apache
+ ≪吾ャ若若帥若筝泣若若c取純
+ ≪吾ャ若с篁紊帥ゃ茯荐若激с潟
+ 純с
緇Require
+ cc泣若≪祉鴻с若吟
+ 絎c祉鴻粋箴障
+ 罨<祉激с潟сRequire
+ cc罕羈ゃ菴違鴻障
筝荐cc筝篋 (隙若九
+ rbowen
茯違) c
+ ャ障紊翫茲違篋冴
+ ャс
+ AuthGroupFile
+ 糸眼с
茲違篋冴ャс違 + 違若絮若吟筝荀сャc違若ゃ + 違若<ゃ篏綽荀障<ゃ + 後膣с絅純帥c帥хс障 + <ゃ筝荳罨<с
+ +
+ GroupName: rbowen dpitts sungo rshersey
+
筝茵鴻若劫阪с違若絮<潟若 + 筝荀с鴻с
+ +≪絖鴻若<ゃ若吟翫 + 罨<帥ゃ
+ +
+ htpasswd /usr/local/apache/passwd/passwords dpitts
+
篁ュ綽膈菴障違<ゃ
+ 篏с≪<ゃ菴遵障
+ (違鴻若<ゃ篏 -c
+ 篏帥障)
ф< .htaccess
<ゃ
+ 篆罩c綽荀障
+ AuthType Basic
+ AuthName "By Invitation Only"
+ # Optional line:
+ AuthBasicProvider file
+ AuthUserFile /usr/local/apache/passwd/passwords
+ AuthGroupFile /usr/local/apache/passwd/groups
+ Require group GroupName
+
с違若 GroupName
鴻
+ password
<ゃ潟篋冴
+ 罩c鴻若帥ゃ医ャсс
c劫茲違若吟ャ + 筝ゃ号障違若<ゃ篏с + 罨<cc篏帥違с障
+ +
+ Require valid-user
+
require user rbowen
茵с筝荐篏帥
+ 鴻若<ゃ鴻篋冴с域違с
+ 荐怨障
+ 鴻若<ゃ違若罸с
+ 違若с障
+ ≪若鴻Apache 篋ゃс
+ 筝ゃ<ゃ罎祉違鴻с
+ 罨鴻鴻若<ゃ膊∞筝
+ AuthUserFile
+ cc罩c<ゃс違鴻с
Basic 茯荐若絎翫 + 泣若ャ<潟鴻綺 + 若九鴻若罎祉違障 + 若吾若吾糸 + 若翫сc荅峨障 + (糸篆茘激cャс) + 篋潟篏紊絨障 + 腮綺鴻若<ゃ紊с罸箴障 + <ゃ肴障 + 若九鴻茯障違с + 若吾若綺茵 + 障
+ +腟茫筝ゃ鴻若<ゃ臀с + 若倶違絎莖障 + 泣若激潟ц純箴絖紊障 + 亥障潟莇綺篏筝荀篋障 + 篁茯荐惹号ャ鴻с
+若潟鴻с鴻若篆絖号筝荐馹 + 若帥若鴻ャ贋鴻若篆絖 + 障
+ +mod_authn_dbm
mod_authn_dbd
+ 篏帥с障
+ AuthBasicSource
+ file 篁cdbm
dbd
+ 主綵√吾鴻障
鴻<ゃ篁c dbm <ゃ御翫井<障
+ +
+ <Directory /www/docs/private>
+ AuthName "Private"
+ AuthType Basic
+ AuthBasicProvider dbm
+ AuthDBMUserFile /www/passwords/passwd.dbm
+ Require valid-user
+ </Directory>
+
篁激с潟絖障荅括完≪
+ mod_authn_dbm
ャ<潟荀с
茯荐惹粋≪若c冴ャ違ゃ篏帥 + 茯荐惹粋号蚊ゃ膰綽荀障 + ゃゃ腟水帥с障 + 罨<箴с file 茯荐若ゃ ldap 茯荐若ゃ + 腟水障
+ +
+ <Directory /www/docs/private>
+ AuthName "Private"
+ AuthType Basic
+ AuthBasicProvider file ldap
+ AuthUserFile /usr/local/apache/passwd/passwords
+ AuthLDAPURL ldap://ldaphost/o=yourorg
+ Require valid-user
+
箴с障 file ゃ若区荐若荅帥障 + 茯荐若сc翫ldap ゃ若喝冴障 + 腟膵ц違茯荐惹主号篏帥c + 号篏帥c茯荐若鴻潟若≦ぇс障 + 蚊ゃ激蚊ゃ茯荐若帥ゃ違粋 + 腟水号с違鴻若<ゃц荐若 + ldap cф粋茵c翫с
+ +茯荐若ゃ茲医茖с粋号茲遺戎с障 + 箴с file 違若粋 ldap 違若粋篏帥c障
+ +
+ <Directory /www/docs/private>
+ AuthName "Private"
+ AuthType Basic
+ AuthBasicProvider file
+ AuthUserFile /usr/local/apache/passwd/passwords
+ AuthLDAPURL ldap://ldaphost/o=yourorg
+ AuthGroupFile /usr/local/apache/passwd/groups
+ Require group GroupName
+ Require ldap-group cn=mygroup,o=yourorg
+
粋膣違九勝翫
+ <SatisfyAll>
+ <SatisfyOne>
+ cc篏帥c AND/OR 吾ф絎荐絎<ゃ
+ 粋九勝сc障
+ cc篏帥膓牙箴荀с
粋号蚊ゃ若帥純若鴻荀筝с罸鴻 + c紊綵号с障 + 粋綺九勝御с障
+ +粋綺ч障九勝
+ 障ф祁箙宴障
+ Apache 2.2 сゃ若鴻茯荐若<冴絨ャ
+ 粋茯荐弱泣若罘純障
+ 蚊ゃ号
+ 茯荐若≪吾ャ若若≪吾ャ若篏綺箴絖
+ 絎ц荐若ゃ若喝冴
+ 荐絎с障
+ ゃ<冴粋с絨ャ障
+ ゃ障Require
+ cc粋羈篏帥絎с
+ 若喝冴綺絎с障
+ 茲違粋羈若喝冴荐絎<ゃ
+ Require
cc筝
+ 憗綺障
菴遵уャ
+ <SatisfyAll>
,
+ <SatisfyOne>
+ cc篏帥c粋羈ゅ若喝冴≪祉鴻荐怨
+ 膓絎с障
+ 違罨<粋吾荀帥障:
+ # if ((user == "John") ||
+ # ((Group == "admin")
+ # && (ldap-group <ldap-object> contains auth'ed_user)
+ # && ((ldap-attribute dept == "sales")
+ # || (file-group contains auth'ed_user))))
+ # then
+ # auth_granted
+ # else
+ # auth_denied
+ #
+ <Directory /www/mydocs>
+
+ Authname ...
+ AuthBasicProvider ...
+ ...
+ Require user John
+ <SatisfyAll>
+
+ Require Group admins
+ Require ldap-group cn=mygroup,o=foo
+ <SatisfyOne>
+
+ Require ldap-attribute dept="sales"
+ Require file-group
+
+ </SatisfyOne>
+
+ </SatisfyAll>
+
+ </Directory>
+
с Require
+ cc OR 篏宴障ゃ障絎粋羈
+ 蚊ゃс若違粋障
+ Require
cc祉
+ 蚊ゃ <SatisfyAll>
+ у蚊AND 篏粋羈у若域┗障
若九鴻若茯荐若篏筝с障 + 茯違≪祉鴻c延札紊>散篏帥 + с + 違≪祉鴻c桁с
+ +粋ゃ all
,
+ env
,
+ host
,
+ ip
+ 篏帥鴻篆<激潟鴻 IP ≪
+ c鴻若鴻с≪祉劫九勝с障
ゃ宴
+ Require
+ Reject
+ 絎障cc粋ゃ脂蚊
+ 鴻粋罧級у若喝冴障:
+ Require ip address
+
сaddress IP ≪ ( IP ≪鴻 + 筝) :
+ +
+ Require host domain_name
+
domain_name FQDN (<ゃ喝筝) + с綽荀с域違≪鴻<ゃ喝吾с障
+ +違鴻<祉若吾篆<茯違翫 + 罨<障 :
+ +
+ Reject ip 10.252.46.165
+
cc鴻膀蚊潟潟潟絲障 + ≪鴻≪祉鴻荀с障 + 激喝c IP ≪鴻< + 絎с違激喝篏帥障
+ +
+ Reject host host.example.com
+
障劫<ゃ潟≪祉劫翫 + IP ≪鴻筝<ゃ喝絎с障 :
+ +
+ <SatisfyAll>
+
+ Reject ip 192.168.205
+ Reject host phishers.example.com moreidiots.example
Reject host ke
+
+ </SatisfyAll>
+
Reject
cc
+ <SatisfyAll>
筝т戎
+ 荐怨違若帥≪祉鴻с腆肴с障
筝荐箴с <SatisfyAll>
+ 篏帥c≪祉鴻若罧級с
+ Reject
cc
+ 羣腆肴障
茯荐若ゃ若鴻罘罕篁ュ篏睡cc
+ Order
,
+ Allow
,
+ Deny
,
+ Satisfy
+ 綽荀障
+ ゃ荐絎<ゃс緇剛с箴
+ cc mod_access_compat
≪吾ャ若腱祉障
cc宴馹蚊ゃ粋荐絎茵≪祉劫九勝荐絎茵
+ ≫障c障
+ Satisfy
cc
+ 鴻筝с荳若喝冴c 2 ゃ罧級腟潟ゃ障
+ 憜cc mod_access_compat
腱糸
+ 違茯荐若ccゃ≪祉劫九勝cc羞激篏帥
+ cc障馹mod_authz_default
≪吾ャ若
+ 若荀с綽c障
+ mod_authz_default
≪吾ャ若筝祉粋ゃ
+ c粋鴻障
+ ゃ≪祉劫九勝cc翫
+ ≪祉劫九勝粋腟潟ゃ鴻罧級阪腟荀≪祉鴻若羆冴障
+ сゃcc障篏翫
+ mod_authz_default
若
+ c帥
篏ゃ
+ c紊宴吾 mod_auth_basic
+ mod_authz_host
+ 吾茯с
+ <AuthnProviderAlias>
+ cc篏帥劫茯荐取┃絎膂≦吾障
≪祉劫九勝号 + ∫c荐莠障с荀с
+ +Apache HTTP サーバ バージョン 2.3
-関連モジュール | 関連ディレクティブ |
---|---|
CGI (Common Gateway Interface) は、ウェブサーバが - コンテンツ生成をする外部プログラムと協調して動作するための方法を - 定義しています。そのプログラムはしばしば CGI プログラムや - CGI スクリプトと呼ばれます。CGI は、ウェブサイトに動的な - コンテンツを置くための最も簡単で一般的な方法です。このドキュメントは、 - Apache ウェブサーバで CGI を設定し、 - CGI プログラムを書き始めるための入門書となるでしょう。
-CGI プログラムを正しく動作させるには、CGI を許可するように - Apache の設定を行う必要があります。 - これを行なうための方法がいくつかあります。
- -ScriptAlias
- ディレクティブを使用して、
- CGI プログラム用の特別な別ディレクトリを Apache に設定します。
- Apache は、このディレクトリ中の全てのファイルを CGI
- プログラムであると仮定します。
- そして、この特別なリソースがクライアントから要求されると、
- そのプログラムの実行を試みます。
ScriptAlias
- ディレクティブは以下のように使用します:
- ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
-
デフォルト位置に Apache をインストールしたならば、
- この例はデフォルト状態の httpd.conf
- 設定ファイルに含まれています。
- ScriptAlias
- ディレクティブは、URL の前に付加するディレクトリを定義する
- Alias
- ディレクティブとかなり似ています。
- Alias
と ScriptAlias
- は通常、DocumentRoot
- ディレクトリ外のディレクトリのために使用されます。
- Alias
と ScriptAlias
- との差は、ScriptAlias
が接頭辞で始まるすべての
- URL は CGI プログラムとみなされるという追加の意味を含んでいることです。
- 従って、上記の例では、/cgi-bin/
- で始まるリソースへのあらゆるリクエストに対して、ディレクトリ
- /usr/local/apache2/cgi-bin/
から提供し、それらを
- CGI プログラムとして扱うよう Apache に示します。
例えば、URL http://www.example.com/cgi-bin/test.pl
- が要求された場合、Apache は ファイル
- /usr/local/apache2/cgi-bin/test.pl
- を実行し、その出力を返すことを試みます。
- もちろん、ファイルが存在し、実行可能であり、決められた方法で出力を返します。
- そうでなければ、Apache はエラーメッセージを返します。
CGI プログラムは、セキュリティ上の理由から
- ScriptAlias
- されたディレクトリに制限されることがしばしばあります。この方法により、
- CGI プログラムを使用できるユーザを管理者が厳しく制御することができます。
- しかしながら、適切なセキュリティ事前対策がとられるならば、CGI
- プログラムを任意のディレクトリで実行できないようにする理由はありません。
- 例えば、ユーザに UserDir
- ディレクティブで彼らのホームディレクトリ配下にウェブコンテンツを持たせたいとします。
- もし、彼らが CGI プログラムを持つことを望んでいても、メインの
- cgi-bin
ディレクトリへのアクセスができない場合、
- CGI プログラムを実行することができる他の場所が必要になります。
任意のディレクトリで CGI の実行を許可するには二段階の設定が必要です。
- まず、AddHandler
や SetHandler
ディレクティブによって
- cgi-script
ハンドラが可能になっている必要があります。
- 次に、Options
ディレクティブで
- ExecCGI
が指定されていなければなりません。
サーバのメインの設定ファイル中で Options
- ディレクティブを明示的に使用することで、特定のディレクトリ配下で
- CGI の実行を許可するように指定することができます:
- <Directory /usr/local/apache2/htdocs/somedir>
-
- Options +ExecCGI
-
- </Directory>
-
上記ディレクティブは、CGI ファイルの実行を可能にするよう
- Apache に伝えます。また、どのファイルが CGI ファイルかを
- サーバに伝える必要があります。次の
- AddHandler
- ディレクティブの例では、cgi
または pl
- を拡張子に持つすべてのファイルを CGI
- プログラムとしてみなすことをサーバに伝えます:
- AddHandler cgi-script .cgi .pl
-
.htaccess
チュートリアル
- は httpd.conf
を変更できない場合にどうやって CGI プログラムを
- 使えるようにするかを説明しています。
.cgi
で終わるすべてのファイルに対して CGI プログラムの
- 実行を許可するには、以下の設定を使用できます。
- <Directory /home/*/public_html>
-
- Options +ExecCGI
- AddHandler cgi-script .cgi
-
- </Directory>
-
ユーザディレクトリの cgi-bin
サブディレクトリの
- すべてのファイルを CGI プログラムとして指定したい場合には
- 以下のようなものを使います。
- <Directory /home/*/public_html/cgi-bin>
-
- Options ExecCGI
- SetHandler cgi-script
-
- </Directory>
-
「通常の」プログラミングと CGI - プログラミングの間には主に二つの違いがあります。
- -一つは、CGI プログラムのすべての出力には MIME-type - ヘッダを付けなければなりません。 - これはどのような種類のコンテンツを受け取っているかをクライアントに示す - HTTP ヘッダです。ほとんどの場合では、次のように出力します:
- -
- Content-type: text/html
-
もう一つは、出力を HTML - か、ブラウザが表示することができる何か他の形式にする必要があります。 - 大抵の場合は HTML でしょうが、GIF イメージや他の非 HTML - コンテンツを出力する CGI プログラムを書くこともあるでしょう。
- -これら二点以外では、CGI プログラムを書くことは、 - あなたが書いている他のプログラムとよく似ているでしょう。
- -次に示すのは、ブラウザに 1 行印字する CGI
- プログラムの例です。以下を入力し、first.pl
- というファイルに保存し、それを cgi-bin
- ディレクトリに置いてください。
- #!/usr/bin/perl
- print "Content-type: text/html\n\n";
- print "Hello, World.";
-
Perl に精通していなくても、
- 何が起こるかを理解することはできるでしょう。1 行目は、
- /usr/bin/perl
で見つけられるインタプリタに
- このファイルを供給することでこのプログラムが実行されることを
- Apache に (シェル上で実行しようとしているならば、そのシェルに )
- 示します。2 行目は、前述したとおり content-type の定義を印字します。
- これには復帰改行の二つの組を後に付加します。
- これにより、ヘッダの終りに空行が置かれ、HTTP
- ヘッダの終りとボディの始まりを示します。3 行目は、"Hello, World."
- という文字列を印字し、これで終りとなります。
好みのブラウザを開き、アドレス
- -
- http://www.example.com/cgi-bin/first.pl
-
あるいはファイルを置いたロケーションを指定すると、
- Hello, World.
- という 1 行がブラウザウィンドに現れるでしょう。
- それはあまりエキサイティングなことではありません。
- しかし、これがうまく動けば、
- 他のどのようなものでも動かすことができるようになります。
ウェブから CGI プログラムへのアクセスを行なったとき、 - ブラウザで見る可能性がある四つの基本的なことがあります:
- -Content-Type
を CGI プログラム内で
- セットしたかを確認してください。サーバはあなたの権限で実行されていないのを忘れないように。
- つまり、起動するとき、サーバは特権をもたないユーザ - 通常 nobody
- や www
の権限で実行されます。したがって、あなたが所有する
- ファイルを実行するには別のパーミッションが必要となります。
- 通常、nobody
が実行するのに十分なパーミッションを与える方法は、
- ファイルに誰でも実行可能とするパーミッションを与えることです:
- chmod a+x first.pl
-
また、もしあなたのプログラムが他のファイルを読み書きするならば、 - それらのファイルは、これが可能となる正しいパーミッション - を持っている必要があります。
- - - -コマンドラインからプログラムを実行するとき、
- 意識しなくてもシェルに渡される情報があります。
- 例えば、参照するファイルのためにどこを検索したらよいかを
- シェルに伝える PATH
があります。
プログラムが CGI プログラムとしてウェブサーバによって実行されるとき、
- それは同じ PATH
ではないかもしれません。
- CGI プログラム内で呼び出すあらゆるプログラム
- (例えば、sendmail
のようなもの) は、
- フルパスで指定する必要があるでしょう。それにより、CGI
- プログラムを実行しようとしたとき、
- シェルはそのようなプログラムを見つけることができます。
同様なことは、スクリプトのインタプリタ (しばしば perl
)
- へのパスで、CGI プログラムの 1 行目に次のように示されます:
- #!/usr/bin/perl
-
これがインタープリタへの実際のパスであることを確認しておきます。
- - -また、CGI プログラムが他の環境変数に依存している場合は、その環境変数が - Apache から渡されるようにする必要があります。
- -CGI - プログラムが失敗するのは大抵、プログラム自身に問題がある場合です。 - 一度 CGI の使い方を理解し、前述の二つの誤りを犯していないならば、 - まず間違いなくそうでしょう。ブラウザを使ってテストする前に - まず確認することは、コマンドラインからプログラムが実行できることです。 - 例えば、以下を実行してみてください:
- -
- cd /usr/local/apache2/cgi-bin
- ./first.pl
-
(perl
インタプリタは呼ばないでください。
- シェルと Apache がスクリプトの最初の行の パス情報 を使って見つけます。)
最初にプログラムから出力されるのは Content-Type
を含み、
- 後に空行の続く HTTP ヘッダでなければなりません。他のものが出力されている
- 場合は、Apache はこのプログラムをサーバ経由で実行しようとしたときには
- Premature end of script headers
エラーを出力します。詳細は
- 上記の CGI プログラムを書く を読んでください。
エラーログは友達です。 - 全てのうまくいかないことは、エラーログにメッセージを生成します。 - 必ずそれを最初に見るべきです。 - もし、あなたがウェブサイトを主催している場所が - エラーログの参照を許していないならば、きっと他のサイトで主催するべきです。 - エラーログの読み方を学ぶことで、ほとんど全ての問題が迅速に確認され、 - 迅速に解決されるということが分かるでしょう。
- - -suexec サポートプログラムは
- バーチャルホストやユーザのホームディレクトリの場所に依って
- CGI プログラムを違うユーザ権限の下で走らせることを可能にします。
- Suexec の権限のチェックは非常に厳しく、それを満たさない場合は
- CGI プログラムが Premature end of script headers
エラーで
- 実行されません。
suexec を使っているかどうかを調べためには apachectl
- -V
を実行して、SUEXEC_BIN
の場所を調べてください。
- Apache がそこに suexec
のバイナリを発見した場合は、suexec が
- 使用されます。
suexec を完全に理解していない限り、使うべきではありません。
- suexec を無効にするには、SUEXEC_BIN
から指されている
- suexec
バイナリを削除 (か名前を変更) するだけです。
- suexec を読んだ後で、まだそれを
- 使いたいのであれば、suexec -V
を実行して suexec の
- ログファイルの位置を調べ、そのログファイルを使ってポリシー違反を
- 見つけてください。
CGI プログラミングに習熟すると、 - 裏で起こっていることについて更に理解することの役に立ちます。 - ブラウザとサーバがどのように相互通信するかについては特にそうです。 - なぜなら、"Hello, World." - を印字するプログラムを書くことはおおいに結構ですが、 - それは特に有益ではありません。
- -環境変数は、
- あなたがコンピュータを使うときに辺りに存在している値です。
- それらは、パス
- (コマンドをタイプしたときに実行する実際のファイルを探し出すところ)、
- ユーザ名、端末型などのような便利なものです。
- 通常、普段使用している環境変数の完全なリストを調べるには、
- コマンドプロンプトで env
を入力します。
CGI の処理中、サーバとブラウザも環境変数を設定し、 - それにより相互に通信することができるようになります。 - その環境変数は、ブラウザタイプ (Netscape, IE, Lynx)、サーバタイプ - (Apache, IIS, WebSite)、実行されている CGI - プログラムの名前などです。
- -これらの変数は CGI プログラマが使用できます。 - そして、それはクライアントとサーバの通信の話の半分です。 - 必要な変数の完全なリストは http://hoohoo.ncsa.uiuc.edu/cgi/env.html にあります。
- -以下の単純な Perl CGI
- プログラムは、渡される全ての環境変数を表示します。同様のプログラムは、
- Apache ディストリビューションの cgi-bin
- ディレクトリに二つ含まれています。
- いくつかの変数が必須であり、いくつかは任意であることに注意してください。
- そして、公式のリストにはないいくつかの変数が表示されているかもしれません。
- さらに、Apache はデフォルトで用意されている基本的なものに
- あなた自身の環境変数を加えるための、
- 多くの異なる方法を用意してします。
- #!/usr/bin/perl
- print "Content-type: text/html\n\n";
- foreach $key (keys %ENV) {
-
- print "$key --> $ENV{$key}<br>";
-
- }
-
サーバとクライアント間のもう一つの通信は、標準入力
- (STDIN
)と標準出力 (STDOUT
)
- を通じて行なわれます。通常の文脈において、STDIN
- はキーボードやプログラムが動作するために与えられるファイルを意味し、
- STDOUT
は通常コンソールまたはスクリーンを意味します。
ウェブフォームから CGI プログラムへPOST
- したとき、フォームのデータは特別なフォーマットで束ねられ、
- STDIN
を通して、CGI プログラムに引き渡されます。
- プログラムはデータがキーボード
- もしくはファイルから来ていたかのように処理することができます。
「特別なフォーマット」はとても単純です。フィールド名と値はイコール - (=) で結ばれます。そして値の組はアンパサンド (&) で結ばれます。 - スペース、アンパサンド、イコールのような面倒な文字は、 - それらが動作を駄目にしないようにその文字に相当する 16 進に変換されます。 - 全データ文字列は、以下のようになります: -
- -
- name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey
-
時々、このような文字列が URL
- に付加されるのを見るでしょう。その場合、サーバは
- QUERY_STRING
という環境変数にその文字列を入れます。それは
- GET
リクエストと呼ばれます。
- HTML フォームでは、データを渡すために GET
と
- POST
のどちらを使用するかを、FORM
タグの
- METHOD
属性の設定で指定します。
CGI プログラムは、その文字列を役に立つ情報に分割する責任があります。 - 幸いにも、そのデータ処理を助けるライブラリやモジュールが存在します。 - これらは、CGI プログラムの他の面でも同様に役に立ちます。
- -CGI プログラムを書くとき、面倒な仕事の大部分をしてくれる - コードライブラリまたはモジュールを使うことを検討すべきです。 - これはエラーを減らし、早い開発につながります。
- -Perl で CGI プログラムを書いているなら、モジュールは CPAN で提供されています。
- この目的のための最も普及しているモジュールは CGI.pm
です。
- CGI::Lite
も検討しましょう。これは、ほとんどのプログラム
- において必要とするすべての機能の最小セットの実装です。
C で CGI プログラムを書いているなら、いろいろな
- オプションがあります。これらの内の一つは http://www.boutell.com/cgic/
- で提供されている CGIC
ライブラリです。
CGI に関する情報はウェブで数多く提供されています。CGI - の問題については Usenet の comp.infosystems.www.authoring.cgi で、 - 他のユーザと論議することができます。HTML Writers Guide の - -servers メーリングリストは、あなたの質問に回答してくれる偉大なリソースです。 - http://www.hwg.org/lists/hwg-servers/ - で更に多くを探し出すことができます。
- -そしてもちろん、おそらく CGI - プログラムの動作に関する詳細の全てが記述されている - CGI の仕様を読むべきです。オリジナルバージョンを - NCSA - で、アップデートされたドラフトを - Common Gateway Interface RFC - プロジェクトで参照することができます。
- -CGI の問題について、加わっているメーリングリストまたはニュース - グループに質問を送るとき、起こったもの、起こってほしいこと、 - 実際に起こったことがどう違うか、使用しているサーバ、 - CGI プログラムを記述している言語に関する十分な情報と、 - 可能であれば問題のコードを提供するようにしてください。 - そうすることで、問題がより間単に見つかるようになります。
- -Apache のソースコードにおいて問題を発見したことを確信していない限り、 - CGI の問題に関する質問を Apache - バグデータベースに送るべきでない - ことに注目してください。
-Apache HTTP 泣若 若吾с 2.3
+∫c≪吾ャ若 | ∫ccc |
---|---|
CGI (Common Gateway Interface) с泣若 + 潟潟潟紊違茯帥篏号 + 絎臂障違違 CGI 違 + CGI 鴻若違障CGI с泣ゃ + 潟潟潟臀膂≦т号сャ<潟 + Apache с泣若 CGI 荐絎 + CGI 違吾紮ラ吾с
+CGI 違罩c篏CGI 荐怨 + Apache 荐絎茵綽荀障 + 茵号ゃ障
+ +ScriptAlias
+ cc篏睡
+ CGI 違劫ャャc Apache 荐絎障
+ Apache c筝<ゃ CGI
+ 違с篁絎障
+ 劫ャ純若鴻ゃ≪潟荀羆
+ 違絎茵荅帥障
ScriptAlias
+ cc篁ヤ篏睡障:
+ ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
+
篏臀 Apache ゃ潟鴻若違
+ 箴倶 httpd.conf
+ 荐絎<ゃ障障
+ ScriptAlias
+ ccURL 篁c絎臂
+ Alias
+ cc篌若障
+ Alias
ScriptAlias
+ 絽吾DocumentRoot
+ c紊c篏睡障
+ Alias
ScriptAlias
+ 綏ScriptAlias
・莨у障鴻
+ URL CGI 違帥菴遵潟сс
+ 緇c筝荐箴с/cgi-bin/
+ у障純若鴻吾鴻絲障c
+ /usr/local/apache2/cgi-bin/
箴
+ CGI 違宴 Apache 腓冴障
箴違URL http://www.example.com/cgi-bin/test.pl
+ 荀羆翫Apache <ゃ
+ /usr/local/apache2/cgi-bin/test.pl
+ 絎茵阪菴荅帥障
+ <<ゃ絖絎茵純с羆冴号у阪菴障
+ с違Apache 若<祉若吾菴障
CGI 違祉ャd宴
+ ScriptAlias
+ c狗違違障号
+ CGI 違篏睡с若吟膊∞ウ九勝с障
+ 祉ャd絲丞違CGI
+ 違篁紙cу茵с宴障
+ 箴違若吟 UserDir
+ ccу充若c筝с潟潟潟障
+ 綵若 CGI 違ゃс<ゃ潟
+ cgi-bin
c吾≪祉鴻с翫
+ CGI 違絎茵с篁贋綽荀障
篁紙c CGI 絎茵荐怨篋罧級荐絎綽荀с
+ 障AddHandler
SetHandler
ccc
+ cgi-script
潟純c綽荀障
+ 罨<Options
cc
+ ExecCGI
絎違障
泣若<ゃ潟荐絎<ゃ筝 Options
+ cc腓榊篏睡с劫c筝
+ CGI 絎茵荐怨絎с障:
+ <Directory /usr/local/apache2/htdocs/somedir>
+
+ Options +ExecCGI
+
+ </Directory>
+
筝荐ccCGI <ゃ絎茵純
+ Apache 篌障障<ゃ CGI <ゃ
+ 泣若篌綽荀障罨<
+ AddHandler
+ cc箴сcgi
障 pl
+ ≦宍絖ゃ鴻<ゃ CGI
+ 違帥泣若篌障:
+ AddHandler cgi-script .cgi .pl
+
.htaccess
ャ若≪
+ httpd.conf
紊眼с翫c CGI 違
+ 篏帥茯障
.cgi
х鴻<ゃ絲障 CGI 違
+ 絎茵荐怨篁ヤ荐絎篏睡с障
+ <Directory /home/*/public_html>
+
+ Options +ExecCGI
+ AddHandler cgi-script .cgi
+
+ </Directory>
+
若吟c cgi-bin
泣c
+ 鴻<ゃ CGI 違絎翫
+ 篁ヤ篏帥障
+ <Directory /home/*/public_html/cgi-bin>
+
+ Options ExecCGI
+ SetHandler cgi-script
+
+ </Directory>
+
絽吾違潟違 CGI + 違潟違筝祉篋ゃ障
+ +筝ゃCGI 違鴻阪 MIME-type + 篁違障 + 腮蕁潟潟潟cゃ≪潟腓冴 + HTTP с祉翫с罨<阪障:
+ +
+ Content-type: text/html
+
筝ゃ阪 HTML + 吟茵腓冴с篏篁綵√綽荀障 + 紊ф泣翫 HTML сGIF ゃ<若吾篁 HTML + 潟潟潟阪 CGI 違吾с
+ +篋剛札紊сCGI 違吾 + 吾篁違鋍若с
+ +罨<腓冴吟 1 茵医 CGI
+ 違箴с篁ヤュfirst.pl
+ <ゃ篆絖 cgi-bin
+ c臀
+ #!/usr/bin/perl
+ print "Content-type: text/html\n\n";
+ print "Hello, World.";
+
Perl 膕冗
+ 篏莎激茹cсс1 茵
+ /usr/bin/perl
цゃゃ潟帥帥
+ <ゃ箴腟с違絎茵
+ Apache (激с筝у茵違激с )
+ 腓冴障2 茵菴違 content-type 絎臂医障
+ 緇絽井壕篋ゃ腟緇篁障
+ 腟腥肴臀HTTP
+ 腟c紮障腓冴障3 茵"Hello, World."
+ 絖医х障
絅純帥吟≪
+ +
+ http://www.example.com/cgi-bin/first.pl
+
<ゃ臀宴若激с潟絎
+ Hello, World.
+ 1 茵吟c潟憗с
+ 障泣ゃc潟違с障
+ 障違
+ 篁сс障
с CGI 違吾≪祉鴻茵c + 吟ц醇сゃ堺障:
+ +Content-Type
CGI 違
+ 祉腆肴泣若罔у茵綽
+ ゃ障莎桁泣若号┤若 - 絽 nobody
+ www
罔у茵障c
+ <ゃ絎茵ャ若激с潟綽荀障
+ 絽吾nobody
絎茵若激с潟筝号
+ <ゃ茯違с絎茵純若激с潟筝с:
+ chmod a+x first.pl
+
障違篁<ゃ茯炊吾違 + <ゃ純罩c若激с + c綽荀障
+ + + +潟潟ゃ潟違絎茵
+ 顑激с羝<宴障
+ 箴違с<ゃ罎膣≪
+ 激с篌 PATH
障
違 CGI 違с泣若c絎茵
+ PATH
с障
+ CGI 違у若喝冴違
+ (箴違sendmail
)
+ 鴻ф絎綽荀сCGI
+ 違絎茵
+ 激с違荀ゃс障
罕鴻ゃ潟帥 (違 perl
)
+ 吾鴻сCGI 違 1 茵罨<腓冴障:
+ #!/usr/bin/perl
+
ゃ潟帥若帥吾絎鴻с腆肴障
+ + +障CGI 違篁医紊箴絖翫医紊違 + Apache 羝<綽荀障
+ +CGI + 違紊掩紊ф泣違荳馹翫с + 筝綺 CGI 篏帥鴻茹c菴違篋ゃ茯ゃ違 + 障с吟篏帥c鴻 + 障腆肴潟潟ゃ潟違絎茵сс + 箴違篁ヤ絎茵帥:
+ +
+ cd /usr/local/apache2/cgi-bin
+ ./first.pl
+
(perl
ゃ潟帥帥若違с
+ 激с Apache 鴻茵 号 篏帥c荀ゃ障)
違阪 Content-Type
帥
+ 緇腥肴膓 HTTP с違障篁阪
+ 翫Apache 違泣若腟宴у茵
+ Premature end of script headers
若阪障荅括完
+ 筝荐 CGI 違吾 茯с
若違с + 障若違<祉若吾障 + 綽荀鴻с + с泣ゃ筝糸贋 + 若違с荐宴違c篁泣ゃт源鴻с + 若違茯炊鴻絖吟с祉馹菴腆肴 + 菴茹f浦с
+ + +suexec 泣若違
+ 若c鴻若吟若c贋箴c
+ CGI 違若倶┤筝ц軌純障
+ Suexec 罔с絽吾ウ羣翫
+ CGI 違 Premature end of script headers
若
+ 絎茵障
suexec 篏帥c茯帥鴻 apachectl
+ -V
絎茵SUEXEC_BIN
贋茯帥鴻
+ Apache suexec
ゃ肴翫suexec
+ 篏睡障
suexec 絎茹c篏帥鴻с障
+ suexec ≦鴻SUEXEC_BIN
+ suexec
ゃ (紊) с
+ suexec 茯緇с障
+ 篏帥с違suexec -V
絎茵 suexec
+ 違<ゃ篏臀茯帥鴻違<ゃ篏帥c激守
+ 荀ゃ
CGI 違潟違膺 + 茖ц儀cゃ眼茹c綵鴻腴<障 + 吟泣若娯篆<ゃ鴻с + "Hello, World." + 医違吾腟罕с + 鴻с障
+ +医紊違
+ 潟潟ャ若帥篏帥莨冴絖ゃс
+
+ (潟潟帥ゃ絎茵絎<ゃ「冴)
+ 若九腴箴水с
+ 絽吾罧灸戎医紊違絎鴻茯帥鴻
+ 潟潟潟 env
ュ障
CGI 筝泣若吟医紊違荐絎 + 娯篆<с障 + 医紊違吟帥ゃ (Netscape, IE, Lynx)泣若帥ゃ + (Apache, IIS, WebSite)絎茵 CGI + 違с
+ +紊違 CGI 違篏睡с障 + ゃ≪潟泣若篆<荅宴с + 綽荀紊違絎鴻 http://hoohoo.ncsa.uiuc.edu/cgi/env.html 障
+ +篁ヤ膣 Perl CGI
+ 違羝<医紊違茵腓冴障罕違
+ Apache c鴻ャ若激с潟 cgi-bin
+ c篋ゅ障障
+ ゃ紊違綽сゃ篁紙с羈
+ 綣鴻ゃ紊違茵腓冴障
+ Apache х堺
+ 荳医紊違
+ 紊違号障
+ #!/usr/bin/perl
+ print "Content-type: text/html\n\n";
+ foreach $key (keys %ENV) {
+
+ print "$key --> $ENV{$key}<br>";
+
+ }
+
泣若ゃ≪潟筝ゃ篆<罔羣ュ
+ (STDIN
)罔羣阪 (STDOUT
)
+ 茵障絽吾STDIN
+ 若若違篏筝<ゃ潟
+ STDOUT
絽吾潟潟純若障鴻若潟潟障
с若 CGI 違POST
+ 若若帥劫ャ若ф
+ STDIN
CGI 違綣羝<障
+ 違若帥若若
+ <ゃャс障
劫ャ若膣сc若ゃゃ潟若 + (=) х違障ゃ腟≪潟泣潟 (&) х違障 + 鴻若鴻≪潟泣潟ゃ潟若√絖 + 篏薈絖後 16 蚊紊障 + 若炊絖篁ヤ障: +
+ +
+ name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey
+
絖 URL
+ 篁荀с翫泣若
+ QUERY_STRING
医紊違絖ャ障
+ GET
鴻若違障
+ HTML 若с若帥羝< GET
+ POST
<篏睡FORM
帥違
+ METHOD
絮с荐絎ф絎障
CGI 違絖綵鴻腴ゆ宴蚊莢篁祉障 + 綛吾若水ゃ≪吾ャ若絖障 + CGI 違篁≪с罕綵鴻腴<障
+ +CGI 違吾√篁篋紊ч + 潟若ゃ障≪吾ャ若篏帥罎荐鴻с + 若羝冴ゃ障
+ +Perl CGI 違吾≪吾ャ若 CPAN ф箴障
+ ≪吾ャ若 CGI.pm
с
+ CGI::Lite
罎荐障祉違
+ 綽荀鴻罘純絨祉絎茖с
C CGI 違吾
+ 激с潟障筝ゃ http://www.boutell.com/cgic/
+ ф箴 CGIC
ゃс
CGI ≪宴сф医箴障CGI + 馹ゃ Usenet comp.infosystems.www.authoring.cgi с + 篁若吟茫茘違с障HTML Writers Guide + -servers <若潟違鴻莖膈紊с純若鴻с + http://www.hwg.org/lists/hwg-servers/ + ф眼紊「冴с障
+ +< CGI + 違篏≪荅括完荐菴違 + CGI 篁罕茯鴻с吾若吾с潟 + NCSA + с≪若 + Common Gateway Interface RFC + 吾сусс障
+ +CGI 馹ゃc<若潟違鴻障ャ若 + 違若莖莎激c莎激c祉 + 絎莎激c篏睡泣若 + CGI 違荐菴違荐茯≪宴 + 純с医馹潟若箴 + с馹荀ゃ障
+ +Apache 純若鴻潟若馹肴腆坂拭 + CGI 馹≪莖 Apache + 違若帥若鴻鴻с + 羈
+Apache HTTP サーバ バージョン 2.3
-.htaccess
ファイルはディレクトリ毎に設定を変更する方法を
-提供します。
関連モジュール | 関連ディレクティブ |
---|---|
.htaccess
ファイル (「分散設定ファイル」) は
- ディレクトリ毎に設定を変更する方法を提供します。ディレクティブの
- 書かれたファイルをディレクトリに置くことで、そのディレクトリとその
- サブディレクトリすべてにディレクティブを適用させることができます。
.htaccess
ファイルを別の名前にしたい場合は、
- AccessFileName
ディレクティブを
- 使って変更することができます。例えば、そのファイルを .config
- という名前にしたい場合は、以下の設定をサーバ設定ファイルに入れることが
- できます:
- AccessFileName .config
-
一般に、.htaccess
ファイルの構文は
- 主設定ファイル
- と同じです。これらのファイルに書くことのできるディレクティブは AllowOverride
ディレクティブにより決まります。
- このディレクティブは、.htaccess
ファイルに
- 書かれたディレクティブの中で、、
- どのディレクティブが適用されるかをカテゴリー単位で指定します。
- .htaccess
に書くことのできるディレクティブであれば、
- 説明文書には「上書き」という項目があり、.htaccess に書くことができるように
- なるための AllowOverride
の値が指定されています。
例えば、AddDefaultCharset
ディレクティブの説明を
- 見ると、.htaccess
ファイルでの使用が許可されていることが
- わかります。 (ディレクティブの概要の所にある「コンテキスト」と書かれている
- 行を見てください。) 上書きと書かれている行には
- FileInfo
とあります。ですから、.htaccess
中の
- このディレクティブが有効になるためには、少なくとも
- AllowOverride FileInfo
が設定されている必要があります。
あるディレクティブを .htaccess
ファイルに書くことができるか
- どうかわからないときは、そのディレクティブの説明を探して、".htaccess"
- のための「コンテキスト」の行を調べてください。
一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、
- .htaccess
ファイルの使用は極力避けてください。
- 世の中には、例えば、ユーザ認証は常に .htaccess
ファイルで
- 行なわなければならない、という誤解が広まっていますが、まったくそんなことは
- ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、
- 実際、その方がより良い設定方法です。
.htaccess
ファイルはコンテンツ提供者がディレクトリ毎の
- 設定を行ないたいけれど、サーバシステムの root アクセス権限を持っていない
- という場合にのみ使うべきものです。サーバ管理者が頻繁に設定変更を行ないたくは
- ない、というときには個々のユーザが .htaccess
ファイルを使って
- 自分で設定の変更を行なうことを許可した方が良いときもあるでしょう。
- これは特に、ISP が複数のユーザのサイトを一つのマシンでホストしていて、
- 各ユーザが設定の変更をできるようにしたいようなときにあてはまります。
しかし、普通は可能であれば .htaccess
ファイルの使用は
- 避けてください。.htaccess
ファイルに書こうと考えるような
- すべての設定は、サーバの主設定ファイルの <Directory>
セクションで同じように行なうことが
- できます。
.htaccess
ファイルの使用を避ける理由は主に二つあります。
一つ目はサーバの性能の問題です。AllowOverride
ディレクティブが
- .htaccess
ファイルの設定を許可している場合は、Apache は
- 各ディレクトリで .htaccess
ファイルを探します。
- ですから、.htaccess
ファイルを許可すると、実際に使用しているか
- どうかに関わらず、性能の低下を招くことになります! また、.htaccess
- ファイルは文書がリクエストされる度に読み込まれます。
さらに、Apache は適用すべきディレクティブを集めるために、すべての
- 上位のディレクトリの .htaccess
ファイルを探す必要があることにも
- 注意してください。(ディレクティブが適用される方法を
- 参照してください。)ですから、/www/htdocs/example
にある
- ファイルがリクエストされたときは、Apache は以下のファイルを調べます。
- /.htaccess
- /www/.htaccess
- /www/htdocs/.htaccess
- /www/htdocs/example/.htaccess
-
ですから、そのディレクトリのそれぞれのファイルへのアクセスに対して、
- 上の例のファイルがまったく存在しないときでも、追加のファイルシステムの
- アクセスが行なわれることになります。(これは、.htaccess
が
- /
に対して有効になっているときの場合で、普通はそうなって
- いないことに注意してください。)
二つ目はセキュリティです。ユーザにサーバの設定を変更することを
- 許可することになりますので、あなた自身が管理できない変更をされる
- 恐れがあります。ユーザにこの特権を与えるのが良いのかどうか、十分
- 検討してください。また、ユーザに与える権限が必要なものよりも少なすぎると、
- 余分な技術サポート報告を受け取るようになる可能性が高いことにも
- 注意してください。確実に、ユーザにどの程度の権限を与えたか明確に告げるように
- してください。AllowOverride
に
- 何を設定したかということと、関連する文書を示すことで、
- 後々の混乱をぐっと減らすことが
- できます。
ところで、ディレクティブの書かれた .htaccess
を
- /www/htdocs/example
に置くことと、同じディレクティブを
- 主サーバ設定の Directory セクション
- <Directory /www/htdocs/example>
に書くことは
- 完全に等価です:
/www/htdocs/example
の .htaccess
ファイル:
/www/htdocs/example
の .htaccess ファイルの
- 内容
- AddType text/example .exm
-
httpd.conf のセクション
- file
- <Directory /www/htdocs/example>
-
- AddType text/example .exm
-
- </Directory>
-
しかし、この設定はサーバ設定ファイルに書いた方がパフォーマンスの - 低下が少なくなります。ファイルがリクエストされる度に - 読み込まれる代わりに、Apache の起動時に 1 回だけ読み込めば - よくなるからです。
- -AllowOverride
ディレクティブの
- 値を none
に設定することで .htaccess
ファイル
- の使用を完全に無効にすることができます。
- AllowOverride None
-
.htaccess
ファイルの設定ディレクティブは .htaccess
- ファイルの存在するディレクトリと、そのサブディレクトリすべてに適用されます。
- しかし、上の階層のディレクトリにも .htaccess
ファイルが
- 存在するかもしれないことを覚えておくことは大切です。ディレクティブは現れる
- 順番に適用されます。ですから、あるディレクトリの .htaccess
は
- ディレクトリツリーのより上の階層の .htaccess
ファイルの
- 設定を上書きするかもしれません。そして、その .htaccess
も
- より上の階層で書かれたディレクティブを上書きしたり、主サーバ設定ファイル
- そのものの設定を上書きしたりしているかもしれません。
例:
- -ディレクトリ /www/htdocs/example1
に以下の内容の
- .htaccess
ファイルがあります:
- Options +ExecCGI
-
(注: .htaccess
- ファイルで "Options
" ディレクティブが有効になるためには、
- "AllowOverride Options
" を有効にする必要があります。)
ディレクトリ /www/htdocs/example1/example2
には
- 以下のような .htaccess
ファイルがあります:
- Options Includes
-
二つめの .htaccess
により、ディレクトリ
- /www/htdocs/example1/example2
では CGI の実行は
- 許可されません。これは、Options Includes
のみが
- 効力を持ち、それがすべての以前の設定を上書きするからです。
As discussed in the documentation on Configuration Sections,
- .htaccess
files can override the <Directory>
sections for
- the corresponding directory, but will be overriden by other types
- of configuration sections from the main configuration files. This
- fact can be used to enforce certain configurations, even in the
- presence of a liberal AllowOverride
setting. For example, to
- prevent script execution while allowing anything else to be set in
- .htaccess
you can use:
セクションの設定
- に記載されているように、.htaccess
ファイルを使って
- <Directory>
- セクションの設定をディレクトリ毎に上書きできますが、
- メイン設定ファイル中にある、他の種類の設定セクションによって
- さらに上書きされることもあります。
- この特徴を使って、
- AllowOverride
- で自由度の高い設定があったとしても、ある特定の設定が確実に
- 反映されるようにできます。例えば、CGI スクリプトの実行は
- 不許可に、かつ、.htaccess
でその他の項目は
- 設定できるように、という場合は次のようにできます :
-<Directory />
-
-Allowoverride All
-
-</Directory>
-
-<Location />
-
-Options +IncludesNoExec -ExecCGI
-
-</Location>
-
もし認証の方法を知るためにこの部分に直接来たのであれば、次のことを
- 知っておくことが重要です。よくある誤解に、パスワード認証を行なうためには
- .htaccess
ファイルを使う必要がある、というものがあります。
- これは正しくありません。主サーバ設定ファイルの <Directory>
セクションに
- 認証用のディレクティブを書く方が推奨される方法で、.htaccess
- ファイルは主サーバ設定ファイルを変更できないときにのみ使用すべきです。
- いつ .htaccess
ファイルを使うべきで、いつ使うべきではないかに
- ついては 上を参照してください。
以上のことをふまえた上で、もし .htaccess
の使用が
- まだ必要だと思う場合は、次のようなものが望みのことをしてくれるかも
- しれません。
.htaccess
ファイルの内容:
- AuthType Basic
- AuthName "Password Required"
- AuthUserFile /www/passwords/password.file
- AuthGroupFile /www/passwords/group.file
- Require Group admins
-
これらのディレクティブが有効になるためには、
- AllowOverride AuthConfig
が有効でなくてはならないことに
- 注意してください。
認証と承認については 認証チュートリアルを - 参照してください。
-もう一つの .htaccess
ファイルのよくある利用法は
- 特定のディレクトリで SSI を有効にすることです。これは、望みのディレクトリの
- .htaccess
ファイルに以下の設定ディレクティブを書くことで
- 達成できます:
- Options +Includes
- AddType text/html shtml
- AddHandler server-parsed shtml
-
これらのディレクティブが有効になるためには、
- AllowOverride Options
と AllowOverride
- FileInfo
が有効になっている必要があることに注意してください。
よりまとまった SSI の説明は SSI チュートリアルを - 参照してください。
-最後に、特定のディレクトリで CGI プログラムの実行を許可したいことが - あるでしょう。これは以下の設定で行なうことができます:
- -
- Options +ExecCGI
- AddHandler cgi-script cgi pl
-
もしくは、あるディレクトリのすべてのファイルが CGI プログラムと - みなされるようにしたいなら、以下の設定で実現することができます:
- -
- Options +ExecCGI
- SetHandler cgi-script
-
これらのディレクティブが有効になるためには、
- AllowOverride Options
と AllowOverride
- FileInfo
が有効である必要があることに注意してください。
CGI プログラムと設定のよりまとまった説明は CGI チュートリアルを参照してください。
- -設定ディレクティブを .htaccess
ファイルに書いたけれども、
- 期待した効果が得られないときには、いくつかの原因が考えられます。
一番よくあることは、設定ディレクティブが考慮されるようには
- AllowOverride
が設定されていない
- というものです。該当のファイルのスコープに AllowOverride None
- が設定されていないことを確認してください。これを調べるための良い方法は、
- .htaccess
ファイルにごみを書いて、リロードすることです。
- サーバのエラーが生成されないときは、ほぼ確実に AllowOverride
- None
が設定されている状態になっています。
そうではなく、文書をアクセスしようとしたときにエラーが発生している
- ときは、Apache のエラーログを調べてください。.htaccess
ファイルで
- 使用されたディレクティブが許可されていない、ということを知らせている
- 可能性が高いです。または、構文の間違いがあることを述べているかもしれません。
- その場合にはまずそれを修正する必要があります。
Apache HTTP 泣若 若吾с 2.3
+.htaccess
<ゃc罸荐絎紊眼号
+箴障
∫c≪吾ャ若 | ∫ccc |
---|---|
.htaccess
<ゃ (h┃絎<ゃ)
+ c罸荐絎紊眼号箴障cc
+ 吾<ゃc臀сc
+ 泣c鴻ccс障
.htaccess
<ゃャ翫
+ AccessFileName
cc
+ 篏帥c紊眼с障箴違<ゃ .config
+ 翫篁ヤ荐絎泣若荐絎<ゃャ
+ с障:
+ AccessFileName .config
+
筝.htaccess
<ゃ罕
+ 筝肢┃絎<ゃ
+ с<ゃ吾сcc AllowOverride
cc羆冴障障
+ cc.htaccess
<ゃ
+ 吾cc筝с
+ cc眼弱篏ф絎障
+ .htaccess
吾сccс違
+ 茯吾筝吾.htaccess 吾с
+ AllowOverride
ゃ絎障
箴違AddDefaultCharset
cc茯
+ 荀.htaccess
<ゃс篏睡荐怨
+ 障 (cc网荀潟潟鴻吾
+ 茵荀) 筝吾吾茵
+ FileInfo
障с.htaccess
筝
+ cc鴻絨
+ AllowOverride FileInfo
荐絎綽荀障
cc .htaccess
<ゃ吾с
+ cc茯「".htaccess"
+ 潟潟鴻茵茯帥鴻
筝泣若筝肢┃絎<ゃ≪祉鴻с翫ゃ
+ .htaccess
<ゃ篏睡罐球帥
+ 筝筝箴違若区荐若絽吾 .htaccess
<ゃ
+ 茵違茯よВ綺障c障障c
+ 障若区荐若荐絎泣若筝肢┃絎<ゃ吾с
+ 絎鴻荐絎号с
.htaccess
<ゃ潟潟潟箴c罸
+ 荐絎茵泣若激鴻 root ≪祉号┤c
+ 翫推戎鴻с泣若膊∞紫荐絎紊眼茵
+ 若吟 .htaccess
<ゃ篏帥c
+ ц┃絎紊眼茵荐怨鴻с
+ 鴻ISP 茲違若吟泣ゃ筝ゃ激潟с鴻
+ 若吟荐絎紊眼с障障
純с .htaccess
<ゃ篏睡
+ 帥.htaccess
<ゃ吾
+ 鴻荐絎泣若筝肢┃絎<ゃ <Directory>
祉激с潟у茵
+ с障
.htaccess
<ゃ篏睡帥宴筝祉篋ゃ障
筝ょ泣若ц純馹сAllowOverride
cc
+ .htaccess
<ゃ荐絎荐怨翫Apache
+ c .htaccess
<ゃ「障
+ с.htaccess
<ゃ荐怨絎篏睡
+ ≪ц純篏筝障! 障.htaccess
+ <ゃ吾鴻綺茯粋昭障障
Apache 鴻cc鴻
+ 筝篏c .htaccess
<ゃ「綽荀
+ 羈(cc号
+ с)с/www/htdocs/example
+ <ゃ鴻Apache 篁ヤ<ゃ茯帥鴻障
+ /.htaccess
+ /www/.htaccess
+ /www/htdocs/.htaccess
+ /www/htdocs/example/.htaccess
+
сc<ゃ吾≪祉鴻絲障
+ 筝箴<ゃ障c鎕с菴遵<ゃ激鴻
+ ≪祉鴻茵障(.htaccess
+ /
絲障鴻c翫сc
+ 羈)
篋ょ祉ャcс若吟泣若荐絎紊眼
+ 荐怨障с荳膊∞с紊眼
+ 障若吟号┤筝
+ 罎荐障若吟筝罔綽荀絨
+ 篏茵泣若怨醇с蕭
+ 羈腆阪若吟腮綺罔筝腆冴
+ AllowOverride
+ 篏荐絎∫c吾腓冴с
+ 緇羞隙恒c羝
+ с障
сcc吾 .htaccess
+ /www/htdocs/example
臀cc
+ 筝祉泣若荐絎 Directory 祉激с
+ <Directory /www/htdocs/example>
吾
+ 絎膈箴<с:
/www/htdocs/example
.htaccess
<ゃ:
/www/htdocs/example
.htaccess <ゃ
+ 絎
+ AddType text/example .exm
+
httpd.conf 祉激с
+ file
+ <Directory /www/htdocs/example>
+
+ AddType text/example .exm
+
+ </Directory>
+
荐絎泣若荐絎<ゃ吾鴻若潟鴻 + 篏筝絨障<ゃ鴻綺 + 茯粋昭障篁cApache 莎桁 1 茯粋昭 + с
+ +AllowOverride
cc
+ ゃ none
荐絎 .htaccess
<ゃ
+ 篏睡絎≦鴻с障
+ AllowOverride None
+
.htaccess
<ゃ荐絎cc .htaccess
+ <ゃ絖c泣c鴻障
+ 筝絮ゃc .htaccess
<ゃ
+ 絖荀紊усcc憗
+ 障сc .htaccess
+ c若筝絮ゃ .htaccess
<ゃ
+ 荐絎筝吾障 .htaccess
+ 筝絮ゃф吾cc筝吾筝祉泣若荐絎<ゃ
+ 荐絎筝吾障
箴:
+ +c /www/htdocs/example1
篁ヤ絎鴻
+ .htaccess
<ゃ障:
+ Options +ExecCGI
+
(羈: .htaccess
+ <ゃ "Options
" cc鴻
+ "AllowOverride Options
" 鴻綽荀障)
c /www/htdocs/example1/example2
+ 篁ヤ .htaccess
<ゃ障:
+ Options Includes
+
篋ゃ .htaccess
c
+ /www/htdocs/example1/example2
с CGI 絎茵
+ 荐怨障Options Includes
帥
+ 劫<鴻篁ュ荐絎筝吾с
As discussed in the documentation on Configuration Sections,
+ .htaccess
files can override the <Directory>
sections for
+ the corresponding directory, but will be overriden by other types
+ of configuration sections from the main configuration files. This
+ fact can be used to enforce certain configurations, even in the
+ presence of a liberal AllowOverride
setting. For example, to
+ prevent script execution while allowing anything else to be set in
+ .htaccess
you can use:
祉激с潟荐絎
+ 荐莠.htaccess
<ゃ篏帥c
+ <Directory>
+ 祉激с潟荐絎c罸筝吾с障
+ <ゃ活┃絎<ゃ筝篁腮蕁荐絎祉激с潟c
+ 筝吾障
+ 劫彰篏帥c
+ AllowOverride
+ ц怨墾蕭荐絎c劫荐絎腆阪
+ с障箴違CGI 鴻絎茵
+ 筝荐怨ゃ.htaccess
с篁
+ 荐絎с翫罨<с障 :
+<Directory />
+
+Allowoverride All
+
+</Directory>
+
+<Location />
+
+Options +IncludesNoExec -ExecCGI
+
+</Location>
+
茯荐若号ャ贋・ャс違罨<
+ ャc荀с茯よВ鴻若茯荐若茵
+ .htaccess
<ゃ篏帥綽荀障
+ 罩c障筝祉泣若荐絎<ゃ <Directory>
祉激с潟
+ 茯荐主cc吾鴻ィ絅号с.htaccess
+ <ゃ筝祉泣若荐絎<ゃ紊眼с推戎鴻с
+ .htaccess
<ゃ篏帥鴻сや戎鴻с
+ ゃ 筝с
篁ヤ泣障筝с .htaccess
篏睡
+ 障綽荀翫罨<帥
+ 障
.htaccess
<ゃ絎:
+ AuthType Basic
+ AuthName "Password Required"
+ AuthUserFile /www/passwords/password.file
+ AuthGroupFile /www/passwords/group.file
+ Require Group admins
+
cc鴻
+ AllowOverride AuthConfig
鴻с
+ 羈
茯荐若粋ゃ 茯荐若ャ若≪ + с
+筝ゃ .htaccess
<ゃ羈
+ 劫c SSI 鴻с帥c
+ .htaccess
<ゃ篁ヤ荐絎cc吾
+ с障:
+ Options +Includes
+ AddType text/html shtml
+ AddHandler server-parsed shtml
+
cc鴻
+ AllowOverride Options
AllowOverride
+ FileInfo
鴻c綽荀羈
障障c SSI 茯 SSI ャ若≪ + с
+緇劫c CGI 違絎茵荐怨 + с篁ヤ荐絎цс障:
+ +
+ Options +ExecCGI
+ AddHandler cgi-script cgi pl
+
c鴻<ゃ CGI 違 + 帥篁ヤ荐絎у憗с障:
+ +
+ Options +ExecCGI
+ SetHandler cgi-script
+
cc鴻
+ AllowOverride Options
AllowOverride
+ FileInfo
鴻с綽荀羈
CGI 違荐絎障障c茯 CGI ャ若≪с
+ +荐絎cc .htaccess
<ゃ吾
+ 緇号緇ゃ障
筝荐絎cc
+ AllowOverride
荐絎
+ с荅峨<ゃ鴻潟若 AllowOverride None
+ 荐絎腆肴茯帥鴻号
+ .htaccess
<ゃ帥吾若с
+ 泣若若祉主∈絎 AllowOverride
+ None
荐絎倶c障
с吾≪祉鴻若榊
+ Apache 若違茯帥鴻.htaccess
<ゃ
+ 篏睡cc荐怨ャ
+ 醇с蕭с障罕菴違鴻障
+ 翫障篆罩c綽荀障
Apache HTTP サーバ バージョン 2.3
-認証とは、誰かが自分は誰であるかを名乗っているものを検証する - 処理のことです。承認とは、誰かが望みの場所に辿り着けたり、 - 望みの情報を手に入れたりすることを許可する処理のことです。
- -参照: 認証、承認、アクセス制御
-CGI (Common Gateway Interface) はウェブサーバが外部のコンテンツ - 生成プログラムとどのように相互動作をするかを定義します。 - その外部プログラムは通常 CGI プログラムや CGI スクリプトと呼ばれます。 - CGI はウェブサイトに動的なコンテンツを追加するための、 - 一番単純でよく使われている方法です。この文書は Apache ウェブサーバに - CGI を設定し、CGI プログラムを書き始めるためのイントロダクションです。
- -参照: CGI: 動的コンテンツ
-.htaccess
ファイル.htaccess
ファイルはディレクトリ毎に設定を変更するための
- 方法を提供します。設定ディレクティブが書かれたファイルが、あるドキュメント
- ディレクトリに置かれると、ディレクティブはそのディレクトリと
- すべてのサブディレクトリに適用されます。
参照: .htaccess
ファイル
SSI (Server Side Includes) は HTML ページ中に書かれるディレクティブで、 - ページが送られる時にサーバにより評価されます。これにより、ページ全体を - CGI プログラムで生成したり、他の動的な技術を使うことなく、既存の HTML - ページに動的に生成された内容を付加することができます。
- - -Apache HTTP 泣若 若吾с 2.3
+茯荐若茯違茯違с箙c罎荐若 + с粋茯違帥贋莨帥 + 帥宴ャ荐怨с
+ + +CGI (Common Gateway Interface) с泣若紊潟潟潟 + 違娯篏絎臂障 + 紊違絽 CGI 違 CGI 鴻若違障 + CGI с泣ゃ潟潟潟菴遵 + 筝膣с鋎帥号с吾 Apache с泣若 + CGI 荐絎CGI 違吾紮ゃ潟激с潟с
+ +: CGI: 潟潟潟
+.htaccess
<ゃ.htaccess
<ゃc罸荐絎紊眼
+ 号箴障荐絎cc吾<ゃャ<潟
+ c臀ccc
+ 鴻泣c障
SSI (Server Side Includes) HTML 若娯賢吾ccс + 若吾泣若荅箴<障若後篏 + CGI 違х篁茵篏帥√ HTML + 若吾絎鴻篁с障
+ + +Apache HTTP サーバ バージョン 2.3
-複数のユーザのいるシステムでは、UserDir
ディレクティブを使って
- 各ユーザがホームディレクトリにウェブサイトを構築できるように設定することが
- 可能です。URL http://example.com/~username/
を訪れた人は
- "username
" というユーザの UserDir
ディレクティブで指定された
- サブディレクトリからコンテンツを得ることになります。
関連モジュール | 関連ディレクティブ |
---|---|
UserDir
ディレクティブは
- ユーザ毎のコンテンツが読み込まれるディレクトリを指定します。
- このディレクティブはいろいろ違った形式を取ることができます。
スラッシュで始まらないパスが与えられたときは、ユーザのホームディレクトリ - からの相対パスとみなされます。次の設定があったときに:
- -
- UserDir public_html
-
URL http://example.com/~rbowen/file.html
は
- パス /home/rbowen/public_html/file.html
へ
- 変換されます。
パスがスラッシュで始まるときは、ディレクトリパスはそのパスに - ユーザ名を加えたものからなります。次の設定のとき:
- -
- UserDir /var/html
-
URL http://example.com/~rbowen/file.html
は
- パス /var/html/rbowen/file.html
へ変換されます。
アスタリスク (*) を含むパスが指定されたときは、アスタリスクを - ユーザ名で置換したものが使用されます。このような設定だと:
- -
- UserDir /var/www/*/docs
-
URL http://example.com/~rbowen/file.html
は
- パス /var/www/rbowen/docs/file.html
へ変換されます。
UserDir のドキュメントに示されている構文を使うことで、 - どのユーザがこの機能を使うことができるかを制限することができます:
- -
- UserDir enabled
- UserDir disabled root jro fish
-
上の設定は dissabled
文のユーザ以外のすべてのユーザに
- 対して UserDir の機能を有効にします。同様にして、以下のように
- 数名のユーザ以外に対してこの機能を無効にすることもできます:
- UserDir disabled
- UserDir enabled rbowen krietz
-
他の例は UserDir
- の説明を参照してください。
それぞれのユーザに専用の cgi-bin ディレクトリを与えるために、
- <Directory>
- を使ってユーザのホームディレクトリの指定された領域に対して CGI を有効に
- することができます。
- <Directory /home/*/public_html/cgi-bin/>
- Options ExecCGI
- SetHandler cgi-script
- </Directory>
-
そして、UserDir
が
- public_html
に設定されていると仮定すると、
- そのディレクトリの CGI プログラム example.cgi
- は以下の様に呼び出されることができます:
- http://example.com/~rbowen/cgi-bin/example.cgi
-
ユーザに彼らのウェブ空間でのサーバの設定の変更を許可する場合、
- ユーザは .htaccess
ファイルを使って設定を変更する必要があります。
- AllowOverride
の値を
- ユーザが変更することを許可したいディレクティブに対して十分なものに
- 設定していることを確認してください。この機能がどのようにして動作しているか
- の詳細は .htaccess チュートリアル を読んで
- ください。
Apache HTTP 泣若 若吾с 2.3
+茲違若吟激鴻сUserDir
cc篏帥c
+ 若吟若cс泣ゃ罕膀с荐絎
+ 純сURL http://example.com/~username/
荐篋冴
+ "username
" 若吟 UserDir
ccф絎
+ 泣c潟潟潟緇障
∫c≪吾ャ若 | ∫ccc |
---|---|
UserDir
cc
+ 若倶潟潟潟茯粋昭障c絎障
+ ccc綵√с障
鴻激ャу障鴻筝若吟若c + 後障鴻帥障罨<荐絎c:
+ +
+ UserDir public_html
+
URL http://example.com/~rbowen/file.html
+ /home/rbowen/public_html/file.html
+ 紊障
鴻鴻激ャу障c鴻鴻 + 若九障罨<荐絎:
+ +
+ UserDir /var/html
+
URL http://example.com/~rbowen/file.html
+ /var/html/rbowen/file.html
後障
≪鴻帥鴻 (*) 鴻絎≪鴻帥鴻 + 若九х舟篏睡障荐絎:
+ +
+ UserDir /var/www/*/docs
+
URL http://example.com/~rbowen/file.html
+ /var/www/rbowen/docs/file.html
後障
UserDir ャ<潟腓冴罕篏帥с + 若吟罘純篏帥с狗с障:
+ +
+ UserDir enabled
+ UserDir disabled root jro fish
+
筝荐絎 dissabled
若銀札紊鴻若吟
+ 絲障 UserDir 罘純鴻障罕篁ヤ
+ 医若銀札紊絲障罘純≦鴻с障:
+ UserDir disabled
+ UserDir enabled rbowen krietz
+
篁箴 UserDir
+ 茯с
若吟絨 cgi-bin c筝
+ <Directory>
+ 篏帥c若吟若c絎絲障 CGI 鴻
+ с障
+ <Directory /home/*/public_html/cgi-bin/>
+ Options ExecCGI
+ SetHandler cgi-script
+ </Directory>
+
UserDir
+ public_html
荐絎篁絎
+ c CGI 違 example.cgi
+ 篁ヤ罕若喝冴с障:
+ http://example.com/~rbowen/cgi-bin/example.cgi
+
若吟綵若с腥咲с泣若荐絎紊眼荐怨翫
+ 若吟 .htaccess
<ゃ篏帥c荐絎紊眼綽荀障
+ AllowOverride
ゃ
+ 若吟紊眼荐怨cc絲障
+ 荐絎腆肴罘純篏
+ 荅括完 .htaccess ャ若≪ 茯
+
Apache HTTP サーバ バージョン 2.3
-サーバサイドインクルードによって、既存の HTML -ドキュメントに動的なコンテンツを追加することができます。
-関連モジュール | 関連ディレクティブ |
---|---|
この記事は、通常は単に SSI と呼ばれる Server Side Includes - を扱います。この記事においては、サーバでの SSI を許可するための設定と、 - 現在の HTML ページに動的なコンテンツを加えるためのいくつかの基本的な - SSI 技術を紹介します。
- -記事の後半では、SSI ディレクティブで SSI - と共に実行することができる条件文のような - 幾分高度な事柄について述べています。
- -SSI (Server Side Includes) は、HTML - ページ中に配置されるディレクティブであり、 - サーバでページを提供する時に評価されます。SSI は、CGI - プログラムやその他の動的な技術で全てのページを提供せずに、 - 動的に生成されたコンテンツを現在の HTML ページに加えます。
- -どういう場合に SSI を使い、どういう場合にプログラムで - ページを完全に生成するかは、ページのうちどの程度が静的であり、 - ページが提供されるたびに再計算する必要がどの程度あるかで通常は決定します。 - SSI は現在時刻のような小さい情報を加えるにはうってつけの方法です。 - しかし、そのページのほとんどの部分が提供時に生成される場合は、 - 他の方法を探す必要があります。
-サーバで SSI を許可するには、httpd.conf
- ファイルまたは .htaccess
- ファイルに次のディレクティブを指定する必要があります:
- Options +Includes
-
この指定は、ファイルを SSI
- ディレクティブで解析させることを許可するということを Apache
- に伝えます。ほとんどの設定ではお互いを上書きできる、複数の
- Options
があることに
- 注意してください。おそらく、設定が最後に評価されることを
- 保証されるために、SSI を使用したいディレクトリに Options
- ディレクティブを適用する必要があるでしょう。
全てのファイルが SSI
- ディレクティブで解析されるというわけではありません。
- どのファイルが解析されるかを Apache に伝える必要があります。
- これを行なうには二つ方法があります。
- 次のディレクティブを使うことで、例えば .shtml
- のような特別なファイル拡張子を持つファイルを解析するよう
- Apache に伝えることができます:
- AddType text/html .shtml
- AddOutputFilter INCLUDES .shtml
-
この方法の欠点は、もし現在のページに SSI ディレクティブを加えたい場合、
- それらのディレクティブが実行されるように
- .shtml
拡張子にするため、そのページの名前と、
- そのページへの全てのリンクを変更しなければならないことです。
もう一つの方法は、XBitHack
- ディレクティブを使用することです:
- XBitHack on
-
XBitHack
- は、ファイルの実行ビットが立っている場合、
- SSI ディレクティブにより解析することを Apache に伝えます。
- 従って、SSI ディレクティブを現在のページに加えるためには、
- ファイル名を変更しなくてもよく、単に chmod
- を使用してファイルを実行可能にするだけで済みます。
- chmod +x pagename.html
-
行なうべきではないことに関する短いコメント。時々誰かが、全ての
- .html
ファイルを SSI で解析するよう Apache に伝えれば、
- わざわざ .shtml
というファイル名にする必要がないといって
- 薦めるのを見ることでしょう。こういう人たちは、おそらく
- XBitHack
- について聞いたことがないのでしょう。
- この方法について注意することは、たとえ SSI
- ディレクティブを全く含まない場合でも、Apache がクライアントに
- 送る全てのファイルを最後まで読み込ませることになります。
- この方法はかなり処理を遅くするものであり、良くないアイデアです。
もちろん、Windows ではそのような実行ビットをセット - するようなものはありませんのでオプションが少し制限されています。
- -デフォルトの設定では、Apache は SSI ページについて最終変更時刻や - コンテンツの長さを HTTP ヘッダに送りません。 - 動的なコンテンツであるため、それらの値を計算するのが難しいからです。 - このためドキュメントがキャッシュされなくなり、 - 結果としてクライアントの性能が遅くなったように感じさせることになります。 - これを解決する方法が二つあります:
- -XBitHack Full
設定を使用する。
- この設定により、もともと要求されたファイルの時刻を参照し、
- 読み込まれるファイルの変更時刻を無視して最終変更時刻を決定するよう
- Apache に伝えます。SSI ディレクティブは以下の文法で記述します:
-
- <!--#element attribute=value attribute=value ... -->
-
HTML のコメントのような書式をしているので、もし SSI - を正しく動作可能にしなければ、ブラウザはそれを無視するでしょう。 - しかし、HTML ソース中では見えます。もし SSI を正しく設定したなら、 - ディレクティブはその結果と置き換えられます。
- -element はたくさんあるものから一つ指定することができます。 - 指定できるものの大多数については、次回もう少し詳しく説明します。 - ここでは、SSI で行なうことができる例をいくつか示します。
- -
- <!--#echo var="DATE_LOCAL" -->
-
echo
要素は単に変数の値を出力します。
- CGI プログラムに利用可能な環境変数の全ての
- セットを含む多くの標準変数があります。また、set
- 要素を用いることで、独自の変数を定義することができます。
-
出力される日付の書式が好きではない場合、その書式を修正するために、
- config
要素に timefmt
- 属性を使用することができます。
- <!--#config timefmt="%A %B %d, %Y" -->
- Today is <!--#echo var="DATE_LOCAL" -->
-
- This document last modified <!--#flastmod file="index.html" -->
-
この要素も timefmt
- フォーマットの設定に従います。
これは、全ての人のお気に入りである ``ヒットカウンタ'' のような - CGI プログラムの結果を出力する SSI - のより一般的な使用のうちの一つです。
- -
- <!--#include virtual="/cgi-bin/counter.pl" -->
-
以下は、SSI を使用して HTML - ドキュメントにおいてできることのいくつかの特別な例です。
- -先に、ドキュメントが最後に変更されたのはいつかを - ユーザに通知するために SSI を使用することができることを述べました。 - しかしながら、実際の方法は、いくぶん問題のままにしておきました。 - HTML ドキュメントに配置された次のコードは、ページにそのような - タイムスタンプを入れるでしょう。もちろん、上述のように、 - SSI を正しく動作可能にしておく必要があります。
-
- <!--#config timefmt="%A %B %d, %Y" -->
- This file last modified <!--#flastmod file="ssi.shtml" -->
-
もちろん、ssi.shtml
- の部分を実際の当該ファイル名と置き換える必要があります。
- もし、あらゆるファイルに張ることができる一般的なコードを探しているなら、
- これは不便であるかもしれません。おそらくその場合は、
- そうする代わりに変数 LAST_MODIFIED
- を使用したいと考えるでしょう:
- <!--#config timefmt="%D" -->
- This file last modified <!--#echo var="LAST_MODIFIED" -->
-
timefmt
- 書式についてのより詳細については、お好みの検索サイトに行き、
- strftime
で検索してみてください。文法は同じです。
もし数ページを超えるページを持つサイトを管理しているならば、 - 全ページに対して変項を行なうことが本当に苦痛となり得ることが - 分かるでしょう。全てのページに渡ってある種の標準的な外観を - 維持しようとしているならば特にそうでしょう。
- -ヘッダやフッタ用の挿入用ファイルを使用することで、
- このような更新にかかる負担を減らすことができます。
- 一つのフッタファイルを作成し、それを include
- SSI コマンドで各ページに入れるだけで済みます。include
- 要素は、file
属性または virtual
- 属性のいずれかを使用してどのファイルを挿入するかを決めることができます。
- file
属性は、カレントディレクトリからの相対パスで示された
- ファイルパスです。
- それは / で始まる絶対ファイルパスにはできず、また、そのパスの一部に ../
- を含むことができないことを意味します。virtual
- 属性は、おそらくより便利だと思いますが、提供するドキュメントからの相対
- URL で指定すべきです。それは / で始めることができますが、
- 提供するファイルと同じサーバ上に存在しなくてはなりません。
- <!--#include virtual="/footer.html" -->
-
私は最後の二つを組み合わせて、LAST_MODIFIED
- ディレクティブをフッタファイルの中に置くことがよくあります。
- SSI ディレクティブは、挿入用のファイルに含ませたり、
- 挿入ファイルのネストをしたりすることができます。すなわち、
- 挿入用のファイルは他のファイルを再帰的に挿入することができます。
時刻書式を config
で設定できることに加えて、
- 更に二つ config
で設定することができます。
通常、SSI ディレクティブで何かがうまくいかないときは、 - 次のメッセージが出力されます。
-
- [an error occurred while processing this directive]
-
このメッセージを他のものにしたい場合、config
- 要素の errmsg
属性で変更することができます:
- <!--#config errmsg="[It appears that you don't know how to use SSI]" -->
-
おそらく、エンドユーザはこのメッセージを決して見ることはありません。 - なぜなら、そのサイトが生きた状態になる前に SSI ディレクティブに関する - 全ての問題を解決しているはずだからです。(そうですよね?)
- -そして、config
において sizefmt
- 属性を使用することで、
- 返されるファイルサイズの書式を設定することができます。
- バイト数には bytes
を、適当に Kb や Mb
- に短縮させるには abbrev
を指定することができます。
今後数ヶ月のうちに、小さな CGI プログラムと SSI
- を使用する記事を出したいと考えています。ここではそれとは別に、
- exec
要素によって行なうことができることを示します。
- SSI にシェル (正確には /bin/sh
。Win32 ならば DOS シェル)
- を使用してコマンドを実行させることができます。
- 下記の例では、ディレクトリリスト出力を行ないます。
- <pre>
- <!--#exec cmd="ls" -->
- </pre>
-
Windows 上では、
-
- <pre>
- <!--#exec cmd="dir" -->
- </pre>
-
Windows 上では、このディレクティブによっていくつかの奇妙な
- 書式に気づくでしょう。なぜなら dir
の出力が文字列
- ``<dir
>'' を含み、ブラウザを混乱させるからです。
この機能は非常に危険であり、どんなコードでも exec
- タグに埋め込まれてしまえば実行することに注意してください。例えば
- `` ゲストブック '' のように、もし、
- ユーザがページの内容を編集できる状況にあるならば、
- この機能を確実に抑制してください。Options
- ディレクティブの IncludesNOEXEC
引数を指定することで、
- SSI は許可するけれど exec
- 機能は許可しないようにすることができます。
コンテンツを出力することに加え、Apache SSI は変数を設定し、 - そして比較と条件分岐にその変数を使用できる機能を提供しています。 -
- -この記事で述べた大部分の機能は、Apache 1.2 - 以降を使用している場合のみ利用可能です。もちろん、もし Apache 1.2 - 以降を使用してない場合、直ちにアップグレードする必要があります。 - さぁ、今それを行ないなさい。それまで待っています。
- - -set
ディレクティブを使用して、
- 後で使用するために変数を設定することができます。
- これは後の説明で必要になるので、ここでそれについて述べています。
- 文法は以下のとおりです:
- <!--#set var="name" value="Rich" -->
-
このように単純に文字どおりに設定することに加え、
- 環境変数や上記の変数
- (例えば LAST_MODIFIED
のような)
- を含む他のあらゆる変数を値を設定するのに使用することができます。
- 変数名の前にドル記号 ($) を使用することで、
- それがリテラル文字列ではなくて変数であることを示します。
- <!--#set var="modified" value="$LAST_MODIFIED" -->
-
ドル記号 ($) を文字として変数の値に入れるには、 - バックスラッシュによってドル記号をエスケープする必要があります。
-
- <!--#set var="cost" value="\$100" -->
-
最後になりますが、長い文字列の中に変数を置きたい場合で、 - 変数名が他の文字とぶつかる可能性があり、 - それらの文字について混乱してしまう場合、この混乱を取り除くため、 - 変数名を中括弧で囲むことができます - (これについての良い例を示すのは難しいのですが、 - おそらく分かっていただけるでしょう)。 -
-
- <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
-
さて、変数を持っていて、
- それらの値を設定して比較することができるのですから、
- 条件を表すためにそれらを使用することができます。これにより
- SSI はある種の小さなプログラミング言語になっています。
- mod_include
は条件を表現するために if
,
- elif
, else
, endif
- 構造を提供しています。これによって、
- 一つの実際のページから複数の論理ページを効果的に生成することができます。
条件構造は以下のとおりです:
-
- <!--#if expr="test_condition" -->
- <!--#elif expr="test_condition" -->
- <!--#else -->
- <!--#endif -->
-
test_condition
- はあらゆる種類の論理的比較をすることができます。
- 値を比較したり、その値が ``真'' かどうかを評価します
- (空でないなら与えられた文字列は真です)。
- 利用可能な比較演算子の全てのリストについては、
- mod_include
ドキュメンテーションを参照してください。
- ここでは、この構造をどう使用するかの例をいくつか示します。
設定ファイルで次の行を記述します:
-
- BrowserMatchNoCase macintosh Mac
- BrowserMatchNoCase MSIE InternetExplorer
-
これはクライアントが Macintosh - 上でインターネットエクスプローラが動いている場合、環境変数 - ``Mac'' と ``InternetExplorer'' を真と設定します。
- -次に、SSI が可能になったドキュメントで以下を行ないます: -
-
- <!--#if expr="${Mac} && ${InternetExplorer}" -->
- Apologetic text goes here
- <!--#else -->
- Cool JavaScript code goes here
- <!--#endif -->
-
Mac 上の IE に対して何か思うところがあるわけでありません。 - 他では実行できているいくつかの JavaScript を Mac 上の IE - で実行させるのに、先週数時間苦労したというだけのことです。 - 上の例はその暫定的な対処方法です。
- -他のどんな変数 (あなたが定義するもの、
- または普通の環境変数のいずれか) も、条件文に使用することができます。
- Apache は SetEnvIf
ディレクティブや他の関連
- ディレクティブを使用して環境変数を設定することができます。
- この機能により、CGI
- に頼ることなくかなり複雑な動的なことをさせることができます。
SSI は確かに CGI - や動的なウェブページを生成する他の技術に代わるものではありません。 - しかし、たくさんの余分な作業をせずに、 - 少量の動的なコンテンツを加えるにはすぐれた方法です。
-Apache HTTP 泣若 若吾с 2.3
+泣若泣ゃゃ潟若c√ HTML +ャ<潟潟潟潟菴遵с障
+∫c≪吾ャ若 | ∫ccc |
---|---|
荐篋絽吾 SSI 若違 Server Side Includes + 宴障荐篋泣若с SSI 荐怨荐絎 + 憜 HTML 若吾潟潟潟ゃ堺 + SSI 茵膣剛障
+ +荐篋緇сSSI cc SSI + 宴絎茵с>散 + 綛上蕭綺篋ゃ菴違鴻障
+ +SSI (Server Side Includes) HTML + 若娯賢臀ccс + 泣若с若吾箴荅箴<障SSI CGI + 違篁茵у若吾箴 + 潟潟潟憜 HTML 若吾障
+ +翫 SSI 篏帥翫違 + 若吾絎若吾<腮綺с + 若吾箴潟荐膊綽荀腮綺ч絽吾羆阪障 + SSI 憜祉絨宴cゃ号с + 若吾祉箴翫 + 篁号「綽荀障
+泣若 SSI 荐怨httpd.conf
+ <ゃ障 .htaccess
+ <ゃ罨<cc絎綽荀障:
+ Options +Includes
+
絎<ゃ SSI
+ ccцВ荐怨 Apache
+ 篌障祉荐絎с篋筝吾с茲違
+ Options
+ 羈荐絎緇荅箴<
+ 篆荐若SSI 篏睡c Options
+ cc綽荀с
<ゃ SSI
+ ccцВс障
+ <ゃ茹f Apache 篌綽荀障
+ 茵篋ゆ号障
+ 罨<cc篏帥с箴 .shtml
+ 劫ャ<ゃ≦宍絖ゃ<ゃ茹f
+ Apache 篌с障:
+ AddType text/html .shtml
+ AddOutputFilter INCLUDES .shtml
+
号罨鴻憜若吾 SSI cc翫
+ cc絎茵
+ .shtml
≦宍絖若吾
+ 若吾吾潟紊眼違с
筝ゃ号XBitHack
+ cc篏睡с:
+ XBitHack on
+
XBitHack
+ <ゃ絎茵腴c翫
+ SSI cc茹f Apache 篌障
+ 緇cSSI cc憜若吾
+ <ゃ紊眼 chmod
+ 篏睡<ゃ絎茵純ф帥障
+ chmod +x pagename.html
+
茵鴻с≪潟<潟茯違
+ .html
<ゃ SSI цВ Apache 篌違
+ .shtml
<ゃ綽荀c
+ 荀с篋冴<
+ XBitHack
+ ゃс
+ 号ゃ羈 SSI
+ cc障翫сApache ゃ≪潟
+ <ゃ緇障ц粋昭障障
+ 号с≪ゃ≪с
<Windows с絎茵祉 + 障с激с潟絨狗障
+ +荐絎сApache SSI 若吾ゃ腟紊贋祉 + 潟潟潟激 HTTP 障 + 潟潟潟сゃ荐膊cс + ャ<潟c激ャ + 腟ゃ≪潟ц純c障 + 茹f浦号篋ゃ障:
+ +XBitHack Full
荐絎篏睡
+ 荐絎荀羆<ゃ祉с
+ 茯粋昭障<ゃ紊贋祉∴腟紊贋祉羆阪
+ Apache 篌障SSI cc篁ヤ羈ц菴違障:
+
+ <!--#element attribute=value attribute=value ... -->
+
HTML 潟<潟後с SSI + 罩c篏純違吟∴с + HTML 純若剛賢с荀障 SSI 罩c頥絎 + cc腟臀障
+ +element 筝ゆ絎с障 + 絎с紊у違ゃ罨≦絨荅潟顄障 + сSSI цс箴ゃ腓冴障
+ +
+ <!--#echo var="DATE_LOCAL" -->
+
echo
荀膣紊違ゃ阪障
+ CGI 違純医紊違
+ 祉紊罔羣紊違障障set
+ 荀膣с紊違絎臂с障
+
阪ヤ後絅純с翫後篆罩c
+ config
荀膣 timefmt
+ 絮с篏睡с障
+ <!--#config timefmt="%A %B %d, %Y" -->
+ Today is <!--#echo var="DATE_LOCAL" -->
+
+ This document last modified <!--#flastmod file="index.html" -->
+
荀膣 timefmt
+ 若荐絎緇障
篋冴羂ャс ``潟'' + CGI 違腟阪 SSI + 筝篏睡<筝ゃс
+ +
+ <!--#include virtual="/cgi-bin/counter.pl" -->
+
篁ヤSSI 篏睡 HTML + ャ<潟сゃ劫ャ箴с
+ +ャ<潟緇紊眼ゃ + 若吟ャ SSI 篏睡с菴違鴻障 + 絎号吟馹障障障 + HTML ャ<潟臀罨<潟若若吾 + 帥ゃ鴻帥潟ャс<筝菴違 + SSI 罩c篏純鏆荀障
+
+ <!--#config timefmt="%A %B %d, %Y" -->
+ This file last modified <!--#flastmod file="ssi.shtml" -->
+
<ssi.shtml
+ 絎綵荅蚊<ゃ臀綽荀障
+ <ゃ綣泣с筝潟若「
+ 筝箴帥с障翫
+ 篁c紊 LAST_MODIFIED
+ 篏睡с:
+ <!--#config timefmt="%D" -->
+ This file last modified <!--#echo var="LAST_MODIFIED" -->
+
timefmt
+ 後ゃ荅括完ゃ絅純帥罎膣≪泣ゃ茵
+ strftime
ф膣≪帥羈с
違若吾莇若吾ゃ泣ゃ膊∞違 + 若吾絲障紊茵綵緇 + с若吾羝<c腮罔羣紊荀潟 + 膓亥鴻с
+ +睡水ョ<ゃ篏睡с
+ 贋違莢羝с障
+ 筝ゃ帥<ゃ篏 include
+ SSI 潟潟у若吾ャф帥障include
+ 荀膣file
絮с障 virtual
+ 絮с篏睡<ゃ水ャ羆冴с障
+ file
絮с潟c後障鴻хず
+ <ゃ鴻с
+ / у障腟九障<ゃ鴻с障鴻筝 ../
+ с潟障virtual
+ 絮с箴水障箴ャ<潟後
+ URL ф絎鴻с / ус障
+ 箴<ゃ泣若筝絖障
+ <!--#include virtual="/footer.html" -->
+
腱緇篋ゃ腟水LAST_MODIFIED
+ cc帥<ゃ筝臀障
+ SSI cc水ョ<ゃ障
+ 水ャ<ゃ鴻с障<
+ 水ョ<ゃ篁<ゃ絽亥水ャс障
紙後 config
ц┃絎с
+ 眼篋 config
ц┃絎с障
絽吾SSI ccт障 + 罨<<祉若吾阪障
+
+ [an error occurred while processing this directive]
+
<祉若吾篁翫config
+ 荀膣 errmsg
絮су眼с障:
+ <!--#config errmsg="[It appears that you don't know how to use SSI]" -->
+
潟若吟<祉若吾羆冴荀障 + 泣ゃ倶 SSI cc≪ + 馹茹f浦с(с?)
+ +config
sizefmt
+ 絮с篏睡с
+ 菴<ゃ泣ゃ冴後荐絎с障
+ ゃ違 bytes
綵 Kb Mb
+ 膰 abbrev
絎с障
篁緇違倶<絨 CGI 違 SSI
+ 篏睡荐篋冴障сャ
+ exec
荀膣c茵с腓冴障
+ SSI 激с (罩g∈ /bin/sh
Win32 DOS 激с)
+ 篏睡潟潟絎茵с障
+ 筝荐箴сc鴻阪茵障
+ <pre>
+ <!--#exec cmd="ls" -->
+ </pre>
+
Windows 筝с
+
+ <pre>
+ <!--#exec cmd="dir" -->
+ </pre>
+
Windows 筝сcccゃ絅絋
+ 後羂ャс dir
阪絖
+ ``<dir
>'' 帥吟羞隙恒с
罘純絽吾演冴с潟若с exec
+ 帥違莨若障障医茵羈箴
+ `` 蚊鴻 ''
+ 若吟若吾絎鴻膩с倶違
+ 罘純腆阪吟Options
+ cc IncludesNOEXEC
綣違絎с
+ SSI 荐怨 exec
+ 罘純荐怨с障
潟潟潟阪Apache SSI 紊違荐絎 + 罸莠>散絏紊違篏睡с罘純箴障 +
+ +荐篋ц唇鴻紊ч罘純Apache 1.2 + 篁ラ篏睡翫水純с< Apache 1.2 + 篁ラ篏睡翫眼<≪違若綽荀障 + 篁茵障уc障
+ + +set
cc篏睡
+ 緇т戎紊違荐絎с障
+ 緇茯у荀ссゃ菴違鴻障
+ 羈篁ヤс:
+ <!--#set var="name" value="Rich" -->
+
膣絖荐絎
+ 医紊筝荐紊
+ (箴 LAST_MODIFIED
)
+ 篁紊違ゃ荐絎篏睡с障
+ 紊医荐 ($) 篏睡с
+ 絖с紊違с腓冴障
+ <!--#set var="modified" value="$LAST_MODIFIED" -->
+
荐 ($) 絖紊違ゃャ + 鴻激ャc荐垩鴻宴若綽荀障
+
+ <!--#set var="cost" value="\$100" -->
+
緇障激絖筝紊違臀翫с + 紊医篁絖吟ゃ醇с + 絖ゃ羞隙恒障翫羞隙恒ゃ + 紊医筝綣су蚊с障 + (ゃ箴腓冴cс + cс) +
+
+ <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
+
紊違c
+ ゃ荐絎罸莠сс
+ >散茵篏睡с障
+ SSI 腮絨違潟域茯c障
+ mod_include
>散茵憗 if
,
+ elif
, else
, endif
+ 罕箴障c
+ 筝ゃ絎若吾茲違茫若吾号с障
>散罕篁ヤс:
+
+ <!--#if expr="test_condition" -->
+ <!--#elif expr="test_condition" -->
+ <!--#else -->
+ <!--#endif -->
+
test_condition
+ 腮蕁茫罸莠с障
+ ゃ罸莠ゃ ``'' 荅箴<障
+ (腥冴с筝絖с)
+ 純罸莠羲膊絖鴻ゃ
+ mod_include
ャ<潟若激с潟с
+ с罕篏睡箴ゃ腓冴障
荐絎<ゃф<茵荐菴違障:
+
+ BrowserMatchNoCase macintosh Mac
+ BrowserMatchNoCase MSIE InternetExplorer
+
ゃ≪潟 Macintosh + 筝сゃ潟帥若鴻若翫医紊 + ``Mac'' ``InternetExplorer'' 荐絎障
+ +罨<SSI 純cャ<潟т札筝茵障: +
+
+ <!--#if expr="${Mac} && ${InternetExplorer}" -->
+ Apologetic text goes here
+ <!--#else -->
+ Cool JavaScript code goes here
+ <!--#endif -->
+
Mac 筝 IE 絲障篏с障 + 篁с絎茵сゃ JavaScript Mac 筝 IE + у茵掩井眼с + 筝箴絎絲上号с
+ +篁紊 (絎臂
+ 障医紊違) >散篏睡с障
+ Apache SetEnvIf
cc篁∫
+ cc篏睡医紊違荐絎с障
+ 罘純CGI
+ 若茲с障
SSI 腆冴 CGI + с若吾篁茵篁cс障 + 篏篏罐 + 絨潟潟潟号с
+Apache HTTP サーバ バージョン 2.3
-リリースノート- - | How-To / チュートリアル- -その他- - |
Apache HTTP 泣若 若吾с 2.3
+How-To / ャ若≪+ +若堺+ + |
Apache HTTP サーバ バージョン 2.3
-この文書で扱う範囲は、Unix や Unix に類似したシステムでの - Apache のコンパイルとインストールです。 Windows における - コンパイルとインストールに関しては「Microsoft - Windows で Apache を使う」をご覧下さい。 - その他のプラットホームに関しては「プラットホーム」をご覧下さい。
- -Apache 2.0 では他の Open Source プロジェクトと同様、
- ビルド環境構築に libtool
と autoconf
- を使うようになっています。
マイナーバージョンからその次のバージョンにアップグレードする - (2.2.50 から 2.2.51 へ等) 場合は、まず - アップグレードをご覧下さい。
- -ダウンロード | - -$ lynx http://httpd.apache.org/download.cgi
- |
-
展開 | - -$ gzip -d httpd-NN.tar.gz |
-
設定 | - -$ ./configure --prefix=PREFIX
- |
-
コンパイル | - -$ make |
-
インストール | - -$ make install |
-
カスタマイズ | - -$ vi PREFIX/conf/httpd.conf |
-
テスト | - -$ PREFIX/bin/apachectl -k start
- |
-
NN は最新のバージョンナンバーに、
- PREFIX はインストールするサーバでのファイルシステムのパスに、
- 置き換えてください。PREFIX を指定しなかった場合は、
- デフォルトの /usr/local/apache2
になります。
Apache httpd のコンパイルとインストールに必要なものをはじめとして、 - コンパイルとインストールについては、次に詳しく記述されています。
-Apache のビルドには次のものが必要です:
- -PATH
には make
- といった基本的なビルドツールが含まれている必要があります。apxs
や
- dbmmanage
は
- Perl で書かれているので、Perl
- 5 インタプリタが必要になります (5.003 以降)。
- Perl インタプリタを複数インストールしている (たとえば全体のシステムの一部
- としてインストールされている Perl 4 と、自分で追加でインストールした
- Perl 5 があるなどの) 場合、--with-perl
オプション (下記参照)
- を使って configure
が意図したものを使うように
- 明示的に指定すると良いでしょう。
- configure
スクリプトで Perl 5 インタプリタが
- 見つからない場合は、この影響を受けるサポートスクリプトが使えなくなります。
- もちろん、Apache httpd のコンパイルとインストールは問題なく行えます。Apache HTTP サーバは Apache HTTP
- サーバダウンロードサイトからダウンロードできますし、
- 同じ場所に幾つかのミラーサイトもリストしています。
- UNIX に類似するシステムで Apache を使うユーザは、ソースを
- ダウンロードしてビルドしたほうが良いでしょう。
- ビルドの手順(下記)は簡単ですし、そのおかげでニーズに
- 見合ったカスタマイズを簡単にできます。
- さらに、バイナリのリリースはソースリリースよりも
- 遅れていることがよくあります。
- それでもバイナリをダウンロードしたのであれば、
- ディストリビューションの中にある INSSTALL.bindist
- ファイルの説明に従ってください。
ダウンロード後、ダウンロードしたものが Apache HTTP - サーバの完全で改竄されていないバージョンであることを - 検証することが重要です。これはダウンロードした tarball の PGP 署名を - テストすることによって検証します。 - この手順の詳細は ダウンロード - ページ にあり、さらに詳しい例は PGP の使用 - に記載されています。
- -Apache HTTPD の tarball - からソースファイルを展開して取り出すとは、 - 単なる圧縮の解除と tar の展開です:
- -
-$ gzip -d httpd-NN.tar.gz
-$ tar xvf httpd-NN.tar
-
配布用のソースコードがある現在いるディレクトリの下に、
- 新しいディレクトリが作られます。
- サーバをコンパイルする段階に進む前に、そのディレクトリに
- cd
で移動してください。
次のステップは、あなたのプラットホームと
- 個人的な要求に合うように Apache
- ソースツリーを設定することです。
- これは配布ディレクトリのルートディレクトリにある、
- configure
- スクリプトで行ないます。
- (Apache ソースツリーの未リリース
- 版をダウンロードした開発者は、次のステップに進む前に
- autoconf
とlibtool
- をインストールして buildconf
- を実行する必要があります。
- 公式リリースではこの作業は必要ありません。)
デフォルトオプションを使ってソースツリーを全て設定する
- のであれば、単純に ./configure
とタイプしてください。
- デフォルトオプションを変更できるように、configure
- には様々な変数やコマンドラインオプションが用意されています。
最も重要なオプションは、Apache がこの後でインストールされる位置
- --prefix
です。Apache は、このインストール位置に
- おいて正常に動作するように設定しなければならないからです。
- さらに詳細なファイル位置の制御は追加の 設定オプション
- でできます。
この時点で、モジュール を有効にしたり
- 無効にしたりすることで Apache 本体に含まれる 機能
- を指定できます。Apache 本体にはデフォルトで、モジュールの Base セットが
- 含まれます。その他のモジュールは
- --enable-module
オプションで
- 有効になります。ここで module はモジュールの名前で、
- つまりそれはモジュールの名前から mod_
文字列を取り除いた後に
- アンダースコアをダッシュで置換した文字列です。
- これとは別の方法で --enable-module=shared
- オプションを使って、モジュールを
- シェアードオブジェクト (DSO) -- 実行時にロードしたり
- アンロードしたりできる形式 -- としてコンパイルすることもできます。
- 同様に、--disable-module
オプションで
- Base モジュールを無効化することもできます。
- これらのオプションを使っているときに、もし指定したモジュールが存在しなくても
- configure
は警告を上げることなく、単純にオプションを
- 無視することに気をつけてください。
上記に加えて、configure
スクリプトに、
- コンパイラ、ライブラリ、ヘッダファイルの位置を追加情報として渡す
- 必要がある場合があります。このような場合には、環境変数あるいは
- コマンドラインオプションで configure
に渡します。
- 詳細に関しては configure
マニュアルページ
- をご覧ください。
ちょっとどんなことができるかを見せましょう。
- ここで典型的な例として、/sw/pkg/apache
- というインストールツリーでコンパイラとフラグを指定して、
- さらに二つの追加モジュール mod_rewrite
と
- mod_speling
を後で DSO
- メカニズムでロードするようにコンパイルしてみます:
- $ CC="pgcc" CFLAGS="-O2" \
- ./configure --prefix=/sw/pkg/apache \
- --enable-rewrite=shared \
- --enable-speling=shared
-
configure
を実行したら、システムの機能を
- テストしたり、後でサーバをコンパイルするために必要な Makefile
- を生成したりするのに数分間かかるでしょう。
これで Apache の様々なパーツをビルドすることができます。 - 次のコマンドを単純に実行するだけです:
- -$ make
基本的な設定をするのに数分かかりますが、 - あらかじめご了承ください。 - また、時間はハードウェアや有効にしたモジュールの数に - 大きく依存するでしょう。
-さて、設定したインストール PREFIX
- (前述の --prefix
オプションを参照)
- 以下にパッケージをインストールする段階になりました。
- 次のコマンドを実行してください:
$ make install
アップグレードする場合は、インストールでは設定ファイルや - ドキュメントファイルの上書きは行いません。
-次に PREFIX/conf/
以下にある 設定ファイルを編集して、
- Apache HTTP サーバをカスタマイズします。
$ vi PREFIX/conf/httpd.conf
docs/manual/ の Apache マニュアルをざっと見てください。 - または、http://httpd.apache.org/docs/trunk/ - にあるマニュアル最新版、設定ディレクティブに当たってみてください。
-次のコマンドを実行して Apache HTTP サーバを開始できます:
- -$ PREFIX/bin/apachectl -k start
URL http://localhost/
を通して最初のドキュメントに対する
- リクエストを発行する事ができるはずです。これで見える
- ウェブページは DocumentRoot
- 以下に置かれたもので、通常は
- PREFIX/htdocs/
でしょう。
- サーバを再び停止するには、
- 次のコマンドを実行します:
$ PREFIX/bin/apachectl -k stop
アップグレードでまず行なうべきことは、リリースアナウンスと
- ソースディストリビューションに入っている CHANGES
を読んで、
- 自身のサイトに対して影響を及ぼす変更点を探すことです。
- メジャーリリース間の変更をする場合 (例えば 1.3 から 2.0 へ、2.0 から 2.2 へ)
- は、コンパイル時や実行時の設定に大きな差異があるでしょうから、
- 手動の調整が必要になるでしょう。モジュールも全て、API
- の変更に合わせるためにアップグレードが必要になるでしょう。
マイナーバージョンから次のバージョンにアップグレードする場合
- (例えば 2.2.55 から 2.2.57 へ) は、もっと簡単です。
- make install
を実行しても今あるドキュメント、
- ログファイル、設定ファイルは上書きされません。
- さらに、マイナーバージョン間では configure
オプション、
- 実行時の設定、モジュール API に不整合が起こらないように、
- 開発者は最大限の努力をしています。
- 大抵の場合、同一の configure
コマンドライン、
- 同一の設定ファイル、モジュール全てが正常に動作するはずです。
マイナーバージョンでアップグレードする場合は、
- 既にインストールされているサーバの build
ディレクトリ内か、
- 以前インストールに使ったソースコードツリーの最上位ディレクトリ内にある、
- config.nice
ファイルを探してください。
- このファイルにはソースツリーを設定した時に使った
- configure
コマンドラインが、そのまま入っています。
- 次のバージョンにアップグレードする場合は config.nice
- ファイルを新しいバージョンのソースツリーにコピーし、
- 必要であればそれを編集した後に、次のように実行します。
- $ ./config.nice
- $ make
- $ make install
- $ PREFIX/bin/apachectl -k graceful-stop
- $ PREFIX/bin/apachectl -k start
-
--prefix
と異なるポート (Listen
ディレクティブで設定します)
- を使用することで、古いバージョンに影響を与えずに新しいバージョンを
- インストールし、実行できます。Apache HTTP 泣若 若吾с 2.3
+吾ф宴膀蚊Unix Unix 蕁篌若激鴻с + Apache 潟潟ゃゃ潟鴻若с Windows + 潟潟ゃゃ潟鴻若≪Microsoft + Windows Apache 篏帥荀т + 篁若≪若荀т
+ +Apache 2.0 с篁 Open Source 吾с罕
+ 医罕膀 libtool
autoconf
+ 篏帥c障
ゃ若若吾с潟罨<若吾с潟≪違若 + (2.2.50 2.2.51 悟) 翫障 + ≪違若荀т
+ +潟若 | + +$ lynx http://httpd.apache.org/download.cgi
+ |
+
絮 | + +$ gzip -d httpd-NN.tar.gz |
+
荐絎 | + +$ ./configure --prefix=PREFIX
+ |
+
潟潟ゃ | + +$ make |
+
ゃ潟鴻若 | + +$ make install |
+
鴻帥ゃ | + +$ vi PREFIX/conf/httpd.conf |
+
鴻 | + +$ PREFIX/bin/apachectl -k start
+ |
+
NN 違若吾с潟潟若
+ PREFIX ゃ潟鴻若泣若с<ゃ激鴻鴻
+ 臀PREFIX 絎c翫
+ /usr/local/apache2
障
Apache httpd 潟潟ゃゃ潟鴻若綽荀 + 潟潟ゃゃ潟鴻若ゃ罨<荅潟頥菴違障
+Apache 罨<綽荀с:
+ +PATH
make
+ c堺若障綽荀障apxs
+ dbmmanage
+ Perl ф吾сPerl
+ 5 ゃ潟帥帥綽荀障 (5.003 篁ラ)
+ Perl ゃ潟帥帥茲違ゃ潟鴻若 (医篏激鴻筝
+ ゃ潟鴻若 Perl 4 ц申сゃ潟鴻若
+ Perl 5 ) 翫--with-perl
激с (筝荐)
+ 篏帥c configure
潟篏帥
+ 腓榊絎с
+ configure
鴻 Perl 5 ゃ潟帥帥
+ 荀ゃ翫綵演帥泣若鴻篏帥障
+ <Apache httpd 潟潟ゃゃ潟鴻若馹頫障Apache HTTP 泣若 Apache HTTP
+ 泣若潟若泣ゃ潟若с障
+ 贋綛障ゃ若泣ゃ鴻障
+ UNIX 蕁篌若激鴻 Apache 篏帥若吟純若鴻
+ 潟若祉с
+ 鐚筝荐鐚膂≦сс若冴
+ 荀c鴻帥ゃ冴膂≦с障
+ ゃ若鴻純若鴻若鴻
+ 障
+ сゃ潟若с違
+ c鴻ャ若激с潟筝 INSSTALL.bindist
+ <ゃ茯緇c
潟若緇潟若 Apache HTTP + 泣若絎ф合若吾с潟с + 罎荐若荀с潟若 tarball PGP 臀峨 + 鴻c罎荐若障 + 荅括完 潟若 + 若 荅潟箴 PGP 篏睡 + 荐莠障
+ +Apache HTTPD tarball + 純若鴻<ゃ絮冴 + х軒茹iゃ tar 絮с:
+ +
+$ gzip -d httpd-NN.tar.gz
+$ tar xvf httpd-NN.tar
+
絽純若鴻潟若憜c筝
+ 違c篏障
+ 泣若潟潟ゃ罧級蚊c
+ cd
хЩ
罨<鴻若
+ 篋榊荀羆 Apache
+ 純若鴻若荐絎с
+ 絽c若c
+ configure
+ 鴻ц障
+ (Apache 純若鴻若若
+ 潟若肴罨<鴻蚊
+ autoconf
libtool
+ ゃ潟鴻若 buildconf
+ 絎茵綽荀障
+ 綣若鴻с篏罐綽荀障)
激с潟篏帥c純若鴻若荐絎
+ с違膣 ./configure
帥ゃ
+ 激с潟紊眼сconfigure
+ 罕紊違潟潟ゃ潟激с潟障
荀激с潟Apache 緇сゃ潟鴻若篏臀
+ --prefix
сApache ゃ潟鴻若篏臀
+ 罩e幻篏荐絎違с
+ 荅括完<ゃ篏臀九勝菴遵 荐絎激с
+ сс障
鴻с≪吾ャ若 鴻
+ ≦鴻 Apache 篏障 罘
+ 絎с障Apache 篏с≪吾ャ若 Base 祉
+ 障障篁≪吾ャ若
+ --enable-module
激с潟
+ 鴻障 module ≪吾ャ若с
+ ゃ障≪吾ャ若 mod_
絖ゃ緇
+ ≪潟若鴻潟≪激ャх舟絖с
+ ャ号 --enable-module=shared
+ 激с潟篏帥c≪吾ャ若
+ 激с≪若吾с (DSO) -- 絎茵若
+ ≪潟若с綵√ -- 潟潟ゃс障
+ 罕--disable-module
激с潟
+ Base ≪吾ャ若≦劫с障
+ 激с潟篏帥c絎≪吾ャ若絖
+ configure
茘筝膣激с潟
+ ∴羂ゃ
筝荐configure
鴻
+ 潟潟ゃゃ<ゃ篏臀菴遵宴羝<
+ 綽荀翫障翫医紊違
+ 潟潟ゃ潟激с潟 configure
羝<障
+ 荅括完≪ configure
ャ≪若
+ 荀с
<cс荀障
+ у後箴/sw/pkg/apache
+ ゃ潟鴻若若с潟潟ゃ違絎
+ 篋ゃ菴遵≪吾ャ若 mod_rewrite
+ mod_speling
緇 DSO
+ <冴с若潟潟ゃ帥障:
+ $ CC="pgcc" CFLAGS="-O2" \
+ ./configure --prefix=/sw/pkg/apache \
+ --enable-rewrite=shared \
+ --enable-speling=shared
+
configure
絎茵激鴻罘純
+ 鴻緇с泣若潟潟ゃ綽荀 Makefile
+ 医с
荐絎ゃ潟鴻若 PREFIX
+ (菴違 --prefix
激с潟)
+ 篁ヤ宴若吾ゃ潟鴻若罧級障
+ 罨<潟潟絎茵:
$ make install
≪違若翫ゃ潟鴻若с荐絎<ゃ + ャ<潟<ゃ筝吾茵障
+罨< PREFIX/conf/
篁ヤ 荐絎<ゃ膩
+ Apache HTTP 泣若鴻帥ゃ冴障
$ vi PREFIX/conf/httpd.conf
docs/manual/ Apache ャ≪c荀 + 障http://httpd.apache.org/docs/trunk/ + ャ≪亥荐絎cc綵c帥
+罨<潟潟絎茵 Apache HTTP 泣若紮с障:
+ +$ PREFIX/bin/apachectl -k start
URL http://localhost/
ャ<潟絲障
+ 鴻肴篋ссц
+ с若吾 DocumentRoot
+ 篁ヤ臀с絽吾
+ PREFIX/htdocs/
с
+ 泣若罩
+ 罨<潟潟絎茵障:
$ PREFIX/bin/apachectl -k stop
≪違若с障茵鴻若鴻≪潟鴻
+ 純若鴻c鴻ャ若激с潟ャc CHANGES
茯с
+ 荳泣ゃ絲障綵演帥若紊雁鴻「с
+ <吾c若若拷紊眼翫 (箴 1.3 2.0 吾2.0 2.2 )
+ 潟潟ゃ絎茵荐絎紊с綏違с
+ 茯炊眼綽荀с≪吾ャ若API
+ 紊眼≪違若綽荀с
ゃ若若吾с潟罨<若吾с潟≪違若翫
+ (箴 2.2.55 2.2.57 ) c膂≦с
+ make install
絎茵篁ャ<潟
+ 違<ゃ荐絎<ゃ筝吾障
+ ゃ若若吾с渇с configure
激с潟
+ 絎茵荐絎≪吾ャ若 API 筝翫莎激
+ 肴紊ч障
+ 紊ф泣翫筝 configure
潟潟ゃ潟
+ 筝荐絎<ゃ≪吾ャ若罩e幻篏с
ゃ若若吾с潟с≪違若翫
+ ≪ゃ潟鴻若泣若 build
c
+ 篁ュゃ潟鴻若篏帥c純若鴻潟若若筝篏c
+ config.nice
<ゃ「
+ <ゃ純若鴻若荐絎篏帥c
+ configure
潟潟ゃ潟障上ャc障
+ 罨<若吾с潟≪違若翫 config.nice
+ <ゃ違若吾с潟純若鴻若潟若
+ 綽荀с違膩緇罨<絎茵障
+ $ ./config.nice
+ $ make
+ $ make install
+ $ PREFIX/bin/apachectl -k graceful-stop
+ $ PREFIX/bin/apachectl -k start
+
--prefix
違若 (Listen
ccц┃絎障)
+ 篏睡сゃ若吾с潟綵演帥筝違若吾с潟
+ ゃ潟鴻若絎茵с障Apache HTTP サーバ バージョン 2.3
-Windows 上では、Apache は通常は - Windows NT, 2000, XP ではサービスとして、Windows 9x, ME - ではコンソールアプリケーションとして実行されます。 - 詳細に関しては、「 - サービスとして実行する」と「 - コンソールアプリケーションとして実行する」をご覧下さい。
- -Unixでは、httpd
- プログラムが、バックグラウンドで常にリクエスト処理を行う
- デーモンとして実行されます。この文書ではどのように
- httpd
を起動するかについて記述しています。
もし、設定ファイル中で指定されている
- Listen
- がデフォルトの 80 (もしくは 1024 以下の他のポート)
- である場合は、Apache を起動するためには root
- 権限が必要になりますが、
- これはこの特権ポートにバインドするためです。
- 起動して、一度ログファイルを開くといった準備のための
- 動作を幾つか実行した後は、クライアントからのリクエストに対する
- listen と応答を実際に行う子プロセスを起動します。
- メインの httpd
プロセスは root 権限で走り続けますが、
- 子プロセスはもっと低い権限で走ります。
- これは選択したマルチプロセッシングモジュールで制御されます。
推奨の httpd
実行プログラムの起動方法は、
- apachectl
- 制御スクリプトを使用する方法です。このスクリプトは、httpd
- がオペレーティングシステム上で正常に動作するように必要な環境変数を
- 適切に設定して、httpd
バイナリを起動します。
- apachectl
はどんなコマンドライン引数も通過させますので、
- httpd
のどのコマンドラインオプションも
- apchectl
のオプションとして使用できます。
- また、apchectl
スクリプトを直接編集し、
- スクリプト先頭付近の HTTPD
変数を変更することで、
- httpd
バイナリの正しい位置を指定したり、常に
- 付加させるコマンドライン引数を指定したりすることができます。
httpd
が起動されてまず最初にすることは、
- 設定ファイル
- httpd.conf
の位置を特定して読み込むことです。
- このファイルの位置はコンパイル時に設定されますが、実行時に
- -f
コマンドラインオプションを使って
- 位置を指定することもできます。例えば次のようにです。
/usr/local/apache2/bin/apachectl -f
- /usr/local/apache2/conf/httpd.conf
スタートアップが万事上手くいったら、サーバはターミナルから
- 切り離されて、コマンドプロンプトが即座に戻ってくるでしょう。
- これはサーバが起動している状態を示しています。
- その後はブラウザでサーバに接続して、
- DocumentRoot
- ディレクトリのテストページやそこからリンクされている
- ローカルのドキュメントを見ることができるでしょう。
Apache は、起動時に致命的な問題に遭遇すると、
- 終了する前に、コンソールか
- ErrorLog
- のどちらかに問題を記述したメッセージを出力します。
- 最もよくあるエラーメッセージは
- 「Unable to bind to Port ...
」
- です。このメッセージは普通は次のどちらかが原因です。
より多くの問題解決の方策の説明は、 - Apache FAQ をご覧下さい。
-システムがリブートした後でも
- サーバが実行され続けるようにしたい場合は、
- apachectl
- を呼び出すものをシステムスタートアップファイル
- (通常 rc.local
や rc.N
- 内のファイル) に追加しなければなりません。
- この方法では Apache を root 権限で起動します。
- これをする前に、セキュリティやアクセス制限が
- 適切に設定されていていることを確認してください。
apachectl
スクリプトは通常は、標準的な SysV init
- スクリプトとして動作するように設計されています。
- start
, restart
, stop
- といった引数をとって、httpd
- への適切なシグナルに変換します。
- ですから、通常は単に適切な init ディレクトリ内から
- apachectl
へリンクすることができます。しかし、
- 念のためシステムの要求に合致していることを確認してください。
Apache HTTP 泣若 若吾с 2.3
+Windows 筝сApache 絽吾 + Windows NT, 2000, XP с泣若鴻Windows 9x, ME + с潟潟純若≪宴若激с潟絎茵障 + 荅括完≪ + 泣若鴻絎茵 + 潟潟純若≪宴若激с潟絎茵荀т
+ + +荐絎<ゃ筝ф絎
+ Listen
+ 80 ( 1024 篁ヤ篁若)
+ с翫Apache 莎桁 root
+ 罔綽荀障
+ 号┤若ゃ潟с
+ 莎桁筝綺違<ゃc羣
+ 篏綛障ゃ絎茵緇ゃ≪潟鴻絲障
+ listen 綽膈絎茵絖祉鴻莎桁障
+ <ゃ潟 httpd
祉鴻 root 罔ц軌膓障
+ 絖祉鴻c篏罔ц軌障
+ 御祉激潟違≪吾ャ若у九勝障
ィ絅 httpd
絎茵違莎桁号
+ apachectl
+ 九勝鴻篏睡号с鴻httpd
+ 若c潟違激鴻筝фe幻篏綽荀医紊違
+ 荐絎httpd
ゃ莎桁障
+ apachectl
潟潟ゃ喝違障с
+ httpd
潟潟ゃ潟激с潟
+ apchectl
激с潟篏睡с障
+ 障apchectl
鴻贋・膩
+ 鴻篁菴 HTTPD
紊違紊眼с
+ httpd
ゃ罩c篏臀絎絽吾
+ 篁潟潟ゃ喝違絎с障
httpd
莎桁障
+ 荐絎<ゃ
+ httpd.conf
篏臀劫茯粋昭с
+ <ゃ篏臀潟潟ゃ荐絎障絎茵
+ -f
潟潟ゃ潟激с潟篏帥c
+ 篏臀絎с障箴井<с
/usr/local/apache2/bin/apachectl -f
+ /usr/local/apache2/conf/httpd.conf
鴻帥若≪筝篋筝c泣若帥若
+ ≪潟潟潟喝婚祉cс
+ 泣若莎桁倶腓冴障
+ 緇吟с泣若・膓
+ DocumentRoot
+ c鴻若吾潟
+ 若ャ<潟荀сс
Apache 莎桁翫順馹
+ 腟篋潟潟純若
+ ErrorLog
+ <馹荐菴違<祉若吾阪障
+ 若<祉若吾
+ Unable to bind to Port ...
+ с<祉若吾罨<<с
紊馹茹f浦合茯 + Apache FAQ 荀т
+Apache HTTP サーバ バージョン 2.3
-ウェブサーバを効果的に管理するためには、サーバの活動やパフォーマンス、 - 今発生しているかもしれない問題に関するフィードバックを得ることが必要です。 - Apache HTTP サーバには非常に包括的で柔軟なロギング機能があります。 - この文書はロギング機能の設定の仕方と、ログに何が書かれているかを - 理解するための方法を説明します。
-Apache がログファイルを書いているディレクトリに書き込める人は、 - ほぼ確実にサーバが起動された uid へのアクセスを手に入れることができます。 - そして、それは通常は root ユーザです。 - ちゃんと結果を考えることなく、そのディレクトリへの - 書き込み権限を与えないでください。詳しくは - セキュリティのこつの文書を - 読んでください。
- -加えて、ログファイルにはクライアントからの情報がそのまま、 - エスケープされることなく書かれています。ですから、悪意のある - クライアントがログファイルに制御文字を挿入することができます。 - 生のログを扱うときは注意してください。
-関連モジュール | 関連ディレクティブ |
---|---|
ErrorLog
ディレクティブにより
- 名前と場所が決まるサーバのエラーログは、一番重要なログファイルです。
- Apache の診断情報はここに送られ、リクエストを処理しているときに
- 発生したエラーはすべてここに記録されます。サーバを起動したときや、
- サーバの動作に問題が起こったときは、一番最初に調べるべき
- ところです。間違いの詳細や修正方法がそこに書かれていることが
- よくあります。
エラーログは普通はファイルに書かれます (通常 unix システムでは
- error_log
、Windows と OS/2 では error.log
)。
- Unix システムではエラーを syslog
や
- パイプでプログラムに送る ことができます。
エラーログの書式は比較的自由度の高いもので、説明的に書かれています。 - ただし、いくつかの情報はほとんどのエラーログのエントリにあります。 - 例えば、代表的なものに次のようなメッセージがあります。
- -
- [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1]
- client denied by server configuration:
- /export/home/live/ap/htdocs/test
-
ログエントリの最初の項目はメッセージの日付と時刻です。
- 二つめの項目は報告されているエラーの重要度です。
- LogLevel
で重要度のレベルを
- 制限することによりエラーログに送られるエラーの種類を制御することが
- できます。三つ目の項目はエラーを発生させたクライアントの IP アドレス
- です。残りはメッセージで、この場合はサーバがクライアントのアクセスを
- 拒否するように設定されている、ということを示しています。
- サーバはリクエストされた文書の (ウェブのパスではなく) ファイルシステムの
- パスを報告します。
非常に広範囲のメッセージがエラーログに現れます。たいていのものは
- 上の例のような感じです。エラーログには CGI スクリプトのデバッグ
- 出力も書かれます。CGI スクリプトが stderr
に書いた
- すべての情報は直接エラーログにコピーされます。
情報を追加したり削除したりしてエラーログをカスタマイズすることは - できません。しかし、リクエストに対するエラーログのエントリは、 - 対応するエントリがアクセスログにあります。 - 例えば、上の例のエントリはアクセスログのステータスコード 403 の - エントリに対応します。アクセスログはカスタマイズ可能ですので、 - そちらを使うことによりエラーの状況に関する情報をより多く - 手に入れることができます。
- -テストの最中は、問題が発生しているかどうかを見るために、 - 常にエラーログを監視するのが役に立つ場合がよくあります。 - Unix システムでは、次のものを使うことができます。
- -
- tail -f error_log
-
関連モジュール | 関連ディレクティブ |
---|---|
サーバアクセスログはサーバが処理をしたすべてのリクエストを
- 記録します。アクセスログの場所と内容は CustomLog
- ディレクティブにより決まります。ログの内容の選択を簡潔にするために
- LogFormat
- ディレクティブを使用することができます。このセクションはアクセスログに
- 情報を記録するためのサーバの設定方法を説明します。
もちろん、アクセスログに情報を蓄積することはログ管理の - 始まりに過ぎません。次の段階は有用な統計を取るためにこの情報を - 解析することです。一般的なログ解析はこの文書の範囲外で、 - ウェブサーバ自身の仕事というわけでもありません。この話や、 - ログ解析を行なうアプリケーションの情報を得るには、 - Open Directory や - Yahoo を調べてください。
- -いろんなバージョンの Apache httpd が mod_log_config,
- mod_log_agent, TransferLog
ディレクティブといった、
- 他のモジュールやディレクティブを使ってアクセスのロギングを
- 制御してきました。今では、CustomLog
がすべての古い
- ディレクティブの機能を含むようになっています。
アクセスログの書式は非常に柔軟な設定が可能です。
- 書式は C の printf(1) フォーマット文字列に非常に似た
- フォーマット文字列
- により指定されます。いくつか次の節で例を示します。
- フォーマット文字列に使用できる内容の一覧は mod_log_config の文書
- を見てください。
アクセスログのよくある設定に以下のものがあります。
- -
- LogFormat "%h %l %u %t \"%r\" %>s %b" common
- CustomLog logs/access_log common
-
これは、ニックネーム common
を定義し、
- ログのフォーマット文字列の一つと関連付けます。フォーマット文字列は
- パーセントディレクティブからなり、それぞれのパーセントディレクティブは
- サーバにどの情報をロギングするかを指示します。フォーマット文字列に
- 文字をそのまま入れることもでき、それらはログの出力に直接コピーされます。
- そこに引用文字 ("
) を書くときは、
- フォーマット文字列の最後として解釈
- されることを防ぐためにバックスラッシュでエスケープする必要があります。
- フォーマット文字列には改行用の "\n
"、タブ用の
- "\t
" という特別な制御文字も含めることができます。
CustomLog
ディレクティブは
- 既に定義された
- ニックネーム を使って新しいログファイルを設定します。
- アクセスログのファイル名はスラッシュで始まらない限り、
- ServerRoot
からの相対パスとして
- 扱われます。
上の設定は Common Log Format (CLF) と呼ばれる形式で - ログエントリを書きます。この標準の形式は異なるウェブサーバの多くが - 生成することができ、多くのログ解析プログラムが読みこむことができます。 - CLF により生成されたログファイルのエントリは以下のようになります:
- -
- 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
- /apache_pb.gif HTTP/1.0" 200 2326
-
このログエントリのそれぞれの部分の意味は以下で説明します。
- -127.0.0.1
(%h
)HostnameLookups
が
- On
の場合は、サーバはホスト名を調べて、
- IP アドレスが書かれているところに記録します。しかし、この設定は
- サーバをかなり遅くするので、あまりお勧めできません。
- そうではなく、logresolve
の
- ようなログの後処理を行なうプログラムでホスト名を調べるのが良いでしょう。
- ここに報告される IP アドレスは必ずしもユーザが使っているマシンの
- ものであるとは限りません。ユーザとサーバの間にプロキシサーバが
- あれば、このアドレスは元のマシンのものではなく、プロキシの
- アドレスになります。-
(%l
)identd
により決まる RFC 1413 のクライアントの
- アイデンティティです。この情報はあまり信用することができず、
- しっかりと管理された内部ネットワークを除いては使うべきではありません。
- Apache は IdentityCheck
が
- On
になっていない限り、この情報を得ようとすらしません。frank
(%u
)REMOTE_USER
- 環境変数として与えられます。リクエストのステータスコード
- (以下を参照) が 401 であった場合は、ユーザは認証に失敗しているので、
- この値は信用できません。ドキュメントがパスワードで保護されていない
- 場合は、このエントリは前のものと同じように "-
" に
- なります。[10/Oct/2000:13:55:36 -0700]
- (%t
)
- [day/month/year:hour:minute:second zone]
-
- day = 2*digit
- month = 3*letter
- year = 4*digit
- hour = 2*digit
- minute = 2*digit
- second = 2*digit
- zone = (`+' | `-') 4*digit
%{format}t
を
- 指定することで、別の形式で時刻を表示させることもできます。
- このとき、format
は C の標準ライブラリの
- strftime(3)
の形式になります。
- "GET /apache_pb.gif HTTP/1.0"
- (\"%r\"
)GET
です。次に、クライアントは
- リソース /apache_pb.gif
を要求しました。そして、
- クライアントはプロトコル HTTP/1.0
を使用しました。
- リクエストの各部分を独立にログ収集することもできます。例えば、
- フォーマット文字列 "%m %U%q %H
" は
- メソッド、パス、クエリ文字列、プロトコルをログ収集し、
- 結局 "%r
" とまったく同じ出力になります。200
(%>s
)2326
(%b
)-
" になります。コンテントが無い場合に
- "0
" をログ収集するには、%b
ではなく
- %B
を使ってください。もう一つのよく使われる書式は Combined Log Format と呼ばれています。 - 以下のようにして使うことができます。
- -
- LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
- \"%{User-agent}i\"" combined
- CustomLog log/access_log combined
-
この書式の最初の方は Common Log Format とまったく同じで、最後に
- 二つ追加のエントリがあります。追加のエントリはパーセントディレクティブ
- %{header}i
を使っています。ここで
- header は HTTP のリクエストヘッダのどれかです。この書式による
- アクセスログは以下のような感じになります:
- 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
- /apache_pb.gif HTTP/1.0" 200 2326
- "http://www.example.com/start.html" "Mozilla/4.08 [en]
- (Win98; I ;Nav)"
-
追加のエントリは:
- -"http://www.example.com/start.html"
- (\"%{Referer}i\"
)/apache_pb.gif
にリンクしているか、
- それを含んでいるページです)。"Mozilla/4.08 [en] (Win98; I ;Nav)"
- (\"%{User-agent}i\"
)複数のアクセスログは単に設定ファイルに複数の CustomLog
- ディレクティブを書くことで作成されます。例えば、以下のディレクティブは
- 三つのアクセスログを作ります。最初のものは基本的な CLF の情報で、
- 二つ目と三つ目は referer とブラウザの情報です。最後二つの
- CustomLog
は
- ReferLog
ディレクティブと
- AgentLog
ディレクティブの効果をまねる方法を示しています。
- LogFormat "%h %l %u %t \"%r\" %>s %b" common
- CustomLog logs/access_log common
- CustomLog logs/referer_log "%{Referer}i -> %U"
- CustomLog logs/agent_log "%{User-agent}i"
-
この例は LogFormat
で
- ニックネームを定義する必要がない、
- ということも示しています。ニックネームの代わりに、
- CustomLog
ディレクティブに
- 直接ログの書式を指定することができます。
クライアントのリクエストの特徴に基づいてアクセスログにエントリの
- 一部をロギングしない方が便利なことがあります。これは 環境変数 の補助により簡単に実現できます。まず、
- リクエストが何らかの条件に合うということを現すために環境変数が
- 設定される必要があります。これは通常は SetEnvIf
により
- 行なわれます。そして、CustomLog
ディレクティブの
- env=
節を使って環境変数が設定されているリクエストを
- 含めたり排除したりすることができます。いくつか例を挙げます:
- # Mark requests from the loop-back interface
- SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
- # Mark requests for the robots.txt file
- SetEnvIf Request_URI "^/robots\.txt$" dontlog
- # Log what remains
- CustomLog logs/access_log common env=!dontlog
-
他の例として、英語を話す人からのリクエストとそれ以外の人からのリクエストを - 分けたい、という場合を考えてみてください。
- -
- SetEnvIf Accept-Language "en" english
- CustomLog logs/english_log common env=english
- CustomLog logs/non_english_log common env=!english
-
ここまででは条件付きロギングが非常に強力で柔軟であることを示してきましたが、 - それがログの内容を制御する唯一の方法というわけではありません。ログファイルは - サーバの活動の完全な記録である方がより役に立ちます。単純にログファイルを - 後処理して、考慮したくないログを削除する方が簡単であることがよくあります。
- -普通の負荷のサーバでさえ、ログファイルに保存される情報の量は - 膨大になります。アクセスログのファイルは普通 10,000 リクエスト毎に - 1 MB 以上増えます。ですから、既存のログを移動したり、削除したりして、 - 定期的にログを交替させることが必要になります。これはサーバの実行中には - 行なえません。というのは、Apache はファイルが open されている間は - ずっと古いログファイルに書き続けるからです。 - 新しいログファイルを open できるように、ログファイルが移動されたり - 削除された後に、サーバを再起動する - 必要があります。
- -優雅な 再起動を行なうことで、サーバは既存のコネクションや - 処理待ちのコネクションを失うことなく新しいログファイルを open させる - ことができます。しかし、これを実現するために、サーバは古いリクエストを - 扱っている間は古いログファイルに書き続ける必要があります。 - ですから、再起動の後ではログファイルの処理を始める前に、しばらく待たなければ - なりません。単にログを交替させて、ディスクの節約のために古いログを - 圧縮する普通のシナリオは:
- -
- mv access_log access_log.old
- mv error_log error_log.old
- apachectl graceful
- sleep 600
- gzip access_log.old error_log.old
-
ログの交替をするもう一つの方法はパイプ経由のログを使うもので、次の節で説明されています。
-Apache httpd はエラーログとアクセスログをファイルに直接書く代わりに、
- パイプを通して別のプログラムに書き出すことができます。
- この機能により、主サーバにコードを追加することなく
- ロギングの柔軟性が非常に高まっています。パイプにログを書くためには、
- 単にファイル名をパイプ文字 "|
" に置き換え、その続きに
- 標準入力からログのエントリを受けとる実行プログラムの名前を書くだけです。
- Apache はパイプ経由のログ用のプロセスをサーバの起動時に実行し、
- サーバの実行中にそのプログラムがクラッシュしたときはそれを再び
- 実行します。(この最後の機能がこの技術が「信頼性のあるパイプ経由のロギング」
- と呼ばれている理由です。)
パイプ経由のログ用のプロセスは Apache httpd の親プロセスから起動され、 - そのプロセスのユーザ ID を継承します。これは、これは、パイプ経由のログ用の - プログラムは普通 root として実行されることを意味します。 - ですから、プログラムを簡単で安全に保つことが非常に重要です。
- -パイプ経由のログの重要な利用法は、サーバの再起動なしでログの交替を
- することです。Apache HTTP サーバにはこのための rotatelogs
と呼ばれる簡単な
- プログラムが付属しています。たとえば、24 時間毎にログを交替させるには、
- 以下のものを使うことができます:
- CustomLog "|/usr/local/apache/bin/rotatelogs
- /var/log/access_log 86400" common
-
パイプの先で呼ばれるコマンド全体が引用符で囲まれていることに注目して - ください。この例はアクセスログを使っていますが、エラーログにも同じ技術を - 使うことができます。
- -似ているけれど、よりずっと柔軟な - cronolog というログ交替用の - プログラムが外部のサイトにあります。
- -条件付きロギングと同様、パイプ経由のログは非常に強力な - 道具ですが、オフラインの後処理のような、より簡単な解決方法があるときは - 使わない方が良いでしょう。
-多くの バーチャルホスト のあるサーバを実行している
- ときは、ログファイルの扱い方にいくつかの方法があります。
- まず、単独のホストのみのサーバとまったく同じようにログを使うことができます。
- ロギングディレクティブを主サーバのコンテキストの
- <VirtualHost>
セクションの外に置くことで、
- すべてのログを同じアクセスログとエラーログにログ収集することができます。
- この手法では個々のバーチャルホストの統計を簡単にとることはできません。
>CustomLog
や
- ErrorLog
ディレクティブが
- <VirtualHost>
の中に
- 置かれた場合は、そのバーチャル
- ホストへのすべてのリクエストやエラーがそこで指定されたファイルにのみ
- ログ収集されます。ロギングディレクティブのないバーチャルホストは
- 依然としてリクエストが主サーバのログに送られます。この手法は少ない
- バーチャルホストに対しては非常に有用ですが、ホストの数が非常に多くなると
- 管理が大変になります。さらに、ファイル記述子の限界の問題を起こすことが
- あります。
アクセスログには、非常に良い妥協案があります。バーチャルホストの - 情報をログのフォーマット文字列に加えることで、すべてのホストへの - リクエストを同じログにログ収集して、後でログを個々のファイルに分割することが - できます。たとえば、以下のディレクティブを見てください。
- -
- LogFormat "%v %l %u %t \"%r\" %>s %b"
- comonvhost
- CustomLog logs/access_log comonvhost
-
%v
がリクエストを扱っているバーチャルホストの名前を
- ログ収集するために使われています。そして、split-logfile のようなプログラムを
- 使ってアクセスログを後処理することで、
- バーチャルホスト毎のファイルにログを分割することができます。
残念ながら、エラーログには同様の手法はありません。ですから、 - すべてのバーチャルホストを同じエラーログの中に混ぜるか、 - バーチャルホスト毎にエラーログを使うかを選ばなければなりません。
-関連モジュール | 関連ディレクティブ |
---|---|
起動時に、Apache は親 httpd プロセスのプロセス ID を
- logs/httpd.pid
に保存します。この
- ファイル名は PidFile
ディレクティブを使って
- 変更することができます。プロセス ID は管理者が親プロセスに
- シグナルを送ることでデーモンを再起動したり終了させたりするときに
- 使用します。Windows では、代わりに -k コマンドオプションを
- 使ってください。詳しい情報は 終了と
- 再起動 のページを見てください。
デバッグの補助のために、ScriptLog
ディレクティブは
- CGI スクリプトの入力と出力を記録するようにできます。
- これはテスト用にのみ使用して、通常のサーバでは使用しないでください。
- 詳しい情報は mod_cgi の文書 にあります。
mod_rewrite
の強力で
- 複雑な機能を
- 使っているときは、ほぼいつもデバッグを簡単にするために
- RewriteLog
の使用が
- 必要でしょう。このログファイルにはリライトエンジンがリクエストを
- 書き換える方法の詳細な解析が出力されます。詳しさの度合は RewriteLogLevel
- で制御できます。
Apache HTTP 泣若 若吾с 2.3
+с泣若号膊∞泣若羇糸若潟鴻 + 篁榊馹≪c若緇綽荀с + Apache HTTP 泣若絽吾ф荵潟井純障 + 吾潟井純荐絎篁鴻違篏吾 + 茹c号茯障
+Apache 違<ゃ吾c吾莨若篋冴 + 祉主∈絎泣若莎桁 uid 吾≪祉鴻ャс障 + 絽吾 root 若吟с + <腟c吾 + 吾莨若炊┤筝с荅潟 + 祉ャc吾 + 茯с
+ +違<ゃゃ≪潟宴障障 + 鴻宴若吾障с + ゃ≪潟違<ゃ九勝絖水ャс障 + 違宴羈
+∫c≪吾ャ若 | ∫ccc |
---|---|
ErrorLog
cc
+ 贋羆冴障泣若若違筝荀違<ゃс
+ Apache 荐堺宴鴻
+ 榊若鴻荐蚊障泣若莎桁
+ 泣若篏馹莎激c筝茯帥鴻鴻
+ с荅括完篆罩f号吾
+ 障
若違<ゃ吾障 (絽 unix 激鴻с
+ error_log
Windows OS/2 с error.log
)
+ Unix 激鴻с若 syslog
+ ゃс違 с障
若違後罸莠怨墾蕭с茯吾障 + ゃ宴祉若違潟障 + 箴違篁h;罨<<祉若吾障
+ +
+ [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1]
+ client denied by server configuration:
+ /export/home/live/ap/htdocs/test
+
違潟<祉若吾ヤ祉с
+ 篋ゃ怨若荀綺с
+ LogLevel
ч荀綺
+ 狗若違若腮蕁九勝
+ с障筝ょ若榊ゃ≪潟 IP ≪
+ с罧<祉若吾с翫泣若ゃ≪潟≪祉鴻
+ 荐絎腓冴障
+ 泣若鴻吾 (с鴻с) <ゃ激鴻
+ 鴻怨障
絽吾綺膀蚊<祉若吾若違憗障
+ 筝箴с若違 CGI 鴻
+ 阪吾障CGI 鴻 stderr
吾
+ 鴻宴贋・若違潟若障
宴菴遵ゃ若違鴻帥ゃ冴 + с障鴻絲障若違潟 + 絲上潟≪祉鴻障 + 箴違筝箴潟≪祉鴻違鴻若帥鴻潟若 403 + 潟絲上障≪祉鴻違鴻帥ゃ阪純сс + <篏帥若倶≪宴紊 + ャс障
+ +鴻筝馹榊荀 + 絽吾若違h綵鴻腴ゅ翫障 + Unix 激鴻с罨<篏帥с障
+ +
+ tail -f error_log
+
∫c≪吾ャ若 | ∫ccc |
---|---|
泣若≪祉鴻違泣若鴻鴻
+ 荐蚊障≪祉鴻違贋絎鴻 CustomLog
+ cc羆冴障障違絎鴻御膂≧
+ LogFormat
+ cc篏睡с障祉激с潟≪祉鴻違
+ 宴荐蚊泣若荐絎号茯障
<≪祉鴻違宴腥亥∞ + 紮障障罨<罧級腟沿宴 + 茹fс筝域В吾膀峨с + с泣若荳篁篋с障荅宴 + 域В茵≪宴若激с潟宴緇 + Open Directory + Yahoo 茯帥鴻
+ +若吾с潟 Apache httpd mod_log_config,
+ mod_log_agent, TransferLog
ccc
+ 篁≪吾ャ若cc篏帥c≪祉鴻潟違
+ 九勝障篁сCustomLog
鴻ゃ
+ cc罘純c障
≪祉鴻違後絽吾荵荐絎純с
+ 後 C printf(1) 若絖絽吾篌若
+ 若絖
+ 絎障ゃ罨<膀т腓冴障
+ 若絖篏睡с絎鴻筝荀с mod_log_config
+ 荀
≪祉鴻違荐絎篁ヤ障
+ +
+ LogFormat "%h %l %u %t \"%r\" %>s %b" common
+ CustomLog logs/access_log common
+
若 common
絎臂
+ 違若絖筝ゃ∫d障若絖
+ 若祉潟cc若祉潟cc
+ 泣若宴潟違腓冴障若絖
+ 絖障上ャс違阪贋・潟若障
+ 綣絖 ("
) 吾
+ 若絖緇茹i
+ 蚊鴻激ャс鴻宴若綽荀障
+ 若絖壕 "\n
"帥
+ "\t
" 劫ャ九勝絖с障
CustomLog
cc
+ ≪絎臂
+ 若 篏帥c違違<ゃ荐絎障
+ ≪祉鴻違<ゃ鴻激ャу障
+ ServerRoot
後障鴻
+ 宴障
筝荐絎 Common Log Format (CLF) 若違綵√ + 違潟吾障罔羣綵√違с泣若紊 + с紊域В違茯帥с障 + CLF 違<ゃ潟篁ヤ障:
+ +
+ 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
+ /apache_pb.gif HTTP/1.0" 200 2326
+
違潟潟篁ヤц障
+ +127.0.0.1
(%h
)HostnameLookups
+ On
翫泣若鴻茯帥鴻
+ IP ≪鴻吾荐蚊障荐絎
+ 泣若с障сс障
+ сlogresolve
+ 違緇茵違с鴻茯帥鴻с
+ 怨 IP ≪鴻綽若吟篏帥c激潟
+ с障若吟泣若激泣若
+ 違≪鴻激潟с激
+ ≪鴻障-
(%l
)identd
羆冴障 RFC 1413 ゃ≪潟
+ ≪ゃ潟ccс宴障篆∞с
+ c膊∞若ゃ篏帥鴻с障
+ Apache IdentityCheck
+ On
c宴緇障frank
(%u
)REMOTE_USER
+ 医紊違筝障鴻鴻若帥鴻潟若
+ (篁ヤ) 401 сc翫若吟茯荐若紊掩с
+ ゃ篆∞с障ャ<潟鴻若т茘激
+ 翫潟 "-
"
+ 障[10/Oct/2000:13:55:36 -0700]
+ (%t
)
+ [day/month/year:hour:minute:second zone]
+
+ day = 2*digit
+ month = 3*letter
+ year = 4*digit
+ hour = 2*digit
+ minute = 2*digit
+ second = 2*digit
+ zone = (`+' | `-') 4*digit
%{format}t
+ 絎сャ綵√ф祉茵腓冴с障
+ format
C 罔羣ゃ
+ strftime(3)
綵√障
+ "GET /apache_pb.gif HTTP/1.0"
+ (\"%r\"
)GET
с罨<ゃ≪潟
+ 純若 /apache_pb.gif
荀羆障
+ ゃ≪潟潟 HTTP/1.0
篏睡障
+ 鴻腴医с障箴違
+ 若絖 "%m %U%q %H
"
+ <純鴻絖潟医
+ 腟絮 "%r
" 障c阪障200
(%>s
)2326
(%b
)-
" 障潟潟潟<翫
+ "0
" 医%b
с
+ %B
篏帥c筝ゃ鋎帥後 Combined Log Format 若違障 + 篁ヤ篏帥с障
+ +
+ LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
+ \"%{User-agent}i\"" combined
+ CustomLog log/access_log combined
+
後鴻 Common Log Format 障cс緇
+ 篋よ申潟障菴遵潟若祉潟cc
+ %{header}i
篏帥c障
+ header HTTP 鴻с後
+ ≪祉鴻違篁ヤ障:
+ 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET
+ /apache_pb.gif HTTP/1.0" 200 2326
+ "http://www.example.com/start.html" "Mozilla/4.08 [en]
+ (Win98; I ;Nav)"
+
菴遵潟:
+ +"http://www.example.com/start.html"
+ (\"%{Referer}i\"
)/apache_pb.gif
潟
+ с若吾с)"Mozilla/4.08 [en] (Win98; I ;Nav)"
+ (\"%{User-agent}i\"
)茲違≪祉鴻違荐絎<ゃ茲違 CustomLog
+ cc吾т障箴違篁ヤcc
+ 筝ゃ≪祉鴻違篏障堺 CLF 宴с
+ 篋ょ筝ょ referer 吟宴с緇篋ゃ
+ CustomLog
+ ReferLog
cc
+ AgentLog
cc号障号腓冴障
+ LogFormat "%h %l %u %t \"%r\" %>s %b" common
+ CustomLog logs/access_log common
+ CustomLog logs/referer_log "%{Referer}i -> %U"
+ CustomLog logs/agent_log "%{User-agent}i"
+
箴 LogFormat
+ 若絎臂綽荀
+ 腓冴障若篁c
+ CustomLog
cc
+ 贋・違後絎с障
ゃ≪潟鴻劫彰冴ャ≪祉鴻違潟
+ 筝潟違鴻箴水障 医紊 茖膂≦絎憗с障障
+ 鴻篏>散憗医紊違
+ 荐絎綽荀障絽吾 SetEnvIf
+ 茵障CustomLog
cc
+ env=
膀篏帥c医紊違荐絎鴻
+ ゃс障ゃ箴障:
+ # Mark requests from the loop-back interface
+ SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
+ # Mark requests for the robots.txt file
+ SetEnvIf Request_URI "^/robots\.txt$" dontlog
+ # Log what remains
+ CustomLog logs/access_log common env=!dontlog
+
篁箴沿荅宴篋冴鴻篁ュ篋冴鴻 + 翫帥
+ +
+ SetEnvIf Accept-Language "en" english
+ CustomLog logs/english_log common env=english
+ CustomLog logs/non_english_log common env=!english
+
障сс>散篁潟違絽吾綣桁ф荵с腓冴障 + 違絎鴻九勝筝号с障違<ゃ + 泣若羇糸絎荐蚊с鴻綵鴻腴<障膣違<ゃ + 緇違ゃ鴻膂≦с障
+ +莢激泣若с違<ゃ篆絖宴 + 紊с障≪祉鴻違<ゃ 10,000 鴻罸 + 1 MB 篁ヤ紜障с√違腱糸ゃ + 絎違篋ゆ帥綽荀障泣若絎茵筝 + 茵障Apache <ゃ open + cゃ違<ゃ吾膓с + 違違<ゃ open с違<ゃ腱糸 + ゃ緇泣若莎桁 + 綽荀障
+ +莎桁茵с泣若√潟激с潟 + 緇<潟激с潟紊宴違違<ゃ open + с障絎憗泣若ゃ鴻 + 宴cゃ違<ゃ吾膓綽荀障 + с莎桁緇с違<ゃ紮違鏅 + 障違篋ゆ帥c鴻膀膣ゃ違 + х軒激:
+ +
+ mv access_log access_log.old
+ mv error_log error_log.old
+ apachectl graceful
+ sleep 600
+ gzip access_log.old error_log.old
+
違篋ゆ帥筝ゃ号ゃ腟宴篏帥с罨<膀ц障
+Apache httpd 若違≪祉鴻違<ゃ贋・吾鋌c
+ ゃャ違吾冴с障
+ 罘純筝祉泣若潟若菴遵
+ 潟違荵с絽吾蕭障c障ゃ違吾
+ <ゃゃ絖 "|
" 臀膓
+ 罔羣ュ違潟絎茵違吾с
+ Apache ゃ腟宴亥祉鴻泣若莎桁絎茵
+ 泣若絎茵筝違激ャ
+ 絎茵障(緇罘純茵篆♂惹сゃ腟宴潟違
+ 若違宴с)
ゃ腟宴亥祉鴻 Apache httpd 荀祉鴻莎桁 + 祉鴻若 ID 膓帥障ゃ腟宴亥 + 違 root 絎茵潟障 + с違膂≦у篆ゃ絽吾荀с
+ +ゃ腟宴違荀羈泣若莎桁с違篋ゆ帥
+ сApache HTTP 泣若 rotatelogs
若違膂≦
+ 違篁絮障違24 罸違篋ゆ帥
+ 篁ヤ篏帥с障:
+ CustomLog "|/usr/local/apache/bin/rotatelogs
+ /var/log/access_log 86400" common
+
ゃу若違潟潟篏綣膃у蚊障羈 + 箴≪祉鴻違篏帥c障若違茵 + 篏帥с障
+ +篌若c荵 + cronolog 遺困睡 + 違紊泣ゃ障
+ +>散篁潟違罕ゃ腟宴違絽吾綣桁 + 激сゃ潟緇膂≦茹f浦号 + 篏帥鴻с
+紊 若c鴻 泣若絎茵
+ 違<ゃ宴鴻ゃ号障
+ 障鴻帥泣若障c違篏帥с障
+ 潟違cc筝祉泣若潟潟鴻
+ <VirtualHost>
祉激с潟紊臀с
+ 鴻違≪祉鴻違若違医с障
+ 羈с若c鴻腟沿膂≦с障
>CustomLog
+ ErrorLog
cc
+ <VirtualHost>
筝
+ 臀翫若c
+ 鴻吾鴻鴻若ф絎<ゃ
+ 医障潟違cc若c鴻
+ 箴吟鴻筝祉泣若違障羈絨
+ 若c鴻絲障絽吾с鴻違絽吾紊
+ 膊∞紊у障<ゃ荐菴医馹莎激
+ 障
≪祉鴻違絽吾絋ュ罅障若c鴻 + 宴違若絖с鴻鴻吾 + 鴻違医緇с違<ゃ蚊 + с障違篁ヤcc荀
+ +
+ LogFormat "%v %l %u %t \"%r\" %>s %b"
+ comonvhost
+ CustomLog logs/access_log comonvhost
+
%v
鴻宴c若c鴻
+ 医篏帥障split-logfile 違
+ 篏帥c≪祉鴻違緇с
+ 若c鴻罸<ゃ違蚊с障
罧綽泣若違罕羈障с + 鴻若c鴻若違筝羞激 + 若c鴻罸若違篏帥吾違違障
+∫c≪吾ャ若 | ∫ccc |
---|---|
莎桁Apache 荀 httpd 祉鴻祉 ID
+ logs/httpd.pid
篆絖障
+ <ゃ PidFile
cc篏帥c
+ 紊眼с障祉 ID 膊∞荀祉鴻
+ 激違с若≪潟莎桁腟篋
+ 篏睡障Windows с篁c -k 潟潟激с潟
+ 篏帥c荅潟宴 腟篋
+ 莎桁 若吾荀
違茖ScriptLog
cc
+ CGI 鴻ュ阪荐蚊с障
+ 鴻推戎絽吾泣若с篏睡с
+ 荅潟宴 mod_cgi 障
mod_rewrite
綣桁
+ 茲罘純
+ 篏帥c祉若ゃ違膂≦
+ RewriteLog
篏睡
+ 綽荀с違<ゃゃ潟吾潟鴻
+ 吾号荅括完茹f阪障荅潟綺 RewriteLogLevel
+ у九勝с障
Apache HTTP サーバ バージョン 2.3
-説明: | 常に使用可能な 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 nttp 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 スクリプトなどの、動的に生成される
- コンテンツを含むリソースに文字セットパラメータを追加する場合で、
- ユーザの入力データが出力に入り、クロスサイトスクリプティングが
- 引き起こされうる場合です。デフォルト文字セットをセットしたとしても、
- ブラウザの "文字エンコードの自動選択" 機能が有効になっているユーザを
- 守ることにはならないので、もちろんより良い解決策は単にスクリプトを修正
- (あるいは削除) することです。
AddCharset
説明: | MIME-type に出力フィルタを割り当てる |
---|---|
構文: | AddOutputFilterByType filter[;filter...] MIME-type
-[MIME-type] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Core |
モジュール: | core |
互換性: | Apache 2.0.33 以降で使用可能 |
このディレクティブは応答の MIME-type に応じて出力フィルタを使用するようにします。
- -次の例は 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
と合わせて
- 使うときに一番役に立ちます。
Turning AllowEncodedSlashes
On
is
- mostly useful when used in conjunction with 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*
- ディレクティブなど)。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
と Digest
しか
- 実装されていません。
-
- このディレクティブは AuthName
ディレクティブや
- Require
ディレクティブと、
- AuthUserFile
や AuthGroupFile
などのディレクティブと
- 一緒に利用する必要があります。
説明: | CGI スクリプトのインタープリタの位置を調べるための手法 |
---|---|
構文: | CGIMapExtension cgi-path .extension |
デフォルト: | None |
コンテキスト: | ディレクトリ, .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 及び RFC2068 において定義されている
- Content-MD5
ヘッダーの生成を有効にします。
MD5 は、任意長のデータの「メッセージダイジェスト」(「指紋」 - と表現されることもある) を計算するアルゴリズムで、 - データの変更があった場合には非常に高い信頼度でメッセージダイジェストに変更が - 反映されます。
- -Content-MD5
ヘッダは、エンドツーエンドで
- エンティティボディーに含まれるメッセージの完全性チェック
- (Message Integrity Check - MIC)を提供します。
- このヘッダを調べることで、プロキシやクライアントは、
- 途中経路におけるエンティティボディの予期せぬ変更などを
- 検出することができます。ヘッダの例:
- Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
-
リクエスト毎にメッセージダイジェストを計算する (値はキャッシュされません) - ことから、 - サーバパフォーマンスが低下することについて注意してください。
- -Content-MD5
は、core
機能により処理された
- ドキュメントを送るときのみ有効であり、
- SSI ドキュメントや CGI スクリプトの出力、バイトレンジを指定した
- 応答の場合にはこのヘッダは付与されません。
-
説明: | サーバがコンテントタイプを決定できないときに -送られる MIME コンテントタイプ |
---|---|
構文: | DefaultType MIME-type |
デフォルト: | DefaultType text/plain |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Core |
モジュール: | core |
サーバは、MIME のタイプマップからは決定できない - ドキュメントの送信を要求されることがあります。
- -サーバは、ドキュメントのコンテントタイプをクライアントに通知する必要が
- ありますので、このようにタイプが未知の場合は
- DefaultType
で指定されたタイプを利用します。
- 例:
- DefaultType image/gif
-
これは .gif
という拡張子がファイル名に含まれていない
- 多くの GIF 画像が含まれているディレクトリに適しているでしょう。
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/.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
- と同じになります。
説明: | マッチするファイル名に適用されるディレクティブを囲む |
---|---|
構文: | <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
-
apachectl
説明: | 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> |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Core |
モジュール: | core |
<Location>
ディレクティブは、
- URL により中に書かれたディレクティブの適用範囲を制限します。
- <Directory>
- ディレクティブと似ていて、
- </Location>
ディレクティブで終了する
- サブセクションを開始します。
- <Location>
セクションは、
- <Directory>
セクションと
- .htaccess
の読み込みの後、
- <Files>
セクションを
- 適用した後に、設定ファイルに現れた順に処理されます。
<Location>
セクションは
- 完全にファイルシステムと関連せずに動作します。このことから導かれる
- 結果にはいつくか注意する点があります。最も重要なものは、
- ファイルシステムの位置へのアクセス制御に <Location>
ディレクティブを使うべきではない
- ということです。複数の URL がファイルシステムの同じ位置にマップされる
- 可能がありますので、そのようなアクセス制御は回避されてしまう可能性が
- あります。
<Location>
を使うか<Location>
ディレクティブは
- ファイルシステム外のコンテンツにディレクティブを適用するときに
- 使用してください。ファイルシステムに存在するコンテンツに対しては、
- <Directory>
と <Files>
を使ってください。
- 例外は、<Location />
で、これはサーバ全体に対して
- 設定を適用する簡単な方法です。
全ての (プロキシ以外の) リクエストに対し、
- URL は /path/
という、
- 接頭辞 http://servername
を含まない形でマッチします。
- プロキシリクエストの場合には、scheme://servername/path
- という接頭辞を含む形でマッチし、接頭辞を含めて指定する必要があります。
URL にはワイルドカードを利用することができます。
- ?
は任意の一文字、*
は任意の文字列にマッチします。
~
という文字を追加することで、拡張正規表現を
- 利用することもできます。
- 例えば:
- <Location ~ "/(extra|special)/data">
-
は URL に /extra/data
か /special/data
という文字列が
- 含まれている場合にマッチします。
- <LocationMatch>
ディレクティブは
- <Location>
の正規表現
- 版とまったく同じ動作をします。
<Location>
機能は、SetHandler
ディレクティブと
- 組合わせて利用すると特に便利です。
- 例えば、foo.com
のブラウザからのみステータスの参照を有効にしたければ、
- 次のようにすれば良いでしょう。
- <Location /status>
-
- SetHandler server-status
- Order Deny,Allow
- Deny from all
- Allow from .foo.com
-
- </Location>
-
スラッシュ文字は、URL 内に現れる場所に応じて変化する
- 特別な意味を持っています。
- ファイルシステムにおいて利用する場合には複数のスラッシュでも一つの
- スラッシュとして扱われることが多いですが、
- (すなわち、/home///foo
は
- /home/foo
と同じいったように)
- URL においては必ずしもそうなるわけではありません。
- <LocationMatch>
- ディレクティブや正規表現を利用した
- <Location>
ディレクティブで、
- 複数のスラッシュにマッチさせたいときには、、明示的に記述する
- 必要があります。
例えば、<LocationMatch ^/abc>
は、
- /abc
というリクエスト URL にマッチしますが、
- //abc
というリクエスト URL にはマッチしません。
- (正規表現でない) <Location>
- ディレクティブは、
- proxy リクエストに対して利用する際には同様の振る舞いをしますが、
- (正規表現でない) <Location>
を proxy
- でないリクエストに対して利用する際には、
- 一つのスラッシュで複数のスラッシュにマッチします。
- 例えば、<Location /abc/def>
と指定し、
- /abc//def
というリクエストがあれば、
- マッチすることになります。
説明: | 囲んだディレクティブを正規表現にマッチする URL のみに -適用 |
---|---|
構文: | <LocationMatch
- regex> ... </LocationMatch> |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Core |
モジュール: | core |
<LocationMatch>
ディレクティブは、
- <Location>
と同じ様に
- URL により中に書かれたディレクティブの適用範囲を制限します。
- 但し、引数は普通の文字列ではなく、正規表現となります。例えば、
- <LocationMatch "/(extra|special)/data">
-
は URL に /extra/data
か /special/data
- という文字列が含まれている場合にマッチします。
説明: | ErrorLog の冗長性を制御する |
---|---|
構文: | LogLevel level |
デフォルト: | LogLevel warn |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Core |
モジュール: | core |
LogLevel
は、エラーログ (ErrorLog
ディレクティブを
- 見てください) へ記録するメッセージの冗長性を調整します。
- 以下の level を指定でき、順に重要度が下がっていきます。
レベル | - -説明 | - -例 | -
---|---|---|
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
以上のレベルを指定することが推奨されます。
例:
- -
- LogLevel notice
-
ファイルにログを出力する場合、notice
- レベルのメッセージは抑制されず、すべてログに出力されます。
- しかし syslog
を使用している場合は、
- これは当てはまりません。
説明: | 持続的な接続上で許可されるリクエストの数 |
---|---|
構文: | MaxKeepAliveRequests number |
デフォルト: | MaxKeepAliveRequests 100 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Core |
モジュール: | core |
MaxKeepAliveRequests
ディレクティブは、
- KeepAlive
が有効な場合に、
- 一回の接続で受け付け可能なリクエストの数を制限します。
- 0
に設定していれば、受け付けるリクエストは無制限になります。
- この設定は、サーバ性能を向上させるために、大きな数値を指定すること勧めます。
-
例:
- -
- MaxKeepAliveRequests 500
-
説明: | 名前ベースのバーチャルホストのための IP アドレスを指定 |
---|---|
構文: | NameVirtualHost addr[:port] |
コンテキスト: | サーバ設定ファイル |
ステータス: | Core |
モジュール: | core |
NameVirtualHost
ディレクティブは、
- 名前ベースのバーチャルホストの設定を行ないたい場合に
- 必要となるものです。
addr にはホスト名を指定できますが、 - 常に IP アドレスを指定するのが推奨されます。 - 例えば、
- -
- NameVirtualHost 111.22.33.44
-
NameVirtualHost
ディレクティブは、
- 名前ベースのバーチャルホストを
- 利用してリクエストを受け付ける IP アドレスを指定します。
- これは、普通は名前ベースのバーチャルホストアドレスです。
- ただし、ファイアーウォールや他のプロキシがリクエストを受け付け、
- 違う IP アドレスのサーバにフォワードするという場合は、
- リクエストを提供したいマシン上の物理インターフェースの
- IP アドレスを指定する必要があります。
- 複数のアドレスで複数の名前ベースのバーチャルホストを指定する場合は
- 各アドレスに対してディレクティブを書いてください。
「主サーバ」や、どの _default_
サーバも、
- NameVirtualHost
で指定した IP アドレスへのリクエスト
- を処理することはありません (なぜか
- NameVirtualHost
を
- 指定したけどそのアドレスに VirtualHost
を定義しなかった場合を除く)。
名前ベースのバーチャルホストにポート番号を指定することも可能です。 - 例えば
- -
- NameVirtualHost 111.22.33.44:8080
-
IPV6 のアドレスは次の例のように角括弧で囲む必要があります:
- -
- NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8080
-
すべてのインタフェースへのリクエストを受け取るようにするためには、
- 引数として *
を使います。
- NameVirtualHost *
-
<VirtualHost>
ディレクティブの引数<VirtualHost>
ディレクティブの引数は NameVirtualHost
ディレクティブの引数に正確に
- 合っている必要があることに注意してください。
- NameVirtualHost 1.2.3.4
- <VirtualHost 1.2.3.4>
- # ...
- </VirtualHost>
-
説明: | ディレクトリに対して使用可能な機能を設定する |
---|---|
構文: | Options
- [+|-]option [[+|-]option] ... |
デフォルト: | Options All |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Options |
ステータス: | Core |
モジュール: | core |
Options
ディレクティブは、特定のディレクトリに対して
- どの機能が使用可能かを制御します。
option を None
に指定すると、
- 特別な機能は全て無効になります。
- また、以下の示す 1 個以上のものを指定できます。
All
MultiViews
を除いた全ての機能が有効となります。
- これがデフォルトです。ExecCGI
mod_cgi
による CGI スクリプトの実行を許可します。FollowSymLinks
サーバがシンボリックリンクをたどる場合でも、
- <Directory>
セクションに
- マッチさせるための
- パス名は変更されません。
<Location>
内に
- このオプションを指定しても無視されることに
- 注意してください。
Includes
mod_include
が提供する SSI を有効にします。IncludesNOEXEC
#exec
コマンド と #exec CGI
は無効になります。
- ただし、#include virtual
により、ScriptAlias
されたディレクトリで
- CGI を実行することは可能です。Indexes
DirectoryIndex
で指定したファイル (例えば、index.html
) が
- ディレクトリ内に無ければ、mod_autoindex
が
- ディレクトリ内の一覧を整形して返します。MultiViews
mod_negotiation
による
- コンテントネゴシエーション
- された "MultiViews" を許可します。SymLinksIfOwnerMatch
<Location>
内にこのオプションを
- 指定しても無視されます。通常、ディレクトリに対して複数の Options
が
- 適用可能な場合、
- 最も近いもの一つのみが適用され、他のものは無視されます。
- 複数の指定がマージされるわけではありません。(セクションのマージ方法を参照してください。)
- しかし、すべての Options
ディレクティブが +
や -
付きで
- 指定された場合はオプションの値はマージされます。
- +
を頭につければ現在の設定に加えられ、
- -
を付ければ現在の設定から削除されます。
例えば、+
や -
を利用しない場合は:
- <Directory /web/docs>
-
- Options Indexes FollowSymLinks
-
- </Directory>
-
- <Directory /web/docs/spec>
-
- Options Includes
-
- </Directory>
-
/web/docs/spec
というディレクトリには、
- Includes
だけが適用されます。
- しかし、2 番目の Options
で +
や -
を利用してみると:
- <Directory /web/docs>
-
- Options Indexes FollowSymLinks
-
- </Directory>
-
- <Directory /web/docs/spec>
-
- Options +Includes -Indexes
-
- </Directory>
-
/web/docs/spec
というディレクトリには、 FollowSymLinks
と
- Includes
が適用されます。
-IncludesNOEXEC
もしくは
- -Includes
を指定すると、
- 前の設定がどのようになっていようとも SSI は無効となります。
どのような設定もされていなければ、デフォルトでは All
に
- なります。
説明: | どの認証済みユーザがリソースをアクセスできるかを選択する |
---|---|
構文: | Require entity-name [entity-name] ... |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Core |
モジュール: | core |
このディレクティブは、どの認証済みのユーザがリソースに - アクセスすることができるかを指定します。 - 以下のような構文になります。
- -Require user userid [userid] ...
Require group group-name [group-name] ...
Require valid-user
Require
は、正しく動作するためには AuthName
及び AuthType
ディレクティブや、
- (ユーザとグループを指定するために) AuthUserFile
及び AuthGroupFile
- といったディレクティブと共に
- 指定する必要があります。
- 例えば:
- AuthType Basic
- AuthName "Restricted Resource"
- AuthUserFile /web/users
- AuthGroupFile /web/groups
- Require group admin
-
このようにして適用されたアクセス制御は、全てのメソッドに
- 対して行なわれます。
- 通常は、これが望ましい動作です。
- もし、特定のメソッドに対してのみアクセスの制御を適用し、
- 他のメソッドは制限しない場合には、<Limit>
セクション内に
- Require
を
- 指定してください。
説明: | Apache の子プロセスから起動されたプロセスの CPU 消費量を -制限する |
---|---|
構文: | RLimitCPU seconds|max [seconds|max] |
デフォルト: | 未設定。オペレーティングシステムのデフォルトを使用 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | All |
ステータス: | Core |
モジュール: | core |
一つか二つのパラメータをとります。
- 最初のパラメータは全プロセスに対するリソースのソフトリミットを設定し、
- 2 番目のパラメータは最大のリソースリミットを設定します。
- パラメータには数字か、オペレーティングシステムの最大となる
- max
のどちらかを指定することができます。
- 最大のリソースリミットを上げるためには、サーバを
- root
で実行するか起動されなければいけません。
ちなみに、この設定は Apache の子プロセス自体ではなく、 - リクエストを受け付けた Apache の子プロセスから fork されたプロセスに - 適用されます。 - これには CGI や SSI から実行されたコマンドが含まれますが、Apache の - 親プロセスから fork されたログのパイププロセスなどには適用されません。
- -CPU リソースのリミットはプロセスあたりの秒数で表わされます。
- - -RLimitMEM
RLimitNPROC
説明: | Apache の子プロセスから起動されたプロセスのメモリ消費量を -制限する |
---|---|
構文: | RLimitMEM bytes|max [bytes|max] |
デフォルト: | 未設定。オペレーティングシステムのデフォルトを使用 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | All |
ステータス: | Core |
モジュール: | core |
一つか二つのパラメータををとります。
- 最初のパラメータは全プロセスに対するリソースのソフトリミットを設定し、
- 2 番目のパラメータは最大のリソースリミットを設定します。
- パラメータには数字か、オペレーティングシステムの最大となる
- max
のどちらかを指定することができます。
- 最大のリソースリミットを上げるためには、サーバを
- root
で実行するか起動されなければいけません。
この設定は Apache の子プロセス自体ではなく、 - リクエストを受け付けた Apache の子プロセスから fork されたプロセスに - 適用されます。 - これには CGI や SSI から実行されたコマンドが含まれますが、Apache の - 親プロセスから fork されたログのパイププロセスなどには適用されません。
- -メモリリソースのリミットはプロセスあたりのバイト数で表わされます。
- -RLimitCPU
RLimitNPROC
説明: | Apache の子プロセスから起動されたプロセスが起動するプロセスの -数を制限する |
---|---|
構文: | RLimitNPROC number|max [number|max] |
デフォルト: | 未設定。オペレーティングシステムのデフォルトを使用 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | All |
ステータス: | Core |
モジュール: | core |
一つか二つのパラメータをとります。
- 最初のパラメータは全プロセスに対するリソースのソフトリミットを設定し、
- 2 番目のパラメータは最大のリソースリミットを設定します。
- パラメータには数字か、オペレーティングシステムの最大となる
- max
のどちらかを指定することができます。
- 最大のリソースリミットを上げるためには、サーバを
- root
で実行するか起動されなければいけません。
この設定は Apache の子プロセス自体ではなく、 - リクエストを受け付けた Apache の子プロセスから fork されたプロセスに - 適用されます。 - これには CGI や SSI から実行されたコマンドが含まれますが、Apache の - 親プロセスから fork されたログのパイププロセスなどには適用されません。
- -プロセスの制限は、ユーザあたりのプロセス数で制御されます。
- - CGI プロセスがウェブサーバのユーザ ID 以外で実行されるので
- 無ければ、
- このディレクティブは、サーバ自身が生成できるプロセスの数を制限することになります。
- そのような状況になっているかどうかは、error_log
中の
- cannot fork
というメッセージにより
- 確認することができます。
説明: | ホストレベルのアクセス制御とユーザ認証との相互作用を指定 |
---|---|
構文: | Satisfy Any|All |
デフォルト: | Satisfy All |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Core |
モジュール: | core |
互換性: | バージョン 2.0.51 以降では <Limit> ディレクティブと <LimitExcept> ディレクティブの影響を受ける
- |
Allow
と
- Require
の両方が使われているときの
- アクセスポリシーを設定します。パラメータは All
か Any
- です。このディレクティブはある場所へのアクセスがユーザ名/パスワード
- とクライアントのホストのアドレスで制限されているときにのみ
- 役立ちます。デフォルトの動作 (All
) はクライアントがアドレスによる
- アクセス制限を満たし、かつ正しいユーザ名とパスワードを入力することを
- 要求します。Any
では、クライアントはホストの制限を満たすか、
- 正しいユーザ名とパスワードの入力をするかをすればアクセスを許可されます。
- これは、ある場所をパスワードで保護するけれど、特定のアドレスからの
- クライアントにはパスワードの入力を要求せずにアクセスを許可する、
- というようなときに使用できます。
例えば、同じネットワーク上にいる人にはウェブサイトのある部分について - 無制限のアクセスを許したいけれど、外のネットワークの人には - パスワードを提供させるようにするためには、次のような設定をすることが - できます:
- -
- Require valid-user
- Allow from 192.168.1
- Satisfy Any
-
バージョン 2.0.51 からは
- <Limit>
セクションと
- <LimitExcept>
セクションを使用することで
- Satisfy
ディレクティブが
- 適用されるメソッドを制限することが
- できるようになりました。
説明: | CGI スクリプトのインタープリタの位置を調べるための手法 |
---|---|
構文: | ScriptInterpreterSource Registry|Registry-Strict|Script |
デフォルト: | ScriptInterpreterSource Script |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Core |
モジュール: | core |
互換性: | Win32 のみ。
-オプション Registry-Strict は Apache 2.0 以降で使用可能 |
このディレクティブは、Apache で CGI スクリプトを
- 実行する場合に利用するインタープリタを、
- どのように探し出すかについて制御するために使用します。
- デフォルトの設定は Script
です。これはスクリプトの
- shebang 行 (最初の行で #!
から始まるもの)
- に指されているインタープリタを使用します。Win32 ではその行は
- 以下の様になります。
- #!C:/Perl/bin/perl.exe
-
もしくは、perl
が PATH
にある場合は単に:
- #!perl
-
ScriptInterpreterSource Registry
を指定すると、
- スクリプトファイルの拡張子 (例えば、.pl
) を
- キーとして、Windows のレジストリツリー HKEY_CLASSES_ROOT
- を検索するようになります。レジストリのサブキー
- Shell\ExecCGI\Command
か、それが存在しない場合は
- Shell\Open\Command
がスクリプトファイルを開くために
- 使われます。レジストリキーが見つからないときは、Apache は Script
- オプションが指定されたときの動作に戻ります。
ScriptInterpreterSource Registry
を ScriptAlias
されたディレクトリで使うときは
- 注意してください。Apache はそのディレクトリ中のすべてのファイルを
- 実行しようとします。Registry
という設定は通常は実行されない
- ファイルに対して望ましくないプログラムの実行が発生する可能性があります。
- 例えば、ほとんどの Windows システムで、
- .htm
ファイルのデフォルトの「開く」コマンドは
- Microsoft Internet Explorer を実行しますので、スクリプトに指定された
- ディレクトリにある .htm
ファイルへのリクエストはサーバの
- バックグラウンドでブラウザを実行することになります。これは、一分内くらいで
- システムをクラッシュさるための良い方法です。
Apache 2.0 から導入されたオプション Registry-Strict
は
- Registry
と同じことを行ないますが、サブキー
- Shell\ExecCGI\Command
のみを使います。
- ExecCGI
キーは普通に使われるキーではありません。Windows
- レジストリに手動で設定する必要がありますので、システムでの偶発的なプログラムの
- 実行を防ぐことができます。
説明: | サーバがクライアントに送るエラーメッセージに含める電子メールの -アドレス |
---|---|
構文: | ServerAdmin email-address|URL |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Core |
モジュール: | core |
ServerAdmin
は、クライアントに返すさまざまな
- エラーメッセージ中に記述する、
- 問合せアドレスを設定します。与えられた引数を httpd
が
- URL と認識しない場合は、email-address だと解釈して、
- ハイパーリンクのターゲットに mailto:
を付けます。
- 実際には、ここには電子メールアドレスを使うことが推奨されています。
- 多くの CGI スクリプトはそうなっていることを仮定しています。
- URL を使う場合は、あなたの管理下にある別サーバを指すようにしてください。
- そうでないと、エラーが起こったときに連絡をすることができなくなって
- しまいます。
-
その際、これのために専用のアドレスを設定するのが良いでしょう。 - 例えば、
- -
- ServerAdmin www-admin@foo.example.com
-
といったようにします。ユーザはいつもサーバに関する話であるということを - 明記してくるわけではありませんので。
- - -説明: | リクエストを名前ベースのバーチャルホストにマッチさせているときに -使用されるホストの別名 |
---|---|
構文: | ServerAlias hostname [hostname] ... |
コンテキスト: | バーチャルホスト |
ステータス: | Core |
モジュール: | core |
ServerAlias
ディレクティブは、ネームベースのバーチャルホストにおいて
- 使用するホストの別名を指定します。
- <VirtualHost *>
- ServerName server.domain.com
- ServerAlias server server2.domain.com server2
- # ...
- </VirtualHost>
-
説明: | サーバが自分自身を示すときに使うホスト名とポート |
---|---|
構文: | ServerName fully-qualified-domain-name[:port] |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Core |
モジュール: | core |
互換性: | このディレクティブはバージョン 2.0 ではバージョン 1.3 の
- Port ディレクティブの機能も含みます。 |
ServerName
ディレクティブは、
- サーバが自分自身を示すホスト名とポートを設定します。
- これは、リダイレクトする URL を生成する際に利用されます。
- 例えば、ウェブサーバを動かしているマシンは simple.example.com
- で、DNS のエイリアス www.example.com
もあるときに、
- ウェブサーバが後者として認識されて欲しいときは、以下のようにディレクティブを
- 使います。
- ServerName www.example.com:80
-
ServerName
が指定されていないときは、
- サーバは IP アドレスから逆引きを行なうことでホスト名を知ろうとします。
- ServerName
にポートが指定されていないときは、
- サーバはリクエストが来ている
- ポートを使います。最高の信頼性と確実性をもたらすためには、
- ServerName
を使ってホスト名とポートを明示的に
- 指定してください。
名前ベースのバーチャルホスト
- を利用している場合、<VirtualHost>
セクション内の
- ServerName
はこのバーチャルホストにマッチするために
- 何がリクエストの Host: ヘッダに現れる必要があるのかを指定します。
自己参照 URL (例えば mod_dir
モジュールによるものなど)
- が指定されたポートを使うか、クライアントのリクエストのポート番号を使うかを
- 決定する設定は UseCanonicalName
- ディレクティブを参照してください。
説明: | 非互換のブラウザが名前ベースのバーチャルホストにアクセスしたときの -ための互換用 URL パス名 |
---|---|
構文: | ServerPath URL-path |
コンテキスト: | バーチャルホスト |
ステータス: | Core |
モジュール: | core |
ServerPath
ディレクティブは、ネームベースのバーチャルホストにおいて利用する
- 互換用 URL パス名を設定します。
説明: | インストールされたサーバのベースディレクトリ |
---|---|
構文: | ServerRoot directory-path |
デフォルト: | ServerRoot /usr/local/apache |
コンテキスト: | サーバ設定ファイル |
ステータス: | Core |
モジュール: | core |
ServerRoot
ディレクティブは、
- サーバが存在するディレクトリを設定します。
- 通常、conf/
や logs/
といったサブディレクトリが
- 存在します。
- また、他の設定ディレクティブ (例えば Include
や LoadModule
など) における相対パスは、
- このディレクトリからの相対位置となります。
- ServerRoot /home/httpd
-
httpd
の -d
- オプションServerRoot
の権限を適切に設定する方法はセキュリティのこつ説明: | サーバが生成するドキュメントのフッタを設定 |
---|---|
構文: | ServerSignature On|Off|EMail |
デフォルト: | ServerSignature Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | All |
ステータス: | Core |
モジュール: | core |
ServerSignature
ディレクティブは、
- サーバが生成するドキュメント
- (エラーメッセージ、mod_proxy
における FTP のディレクトリリスト、
- mod_info
の出力、等々)
- の最下行に付与するフッタの設定を行ないます。
- そのようなフッタ行を有効にしたい理由には、
- プロキシが複数連なっている場合に、ユーザはどのサーバが返した
- エラーメッセージかを知る手段がほとんど無いというものがあります。
デフォルトである Off
に設定をすると、フッタ行が抑制されます
- (そして、Apache-1.2 以前と互換の動作をします)。
- On
に設定した場合は、単にドキュメントの中に、サーバのバージョン、
- 稼動中のバーチャルホストの ServerName の書かれた行を追加し、
- EMail
にした場合はさらに参照されたドキュメントに対する ServerAdmin を指す "mailto:" が追加されます。
バージョン 2.0.44 以降ではこのディレクティブは ServerSignature
- ディレクティブにより表示される情報も制御します。
ServerTokens
説明: | Server HTTP 応答ヘッダを設定する |
---|---|
構文: | ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full |
デフォルト: | ServerTokens Full |
コンテキスト: | サーバ設定ファイル |
ステータス: | Core |
モジュール: | core |
このディレクティブは、クライアントに送り返す Server
- 応答ヘッダ内に、サーバの一般的な OS 種別や、
- コンパイルされて組み込まれているモジュールの情報を
- 含めるかどうかを指定します。
ServerTokens Prod[uctOnly]
Server:
- Apache
といったように送ります。ServerTokens Major
Server:
- Apache/2
ServerTokens Minor
Server:
- Apache/2.0
ServerTokens Min[imal]
Server:
- Apache/2.0.41
といったように送ります。ServerTokens OS
Server: Apache/2.0.41
- (Unix)
といったように送ります。ServerTokens Full
(もしくは未指定)Server: Apache/2.0.41
- (Unix) PHP/4.2.2 MyMod/1.2
といったように送ります。この設定はサーバ全体に適用され、バーチャルホスト上で有効にしたり - 無効にしたりはできません。
- -バージョン 2.0.44 以降ではこのディレクティブは ServerSignature
- ディレクティブにより表示される情報も制御します。
説明: | マッチするファイルがハンドラで処理されるようにする |
---|---|
構文: | SetHandler handler-name|None |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Core |
モジュール: | core |
互換性: | Apache 2.0 で core に移動 |
.htaccess
や <Directory>
- セクション、<Location>
- セクションに書かれた場合、
- このディレクティブはそこにあるすべてのファイルが
- handler-name で指定されたハンドラで扱われることを強制します。例えば、拡張子に関わらず、
- ディレクトリ全体がイメージマップファイルとして解析して欲しい場合には、
- 以下をそのディレクトリの .htaccess
- ファイルに記述します:
- SetHandler imap-file
-
別の例: URL http://servername/status
- が指定されたときにサーバが状態報告をするようにしたいときは、以下を
- httpd.conf
に記述します:
- <Location /status>
-
- SetHandler server-status
-
- </Location>
-
None
という値を設定することで、
- 前の方の SetHandler
で定義された設定を無効にすることが
- できます。
AddHandler
説明: | クライアントのリクエストや POST の入力を処理するフィルタを設定する |
---|---|
構文: | SetInputFilter filter[;filter...] |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Core |
モジュール: | core |
SetInputFilter
ディレクティブはクライアントの
- リクエストや POST の入力をサーバが受け取ったときに処理するフィルタを
- 設定します。これは AddInputFilter
- ディレクティブを含め、他の場所で定義されているフィルタの設定に
- 追加されます。
複数のフィルタを指定するときは、データを処理する順番に - セミコロンで区切る必要があります。
- - -説明: | サーバの応答を処理するフィルタを設定する |
---|---|
構文: | SetOutputFilter filter[;filter...] |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Core |
モジュール: | core |
SetOutputFilter
ディレクティブは
- サーバの応答をクライアントに送り返される前に処理するフィルタを設定します。
- これは AddOutputFilter
- ディレクティブを含め、他の場所で定義されているフィルタの設定に
- 追加されます。
例えば、以下の設定は /www/data/
ディレクトリのすべての
- ファイルを SSI で処理します。
- <Directory /www/data/>
-
- SetOutputFilter INCLUDES
-
- </Directory>
-
複数のフィルタを指定するときは、データを処理する順番に - セミコロンで区切る必要があります。
- -説明: | 各イベントについて、リクエストを失敗させるまでにサーバが -待つ時間を設定 |
---|---|
構文: | TimeOut seconds |
デフォルト: | TimeOut 300 |
コンテキスト: | サーバ設定ファイル |
ステータス: | Core |
モジュール: | core |
TimeOut
ディレクティブは、現在のところ
- 以下の三つの待ち時間についての定義を行います:
将来には別々の設定をすることが可能にできるよう考慮中です。 - Apache 1.2 以前はタイマーは 1200 がデフォルトでしたが、 - 300 に下げられました。300 でもほとんどの場合は十分すぎる値です。 - コード中の変な場所にまだパケットを送る際にタイマをリセットしない - 場所があるかもしれないので、デフォルトをより小さい値にはしていません。
- - -説明: | サーバが自分自身の名前とポートを決定する方法を設定する |
---|---|
構文: | UseCanonicalName On|Off|Dns |
デフォルト: | UseCanonicalName Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
ステータス: | Core |
モジュール: | core |
多くの状況で Apache は自己参照 URL、すなわち
- 同じサーバを指す URL、を作成する必要があります。
- UseCanonicalName On
の場合は、ServerName
ディレクティブで指定されている
- ホスト名とポート番号を使って、その正規名 (自己参照の名前) を生成します。
- この名前は、すべての自己参照 URL で使われますし、CGI の
- SERVER_NAME
と SERVER_PORT
でも使われます。
UseCanonicalName Off
の場合、
- クライアントがホスト名とポートを指定したときには、
- それらを元に自己参照 URL を作成します (指定がなかったときは
- 上の定義と同様にして正規名を解決します)。
- これらの値は名前ベースの
- バーチャルホストを実装で使われているのと同じ値で、
- 同じクライアントで取得できる値になっています。
- CGI 変数 SERVER_NAME
と SERVER_PORT
- もクライアントから与えられた値から作成されます。
このような挙動が便利な例は、イントラネットのサーバで www
- のような短い名前でユーザがマシンに接続するときです。
- ユーザの入力で短いホスト名が使われていて、URL が最後のスラッシュ無しの
- ディレクトリになっている http://www/splat
のようなとき、
- Apache はリクエストを http://www.domain.com/splat/
- へリダイレクトします。
- 認証をするように設定していると、この場合
- ユーザは 2 回認証をしなければならなくなります (www
に
- 対して 1 回、www.domain.com
に対してもう 1 回 --
- 詳細は この話題の
- FAQ を参照してください)。
- しかし UseCanonicalName
が Off
になっていると、
- Apache は http://www/splat/
にリダイレクトします。
三つ目のオプション UseCanonicalName DNS
は、
- 大規模な IP ベースのバーチャルホスティングで、
- Host:
ヘッダを提供しない古いクライアントを
- サポートする場合を想定しています。
- このオプションでは Apache は、クライアントが接続した IP アドレスに対して
- DNS の逆引きを行なって、自己参照 URL を作成します。
CGI が SERVER_NAME
に関して何らかの前提条件を
- 仮定しているときには、このオプションの設定によっては動作しなく
- なるかもしれません。クライアントは実質的にはホスト名として
- 何でも望みの値を指定することができます。CGI が
- SERVER_NAME
を使って自己参照 URL を作成することしかしない
- 場合は、どの設定を行なっても大丈夫なはずです。
ServerName
Listen
説明: | 特定のホスト名や IP アドレスのみに適用されるディレクティブを -囲む |
---|---|
構文: | <VirtualHost
- addr[:port] [addr[:port]]
- ...> ... </VirtualHost> |
コンテキスト: | サーバ設定ファイル |
ステータス: | Core |
モジュール: | core |
<VirtualHost>
及び
- </VirtualHost>
は、
- 特定のバーチャルホストに対してのみ適用されるディレクティブ群を括る
- ために使われます。
- バーチャルホストコンテキストで許可される全てのディレクティブを指定可能です。
- サーバが、指定されたバーチャルホストにあるドキュメントへの
- リクエストを受け付けた場合、
- <VirtualHost>
セクションの中にある
- ディレクティブが適用されます。
- Addrは、次のものが利用できます:
NameVirtualHost *
と共に使われる、
- すべての IP アドレスにマッチする文字 *
_default_
- <VirtualHost 10.1.2.3>
-
- ServerAdmin webmaster@host.foo.com
- DocumentRoot /www/docs/host.foo.com
- ServerName host.foo.com
- ErrorLog logs/host.foo.com-error_log
- TransferLog logs/host.foo.com-access_log
-
- </VirtualHost>
-
IPv6 アドレスはオプションのポート番号の指定と区別するために、 - 角括弧で括って指定する必要があります。次は IPv6 の例です:
- -
- <VirtualHost [2001:db8::a00:20ff:fea7:ccea]>
-
- ServerAdmin webmaster@host.example.com
- DocumentRoot /www/docs/host.example.com
- ServerName host.example.com
- ErrorLog logs/host.example.com-error_log
- TransferLog logs/host.example.com-access_log
-
- </VirtualHost>
-
各々のバーチャルホストにはそれぞれ違う IP アドレス、ポート番号
- もしくはホスト名に対応する必要があり、
- 1 番目の場合には複数のアドレスで IP パケットを受信できるように
- サーバマシンを設定しなければなりません。
- (もし、マシンが複数のネットワークインターフェースと持たない場合は、
- (OSがサポートしていれば) ifconfig alias
コマンドにより
- 達成できます)。
:port
といった形式で記述することにより、
- マッチさせるポートを変更可能です。
- この指定をしない場合には、主サーバ設定における
- 一番最後に Port
で指定されたポートが
- デフォルトとなります。
- :*
を指定することにより、
- アドレス上の全てのポートにマッチします。(_default_
のときは
- これを使うことが推奨されています。)
セキュリティに関して: - サーバーを起動した以外のユーザがログファイルが保管されるディレクトリに - 書き込み可能なときになぜセキュリティが破られる可能性があるかの詳細は - セキュリティに関するコツ を - 参照してください。
- -<VirtualHost>
は Apache が Listen する
- IP アドレスには影響を与えません。
- Listen
を
- 使って Apache が正しいアドレスを listen するように設定する必要があります。
IP ベースのバーチャルホストを使っている場合は、特別な名前
- _default_
を指定することができます。その場合は
- そのバーチャルホストは他のバーチャルホストで明示的に挙げられていない
- すべての IP アドレスにマッチします。_default_
バーチャルホストが無い
- 場合に IP がバーチャルホストで指定されたものにマッチしないときは、
- VirtualHost セクションの外のすべての定義からなる「主」サーバ設定が
- 使われます。(ただし、NameVirtualHost
ディレクティブにマッチする
- すべての IP アドレスは「主」サーバ設定も _default_
バーチャルホストも
- 使わないことに注意してください。詳しくは ネームベースのバーチャルホスト を
- 参照してください。)
:port
といった形式で記述することにより、
- マッチさせるポートを変更可能です。
- この指定をしない場合には、主サーバ設定における
- 一番最後に Listen
で指定された
- ポートがデフォルトとなります。
- :*
を指定することにより、
- アドレス上の全てのポートにマッチします。(_default_
のときは
- これを使うことが推奨されています。)
:port
といった形式で記述することにより、
- マッチさせるポートを変更可能です。
- この指定をしない場合には、主サーバ設定における
- 一番最後に Port
で指定されたポートが
- デフォルトとなります。
- :*
を指定することにより、
- アドレス上の全てのポートにマッチします。(_default_
のときは
- これを使うことが推奨されています。)
サーバーを起動した以外のユーザがログファイルが保管されるディレクトリに - 書き込み可能なときになぜセキュリティが破られる可能性があるかの詳細は - セキュリティに関するコツ を - 参照してください。
Apache HTTP 泣若 若吾с 2.3
+茯: | 絽吾篏睡純 Apache HTTP 泣若潟∽ |
---|---|
鴻若帥: | Core |
茯: | 潟 Listen 純宴荐絎 |
---|---|
罕: | AcceptFilter protocol accept_filter |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | 2.1.5 篁ラ |
Listen 純宴絲障OS 堺c潟ゃ
+ 鴻ccс紊у>散若帥篆<
+ HTTP 鴻篏<障с若泣若祉鴻
+ 純宴cс憜泣若
+
+ FreeBSD Accept Filter Linux c
+ TCP_DEFER_ACCEPT
帥с
FreeBSD ゃ :
+
+ AcceptFilter http httpready
+ AcceptFilter https dataready
+
httpready
Accept Filter HTTP 鴻篏
+ 若с<潟違障鴻篏篆<腟
+ 緇泣若祉鴻障荅括完ゃ accf_http(9)
+ сHTTPS 鴻垸 accf_data(9)
+ c帥帥篏睡障
Linux сゃ :
+
+ AcceptFilter http data
+ AcceptFilter https data
+
Linux TCP_DEFER_ACCEPT
HTTP 鴻<潟違
+ 泣若障none
篁ュゃ
+ TCP_DEFER_ACCEPT
鴻障荅括完ゃ Linux
+ man 若 tcp(7)
+ с
綣違 none
絎潟絲障 Accept
+ Filter ≦鴻障nntp
c泣若若帥
+ 綽荀潟鴻с :
AcceptFilter nttp none
茯: | 緇膓劫宴篁純若鴻絎 |
---|---|
罕: | AcceptPathInfo On|Off|Default |
: | AcceptPathInfo Default |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | Apache 2.0.30 篁ラт戎 |
cc絎<ゃ (絖c
+ 絖<ゃ) 緇膓劫宴鴻篁
+ 九勝障膓劫宴鴻 PATH_INFO
+ 医紊違純障
箴違/test/
here.html
<ゃ
+ 筝ゃ帥c障
+ /test/here.html/more
/test/nothere.html/more
+ 吾鴻筝≧鴻 /more
PATH_INFO
障
AcceptPathInfo
cc絎純
+ 筝ゃ綣違:
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
+ c篏帥c PATH_INFO
+ 冴ャ潟潟潟綽荀障
+ <Files "mypaths.shtml">
+
+ Options +Includes
+ SetOutputFilter INCLUDES
+ AcceptPathInfo On
+
+ </Files>
+
茯: | h┃絎<ゃ |
---|---|
罕: | AccessFileName filename [filename] ... |
: | AccessFileName .htaccess |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
鴻泣若c + 絲障h┃絎<ゃ鴻c + ャ<潟吾 + 剛cф絎筝荀с筝 + 荀ゃc<ゃ荐絎<ゃ茯粋昭帥障箴:
+ +
+ AccessFileName .acl
+
荐絎篁ヤ≦鴻
+ ャ<潟 /usr/local/web/index.html
+ 菴泣若 /.acl
, /usr/.acl
,
+ /usr/local/.acl
, /usr/local/web/.acl
+ cc茯粋昭帥障
+ <Directory />
+
+ AllowOverride None
+
+ </Directory>
+
茯: | 鴻潟鴻潟潟潟帥ゃ text/plain
+text/html 翫菴遵 charset <若 |
---|---|
罕: | AddDefaultCharset On|Off|charset |
: | AddDefaultCharset Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
鴻潟鴻潟潟潟帥ゃ text/plain
+ text/html
+ 翫障鴻潟鴻菴遵<c≪帥ゃ絖祉<若
+ (絖潟潟若c潟違) ゃccф絎障
+ 鴻潟 (荐恰絵: 鴻潟鴻 HTML) META
+ 荀膣ф絎絖祉≦鴻障
+ 腟若吟ゃ≪潟眼荐絎ф浦障障
+ 罘純 AddDefaultCharset Off
荐絎х≦鴻障
+ AddDefaultCharset On
違
+ Apache 絖祉 iso-8859-1
荐絎障
+ 篁 charset 絎сゃс違ゃс篏帥障
+ 絎ゃMIME <c≪帥ゃ篏帥
+ IANA
+ 脂蚊絖祉<筝ゃ鴻с
+ 箴:
+ AddDefaultCharset utf-8
+
AddDefaultCharset
篏帥鴻純若鴻
+ 絎絖潟潟若ccゃ
+ 純若鴻絖祉絎紊у翫帥с
+ 箴激若 CGI 鴻
+ 潟潟潟純若鴻絖祉<若帥菴遵翫с
+ 若吟ュ若帥阪ャ鴻泣ゃ鴻c潟違
+ 綣莎激翫с絖祉祉
+ 吟 "絖潟潟若御" 罘純鴻c若吟
+ 絎с<茹f浦膈鴻篆罩
+ () с
AddCharset
茯: | MIME-type 阪c帥蚊綵 |
---|---|
罕: | AddOutputFilterByType filter[;filter...] MIME-type
+[MIME-type] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | Apache 2.0.33 篁ラт戎 |
cc綽膈 MIME-type 綽阪c篏睡障
+ +罨<箴 mod_deflate
DEFLATE
c帥
+ 篏帥c障text/html
text/plain
+ 鴻阪 () ゃ≪潟
+ х軒障
+ AddOutputFilterByType DEFLATE text/html text/plain
+
茲違c帥с潟潟潟祉潟潟
+ 綽荀障c帥絲障
+ AddOutputFilterByType
筝ゃゆ吾с障
罨<箴 text/html
鴻鴻阪
+ 障 INCLUDES
c帥у DEFLATE
c帥障
+ <Location /cgi-bin/>
+
+ Options Includes
+ AddOutputFilterByType INCLUDES;DEFLATE text/html
+
+ </Location>
+
AddOutputFilterByType
cc
+ 鴻c帥翫c絎
+ 障箴違MIME 帥ゃ羆阪с
+ DefaultType
荐絎c
+ DefaultType
荐絎篏帥障
腆阪c帥純若鴻
+ 腓榊潟潟潟帥ゃ蚊綵с障箴
+ AddType
cc
+ ForceType
cc篏帥障
+ (nphс) CGI 鴻с潟潟潟帥ゃ荐絎с
+ 紊т紊с
帥ゃ罸阪c帥激鴻羆冴障
+茯: | URL 筝膃垸劫∽絖篌荐怨 +羆阪 |
---|---|
罕: | AllowEncodedSlashes On|Off |
: | AllowEncodedSlashes Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | Apache 2.0.46 篁ラт戎 |
AllowEncodedSlashes
cc膃垸
+ 劫∽絖 (/
%2F
激鴻c
+ \
絲上 %5C
) 絖 URL 篏睡
+ 荐怨羆阪障絽吾 URL 404 (Not found)
+ ф障
AllowEncodedSlashes
On
+ 劫∽絖篏睡PATH_INFO
+ 篏帥筝綵鴻腴<障
Turning AllowEncodedSlashes
On
is
+ mostly useful when used in conjunction with PATH_INFO
.
膃垸鴻激ャ荐怨緇
+ 障%2F
(≫激鴻с)
+ %5C
篁緇垩 URL 筝с障障綵√
+ 罧障
茯: | .htaccess ц┗cc腮蕁 |
---|---|
罕: | AllowOverride All|None|directive-type
+[directive-type] ... |
: | AllowOverride All |
潟潟鴻: | c |
鴻若帥: | Core |
≪吾ャ若: | core |
泣若 (AccessFileName
c絎)
+ .htaccess <ゃ荀ゃ<ゃ筝
+ 絎hcc絎臂荐絎cc
+ 筝吾сャ綽荀障
AllowOverride
罩h頫憟<<Directory>
+ 祉激с潟с炊鴻с<Location>
<DirectoryMatch>
+ <Files>
祉激с潟с≦鴻с
+ cc None 荐絎.htaccess <ゃ絎
+ ∴障
+ 翫泣若<ゃ激鴻 .htaccess
<ゃ茯
+ 荅帥障
cc All
荐絎
+ .htaccess
潟潟鴻
+ ccс障
directive-type 篁ヤcc臂ゃ + 若若絎障
+ +AuthDBMGroupFile
,
+ AuthDBMUserFile
,
+ AuthGroupFile
,
+ AuthName
,
+ AuthType
, AuthUserFile
, Require
)DefaultType
, ErrorDocument
, ForceType
, LanguagePriority
,
+ SetHandler
, SetInputFilter
, SetOutputFilter
,
+ mod_mime
Add* Remove*
+ cc)AddDescription
,
+ AddIcon
, AddIconByEncoding
,
+ AddIconByType
,
+ DefaultIcon
, DirectoryIndex
, FancyIndexing
, HeaderName
, IndexIgnore
, IndexOptions
, ReadmeName
+ )Allow
, Deny
, Order
).Options
+ XBitHack
)
+ Options
ц┃絎激с
+ (腥榊純) 潟潟阪鴻膈垩緇膓
+ 荐絎с障箴:
+ +
+ AllowOverride AuthConfig Indexes
+
筝箴с AuthConfig
Indexes
<
+ 絮cc鴻泣若若綣莎激障
茯: | HTTP 茯荐若茯 (荐恰絵: realm) |
---|---|
罕: | AuthName auth-domain |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Core |
≪吾ャ若: | core |
ccc絲障茯 (荐恰絵: realm)
+ 絎障
+ 茯若九鴻若篆<違
+ ゃ≪潟障
+ AuthName
筝ゃ綣違
+ 鴻若鴻障翫
+ 綣膃ф違障
+ cc
+ AuthType
cc
+ Require
cc
+ AuthUserFile
+ AuthGroupFile
cc
+ 筝膩綽荀障
箴:
+ +
+ AuthName "Top Secret"
+
AuthName
絎絖
+ 紊ч吟鴻若ゃ≪違茵腓冴障
茯: | 若区荐若腮蕁 |
---|---|
罕: | AuthType Basic|Digest |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Core |
≪吾ャ若: | core |
cc絲乗院cу若吟取荐若腮蕁吾潟障
+ 憜 Basic
Digest
+ 絎茖障
+
+ cc AuthName
cc
+ Require
cc
+ AuthUserFile
AuthGroupFile
cc
+ 筝膩綽荀障
茯: | CGI 鴻ゃ潟帥若帥篏臀茯帥鴻羈 |
---|---|
罕: | CGIMapExtension cgi-path .extension |
: | None |
潟潟鴻: | c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | NetWare |
cc Apache CGI 鴻絎茵
+ ゃ潟帥若帥「号九勝障
+ 箴違CGIMapExtension sys:\foo.nlm .foo
荐絎
+ .foo
≦宍絖鴻 CGI 鴻 FOO ゃ潟帥若帥
+ 羝<障
茯: | Content-MD5 HTTP 綽膈鴻 |
---|---|
罕: | ContentDigest On|Off |
: | ContentDigest Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Options |
鴻若帥: | Core |
≪吾ャ若: | core |
ccRFC1864 RFC2068 絎臂
+ Content-MD5
若鴻障
MD5 篁紙激若帥<祉若吾ゃ吾с鴻(膣 + 茵憗) 荐膊≪眼冴с + 若帥紊眼c翫絽吾蕭篆♂弱墾с<祉若吾ゃ吾с鴻紊眼 + 障
+ +Content-MD5
潟若潟
+ 潟ccc若障<祉若吾絎сс
+ (Message Integrity Check - MIC)箴障
+ 茯帥鴻с激ゃ≪潟
+ 筝腟莊潟ccc篋紊眼
+ 罎冴с障箴:
+ Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
+
鴻罸<祉若吾ゃ吾с鴻荐膊 (ゃc激ャ障) + + 泣若若潟鴻篏筝ゃ羈
+ +Content-MD5
core
罘純
+ ャ<潟炊鴻с
+ SSI ャ<潟 CGI 鴻阪ゃ潟吾絎
+ 綽膈翫篁筝障
+
茯: | 泣若潟潟潟帥ゃ羆阪с + MIME 潟潟潟帥ゃ |
---|---|
罕: | DefaultType MIME-type |
: | DefaultType text/plain |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
泣若MIME 帥ゃ羆阪с + ャ<潟篆<荀羆障
+ +泣若ャ<潟潟潟潟帥ゃゃ≪潟ャ綽荀
+ 障с帥ゃャ翫
+ DefaultType
ф絎帥ゃ障
+ 箴:
+ DefaultType image/gif
+
.gif
≦宍絖<ゃ障
+ 紊 GIF 糸障cс
ForceType
cc
+ ccc MIME 帥ゃ箴
+ 羈<ゃ≦宍絖
+ <c≪帥ゃ羆阪с篁 MIME 帥ゃ絎臂
+ 筝吾障
茯: | 絎<ゃ激鴻c泣c帥 +cc蚊 |
---|---|
罕: | <Directory directory-path>
+... </Directory> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
絎c泣c
+ cc
+ <Directory>
+ </Directory>
絲障cc臂ゃ蚊障
+ 筝c潟潟鴻ц┗cc
+ с障
+ 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>
+ccャ激潟潟c
+c鴻с≪祉鴻翫障
~
絖
+ 篁ф≦宍罩h頫憗с障
+ 箴:
+ <Directory ~ "^/www/.*/[0-9]{3}">
+
c絎翫/www/
篁ヤ医
+ 3 絖c障
茲違 (罩h頫憘札紊) <Directory>
祉激с潟
+ ャ<潟c (筝篏c) 違
+ .htaccess <ゃcc茯粋昭帥ゃゃ
+ 鴻障
+ 箴違
+ <Directory />
+
+ AllowOverride None
+
+ </Directory>
+
+ <Directory /home/>
+
+ AllowOverride FileInfo
+
+ </Directory>
+
荐絎ャ<潟 /home/web/dir/doc.html
吾
+ ≪祉鴻c翫篁ヤ篏障:
AllowOverride None
+ (.htaccess
<ゃ≦鴻)AllowOverride FileInfo
+ (/home
c絲障)/home/.htaccess
, /home/web/.htaccess
,
+ /home/web/.htaccess
<ゃ筝
+ FileInfo cc罩h頫憗絽吾祉激с潟鴻障 + 障 + 緇罩h頫憗荐絎<ゃ憗ц障 + 箴違篁ヤ翫
+ +
+ <Directory ~ abc$>
+
+ # ... directives here ...
+
+ </Directory>
+
罩h頫憗祉激с潟鴻絽吾 <Directory>
+ .htaccess
腟障ц障
+ 緇с罩h頫憗 /home/abc/public_html/abc
+ 絲上 <Directory>
障
Apache с <Directory />
吾≪祉鴻
+ Allow from All
c羈
+ URL <ゃс Apache с
+ 篁ヤ紊眼ィ絅障
+ <Directory />
+
+ Order Deny,Allow
+ Deny from All
+
+ </Directory>
+
≪祉鴻純c絲障 + ャ荐絎違с + ゃ祉ャc≪潟 + с
+ +c祉激с潟 httpd.conf <ゃ吾障
+ <Directory>
+ ccャ絖с
+ <Limit>
<LimitExcept>
祉激с潟筝
+ 荐菴違с障
茯: | 罩h頫憗<ゃ激鴻c +泣c帥cc蚊 |
---|---|
罕: | <DirectoryMatch regex>
+... </DirectoryMatch> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
<Directory>
+ cc罕<DirectoryMatch>
+ </DirectoryMatch>
絎c
+ 泣c翠cc臂ゃ蚊障
+ cc綣違罩h頫憗障箴:
+ <DirectoryMatch "^/www/(.+/)?[0-9]{3}">
+
/www/ 篁ヤ医 3 絖c障
+ + + +<Directory>
罩h頫憗絎
+ゃ <Directory>
茯: | с荀<ゃ潟ャ<潟若 +c |
---|---|
罕: | DocumentRoot directory-path |
: | DocumentRoot /usr/local/apache/htdocs |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
cchttpd
+ <ゃ箴c荐絎障
+ Alias
cc翫
+ ャ<潟 (荐恰絵:<ゃ激鴻筝) 鴻
+ 鴻 URL 拷ャ<潟若篁筝障
+ 箴:
+ DocumentRoot /usr/web
+
翫
+ http://www.my.host.com/index.html
吾≪祉鴻
+ /usr/web/index.html
菴障
+ directory-path 腟九障鴻с翫
+ ServerRoot
+ 後障鴻帥障
DocumentRoot
緇鴻激ョ<
+ 絎綽荀障
茯: | 筝<ゃ茯粋昭<≪潟違 +篏帥 |
---|---|
罕: | EnableMMAP On|Off |
: | EnableMMAP On |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
cc筝<ゃ絎鴻茯粋昭綽荀
+ httpd
<≪潟違篏帥九勝障
+ с
+ 箴違mod_include
篏帥c SSI <ゃ
+ <ゃ筝若帥≪祉鴻綽荀
+ Apache OS 泣若違<ゃ<≪障
+ <≪ц純筝障 + 医c筝馹蚊<≪潟違 + 篏睡鴻翫障:
+ +httpd
ц純純<障DocumentRoot
+ сhttpd
<≪<ゃゃ
+ c莎激祉違<潟若激с潟若
+ httpd
激ャ醇с障馹綵障泣若荐絎翫篁ヤ + <ゃ<≪潟違篏睡筝:
+ +
+ EnableMMAP Off
+
NFS 潟<ゃ馹<ゃ炊腓榊 + 罘純篏睡筝障:
+ +
+ <Directory "/path-to-nfs-files">
+
+ EnableMMAP Off
+
+ </Directory>
+
茯: | <ゃゃ≪潟吾若 sendfile 泣若 +篏帥 |
---|---|
罕: | EnableSendfile On|Off |
: | EnableSendfile On |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | 若吾с 2.0.44 篁ラт戎 |
ccゃ≪潟<ゃ絎鴻
+ httpd
若
+ sendfile 泣若篏帥九勝障с
+ 箴育<ゃ鴻<ゃ
+ 筝若帥≪祉鴻綽荀Apache OS
+ 泣若違<ゃ茯粋昭 sendfile 篏帥c
+ <ゃ絎鴻障
sendfile read send ャ茵<蚊綵 + 帥障若<ゃ激鴻筝 + 筝馹帥罘純篏睡筝鴻翫障:
+ +DocumentRoot
+ (箴 NFS SMB)
+ с若荳c激ャ篏帥c若<ゃ
+ с障馹綵障泣若荐絎翫篁ヤ + 罘純篏睡筝:
+ + +
+ EnableSendfile Off
+
NFS SMB 潟<ゃ馹<ゃ炊腓榊 + 罘純篏睡筝障:
+ +
+ <Directory "/path-to-nfs-files">
+
+ EnableSendfile Off
+
+ </Directory>
+
茯: | 若榊泣若ゃ≪潟 |
---|---|
罕: | ErrorDocument error-code document |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | Apache 2.0 с鴻若罕篁ュ若吾с潟 +紊c障 |
馹若榊篏 + Apache 篁ヤゃ>ゃ篏荐絎с障
+ +篏с2 4
+ ErrorDocument
cc
+ HTTP 鴻潟鴻潟若<祉若吾 URL 絎ц┃絎障
+ Apache 馹若≪菴遵宴箴障
URL 翫鴻激ャу障 (/) 若 web-path (
+ DocumentRoot
後障
+ ) ゃ≪潟茹f浦с絎 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
篏帥c Apache
+ 若潟若膂≦<祉若吾絎с障
+ 絽吾綽荀с障default
篏帥
+ √ ErrorDocument
cc荐絎
+ 膓帥сApache 若潟若膂≦<祉若吾
+ 祉с障
+ ErrorDocument 404 /cgi-bin/bad_urls.pl
+ <Directory /web/docs>
+
+ ErrorDocument 404 default
+
+ </Directory>
+
≪若 URL (箴違 http
篁筝号)
+ ErrorDocument
絎
+ 吾泣若ャ<潟ャ
+ Apache ゃゃ≪潟冴羈
+ ∫c莎激馹障
+ 筝с荀ゃ≪潟若鴻若帥鴻潟若
+ 篁cゃ鴻若帥鴻潟若с
+ 鴻若帥鴻潟若篏帥c URL 鴻с羆阪
+ с篁ゃ≪潟羞隙恒障
+ ErrorDocument 401
≪若 URL 絎
+ ゃ≪潟 401 鴻若帥鴻潟若
+ 鴻若若吟若ュ荀羆違障
+ 緇cErrorDocument 401
cc篏帥翫
+ 綽若吾с違障
Microsoft Internet Explorer (MSIE) с泣若若<祉若吾 + 絨∴荳若<祉若吾 + 臀障泣ゃ冴ゃ若腮蕁c違障 + 筝若吾 512 ゃ紊MSIE + 泣若若茵腓冴障荅潟宴 Microsoft + Knowledge Base 荐篋 Q294807 + 障
+ +祉若<祉若吾筝吾с障劫倶筝с
+ ErrorDocument
荐絎
+ 泣<祉若吾篏帥障
+ 鴻筝罩c綵√鴻罎冴翫絽吾鴻
+ 喝婚筝罩≪泣若<祉若吾菴障
+ 臀筝罩c鴻c綣莎激祉ャe馹
+ 絎綽荀ェ臀с
2.0 若吾с潟с絲障c篋綣膃 + 篁<祉若吾с絎障
+ + + + +茯: | 泣若若医贋 |
---|---|
罕: | ErrorLog file-path|syslog[:facility] |
: | ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows and OS/2) |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
ErrorLog
cc
+ 泣若障障若
+ 荐蚊冴<ゃ荐絎障
+ file-path 腟九障鴻сServerRoot
後障鴻帥障
+ ErrorLog /var/log/httpd/error_log
+
file-path ゃ (|) 紮障翫 + 若違絎茵潟潟 + 絎茹i障
+ +
+ ErrorLog "|/usr/local/bin/httpd_errors"
+
<ゃ紊 syslog
絎c
+ 激鴻泣若 syslogd(8) 潟違鴻障
+ сlocal7
<激c障
+ syslog:facility
c綵≪ц菴違
+ 絽 syslog(1) ャ<潟ц<激c筝ゃ篏帥
+ с障
+ ErrorLog syslog:user
+
祉ャ: + 違<ゃ主c泣若莎桁若銀札紊 + 若吟c吾莨若翫祉ャc眼醇с + ≪荅括完 祉ャc≪潟 + с
+Unix 篁ュ若с<ゃ鴻ュ + 若鴻激ャ篏睡荐宴 + 腆阪鴻激ャ帥篏睡羈筝 + 荐絎<ゃс鴻激ャ帥篏帥鴻с
+LogLevel
茯: | ETag HTTP 綽膈篏篏睡 +<ゃ絮 |
---|---|
罕: | FileETag component ... |
: | FileETag INode MTime Size |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
+ FileETag
cc
+ ャ<潟<ゃ冴ャс
+ ETag
(潟cc帥) 綽膈c若篏篏睡
+ <ゃ絮с荐絎障 (ETag
ゃ若絽膀膣
+ c激ャ膊∞т戎障) Apache 1.3.22 篁ュсETag
ゃ
+ 絽吾<ゃ inode, 泣ゃ冴腟篆罩f (mtime) 篏
+ 障FileETag
cc篏帥
+ 吾吟с障茯茘若若:
+
FileETag INode MTime Size
ETag
c若
+ 綽膈篁障INode
, MTime
, Size
若若
+ +
-
篁
+ 絎с障翫綺膀蚊膓帥
+ 荐絎紊眼障・莨
+ <若若絎喝婚膓帥荐絎≦鴻障
c荐絎
+ FileETag INode MTime Size
+ 泣c荐絎 FileETag -INode
+ 泣c荐絎 (荐絎筝吾違泣c
+ 泣c膓帥障) FileETag MTime Size
+ 障
茯: | <ゃcc蚊 |
---|---|
罕: | <Files filename> ... </Files> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
<Files>
cc
+ 筝cc膀蚊<ゃу狗障
+ <Directory>
cc <Location>
cc
+ 罘純<障
+ </Files>
cc絲障
+ c違障
+ 祉激с割賢cc若劫 (<ゃ緇)
+ 絎<ゃ鴻吾с障
+ <Files>
祉激с潟
+ <Directory>
祉激с潟
+ .htaccess
茯粋昭障緇
+ <Location>
祉激с潟
+ 荐絎<ゃ憗障
+ <Files>
+ <Directory>
祉激с喝
+ 鴻с
+ <ゃ激鴻筝翠絎с障
filename 綣違<ゃゃ若絖
+ сゃ若с ?
筝ゃ絖*
篁紙絖障
+ ~
絖篁ф≦宍罩h頫憗篏帥с障
+ 箴違
+ <Files ~ "\.(gif|jpe?g|png)$">
+
筝ゃ潟帥若糸若障
+
+ <FilesMatch>
篏帥鴻
+ ィ絅障
<帥<Directory>
<Location>
祉激с潟違
+ <Files>
+ .htaccess
<ゃус障
+ 若吟<ゃ罸≪祉鴻九勝茵с
+ c障
茯: | 罩h頫憗<ゃ +cc蚊 |
---|---|
罕: | <FilesMatch regex> ... </FilesMatch> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
<FilesMatch>
cc
+ <Files>
+ cc罕筝cc膀蚊<ゃу狗障
+ cc罩h頫憗絎障
+ 箴:
+ <FilesMatch "\.(gif|jpe?g|png)$">
+
筝ゃ潟帥若糸鏄√障
+ + +茯: | 鴻<ゃ絎 MIME 潟潟潟帥ゃ + |
---|---|
罕: | ForceType MIME-type|None |
潟潟鴻: | c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | Apache 2.0 core 腱糸 |
.htaccess
<Directory>
祉激с潟
+ <Location>
祉激с潟
+ <Files>
祉激с潟
+ 吾翫cc鴻<ゃ
+ MIME-type
+ ф絎潟潟潟帥ゃ宴障違
+ GIF <ゃ違cc鴻<ゃ .gif
+ х篁ヤ篏睡障:
+ ForceType image/gif
+
DefaultType
c
+ cc<c≪帥ゃ羆冴с
+ <ゃ≦宍絖鴻 MIME 帥ゃ∫d
+ 筝吾羈
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 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Core |
≪吾ャ若: | core |
cc鴻医с
+ DNS ≪鴻障
+ (CGI/SSI REMOTE_HOST
紊違羝<障)
+ Double
絎翫2 綣茵障
+ ゃ障綣緇腟絲障罩e茵障罩e
+ 腟 IP ≪鴻筝吾≪鴻筝眼
+ 障("tcpwrappers" 茯с PARANOID 若違障)
mod_authz_host
с鴻≪祉
+ 九勝茵翫
+ 荐絎絋篏 2 綣絎茵障
+ 祉ャc篆ゃ綽荀с
+ HostnameLookups Double
荐絎
+ 篁 2 綣腟篏帥с障
+ 箴違HostnameLookups On
荐絎倶с
+ 鴻≪祉劫狗茵c吾с吾
+ 鴻2 綣
+ REMOTE_HOST
絽吾綣腟羝<障
cc
+ 綵綣綽荀с泣ゃ
+ 若c篏羝Off
c障
+ ≪篏荐綮吟
+ 潟若吟cс
+ DNS ≪綽荀翫紊
+ 莢激蕭泣ゃсcc Off
鴻с
+ /support c障с
+ ゃ潟鴻若c bin
泣c
+ ゃ潟鴻若 logresolve
若cc
+ Apache 篏ャ違罧 IP ≪鴻鴻
+ ≪純с
茯: | 莎桁鴻с帥cc +蚊 |
---|---|
罕: | <IfDefine [!]parameter-name> ...
+ </IfDefine> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
<IfDefine test>...</IfDefine>
+ 祉激с潟
+ cc>散篁ф絎障
+ <IfDefine>
祉激с潟
+ 障cctest
+ 絎臂水障
+ test 絎臂違
+ 紮腟篋絎cc∴障
<IfDefine>
祉激с潟cc
+ 絎 test
+ 罨<篋ゃ綵√<筝ゃ障:
!
parameter-name翫parameter-name 篁<若帥 + 絎臂育紮腟篋cc障 + 緇翫с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>
+
茯: | ≪吾ャ若絖綽 +cc蚊 |
---|---|
罕: | <IfModule [!]module-file|module-identifier> ...
+ </IfModule> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | ≪吾ャ若茘ュ若吾с 2.1 篁ラт戎純 |
<IfModule test>...</IfModule>
+ 祉激с潟≪吾ャ若絖cc
+ 絎障
+ <IfModule>
祉激с潟
+ 障cctest
+ ф絎≪吾ャ若腟粋昭障水障
+ test 腟粋昭障違紮腟篋cc
+ ∴障
<IfModule>
祉激с潟cc
+ 絎 test
+ 罨<篋ゃ綵√<筝ゃ障
翫module 篁≪吾ャ若
+ Apache 腟粋昭障
+ (潟潟ゃ羝帥LoadModule
+ 茯粋昭筝≧)
+ 紮腟篋cc障
+ 緇翫сmodule 腟粋昭障
+ 翫障
module 綣違≪吾ャ若茘ュ
+ 潟潟ゃ≪吾ャ若<ゃс
+ 箴違rewrite_module
茘ュ
+ mod_rewrite.c
<ゃс
+ ≪吾ャ若茲違純若鴻<ゃ罕翫絖
+ STANDARD20_MODULE_STUFF
<ゃ
+ 篏帥c
<IfModule>
祉激с潟
+ ャ絖純с
+ 茲違≪吾ャ若鴻茵篏睡с障
<IfModule>
祉激с潟筝
+ ャ綽荀障茯: | 泣若荐絎<ゃ筝篁荐絎<ゃ莨若 |
---|---|
罕: | Include file-path|directory-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | ゃ若 2.0.41 篁ラт戎 |
cc泣若荐絎<ゃ + 篁荐絎<ゃゃ潟若с障
+ +茲違<ゃ≪<筝綺茯粋昭
+ 激с綵√ (fnmatch
) ゃ若絖篏帥с障
+ Include
c絎翫
+ c泣c<ゃ
+ ≪<茯粋昭с荐絎<ゃ障
+ c篏茯粋昭сс障
+ 泣 httpd
茯粋昭帥紊掩
+ 筝<ゃc罧障с
絎<ゃ鴻腟九障鴻
+ ServerRoot
c
+ 後障鴻<с
箴:
+ +
+ 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
+
apachectl
茯: | HTTP 膓・膓鴻 |
---|---|
罕: | KeepAlive On|Off |
: | KeepAlive On |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
HTTP/1.0 Keep-Alive ≦宍 HTTP/1.1 膓・膓罘純
+ 茲違鴻 TCP ・膓ч傑膓
+ HTTP 祉激с潟箴障糸
+ 障 HTML ャ<潟с翫c綮倶 50% 膰腟
+ с障Keep-Alive ・膓鴻
+ KeepAlive On
荐絎障
HTTP/1.0 絲上ゃ≪潟 + ゃ≪潟鴻荀羆c翫 Keep-Alive ・膓障 + HTTP/1.0 ゃ≪潟с潟潟潟絎拷 + (荐恰絵: 荀羆絲障綽膈菴) 翫 Keep-Alive + ・膓с障 + CGI 阪 SSI 若吾 + 泣若c鴻潟潟潟 + HTTP/1.0 ゃ≪潟翫 Keep-Alive ・膓篏帥潟障 + HTTP/1.1 絲上ゃ≪潟 + 鴻絎膓・膓茵障 + ゃ≪潟荀羆違潟潟潟絎拷ゅャс + 膓・膓c潟潟潟若c潟違障
+ + + +茯: | 膓・膓ф<鴻ャ障с泣若緇ゆ |
---|---|
罕: | KeepAliveTimeout seconds |
: | KeepAliveTimeout 5 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
・膓Apache 罨<鴻篏腱緇ゃ絎障
+ 鴻篁緇Timeout
ccc
+ 絎帥ゃ≪ゃ篏帥障
KeepAliveTimeout
紊сゃ荐絎
+ 莢激蕭泣若若潟鴻馹綣莎激翫障
+ 帥ゃ≪激育激祉紊泣若祉鴻
+ 羇紫冴сゃ≪潟・膓腟篋緇∞障
茯: | 蚊筝≪祉劫九勝劫 HTTP <純帥 +狗 |
---|---|
罕: | <Limit method [method] ... > ...
+ </Limit> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
≪祉劫九勝絽≪祉鴻<純絲障
+ 綵演帥障с
+ 紊ч翫≪祉劫九勝≪cc
+ <Limit>
祉激с喝
+ 吾鴻с障
<Limit>
cc
+ ≪祉劫九勝膀蚊
+ 絎 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
+ <純狗с障
茯: | 絎篁ュ HTTP <純≪祉劫九勝 +狗 |
---|---|
罕: | <LimitExcept method [method] ... > ...
+ </LimitExcept> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
<LimitExcept>
+ </LimitExcept>
綣違
+ 障
+ HTTP ≪祉鴻<純≪祉劫九勝
+ cc障
+ ゃ障<Limit>
祉激с潟絲障篏
+ 罔羣<純罔羣紊茯茘<純翫筝≧鴻荐絎с障
+ <Limit>
ャ<潟
+ 篏泣с
箴:
+ +
+ <LimitExcept POST GET>
+
+ Require valid-user
+
+ </LimitExcept>
+
茯: | ゃャ絖c泣鴻紊ф違羆阪 |
---|---|
罕: | LimitInternalRecursion number [number] |
: | LimitInternalRecursion 10 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | Apache 2.0.47 篁ラт戎 |
ゃ箴 Action
cc
+ 篏帥c莎激障Action
cc
+ 鴻 CGI 鴻ゃ茵障
+ 泣鴻ゃ URI 絲障鴻
+ 篏莎激茯帥鴻 Apache 罘罕с箴違mod_dir
+ DirectoryIndex
cc
+ 鴻<ゃ茯帥鴻泣鴻篏帥障
LimitInternalRecursion
ゃ
+ 泣鴻♂若ャc泣若激ャ蚊障
+ 若荐絎紊掩榊障
cc鴻罸荅箴<篋ゃゃ + 荐絎障 number 莎激緇 + 鴻紊уゃ荐絎障篋ゃ number + 泣鴻ャ絖с羞宴荐絎障number + 筝ゃ絎筝≧鴻ゃゃ荐絎障
+ +
+ LimitInternalRecursion 5
+
茯: | ゃ≪潟 HTTP 鴻c +膩狗 |
---|---|
罕: | LimitRequestBody bytes |
: | LimitRequestBody 0 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
cc鴻c荐宴ゃ違bytes + 0 (≦狗潟障) 2147483647 (2GB) 障с医ゃф絎障
+ +LimitRequestBody
cc
+ cc吾潟潟鴻
+ (泣若篏c<ゃ宴若激с)
+ 荐怨鴻 HTTP 鴻<祉若吾c泣ゃ冴狗с障
+ ゃ≪潟鴻狗ゃ莇違
+ 泣若鴻若菴障
+ 鴻<祉若吾c泣ゃ冴純若鴻腮蕁
+ 荐怨<純c紊с鎀障
+ CGI 鴻宴篆<
+ <祉若吾c篏帥障
+ PUT
<純絎茖ccゃ
+ 絨純若鴻絲障泣若篁
+ 茵憗紊с祉ゃ綽荀障
cc + 膊∞ゃ≪潟医幻鴻九勝с + 篏綵≪泣若号紙 (荐恰絵:DoS) 帥鴻с
+ +贋吾<ゃ≪若荐怨翫 + ≪若с<ゃ泣ゃ冴 100K 狗違 + 篁ヤ絎障:
+ +
+ LimitRequestBody 102400
+
茯: | ゃ≪潟 HTTP 鴻c若違 +狗 |
---|---|
罕: | LimitRequestFields number |
: | LimitRequestFields 100 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Core |
≪吾ャ若: | core |
number 0 (≦狗潟障) 32767
+ 障с贋違絎障
+ ゃ絎 DEFAULT_LIMIT_REQUEST_FIELDS
+ 潟潟ゃ絎臂障 (絽 100 絎障)
LimitRequestBody cc + 泣若膊∞ HTTP 鴻筝荐怨鴻c若違 + 絎障 + 泣若ゃ絽吾ゃ≪潟鴻障с + c若違紊сゃ綽荀障 + ゃ≪潟篏帥荀羆若c若違 + 20 莇祉障 + 腮ゃ≪潟絎茖c紊 + 荅括完潟潟潟眼激若激с潟吟荐絎障с + 綵演帥障 + 激с潟 HTTP ≦宍鴻c若篏帥c憗翫 + 紊障
+ +cc + 膊∞ゃ≪潟医幻鴻九勝с + 篏綵≪泣若号紙 (荐恰絵:DoS) 帥鴻с + 鴻c若紊潟弱膈 + ゃ≪潟菴ゃ紜
+ +箴:
+ +
+ LimitRequestFields 50
+
茯: | ゃ≪潟 HTTP 鴻 +泣ゃ冴狗 |
---|---|
罕: | LimitRequestFieldsize bytes |
: | LimitRequestFieldsize 8190 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Core |
≪吾ャ若: | core |
ccHTTP 鴻筝ゃу篁 + ゃ bytes 絎障
+ +LimitRequestFieldSize
cc
+ HTTP 鴻ц┗絎鴻泣ゃ冴紜羝с障
+ 泣若ccゃ
+ 筝ゃ≪潟鴻鴻
+ 篁絮c若ゃ
+ 莇潟紊сc違障
+ 筝鴻泣ゃ冴c紊с
+ ゃ≪潟絎茖c紊с違
+ 荅括完潟潟潟眼激若激с潟泣若
+ 吟荐絎綵演帥障
+ SPNEGO 茯荐若с 12392 ゃ障у吟障
cc + 膊∞ゃ≪潟医幻鴻九勝с + 篏綵≪泣若号紙 (荐恰絵:DoS) 帥鴻с
+ +箴:
+ +
+ LimitRequestFieldSize 4094
+
茯: | ゃ≪潟 HTTP 鴻茵泣ゃ冴狗 |
---|---|
罕: | LimitRequestLine bytes |
: | LimitRequestLine 8190 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Core |
≪吾ャ若: | core |
ccHTTP 鴻茵ц┗絎鴻ゃ + bytes 絎障
+ +LimitRequestLine
cc
+ ゃ≪潟 HTTP 鴻茵荐怨鴻泣ゃ冴紜羝с障
+ 鴻茵HTTP<純URI潟若吾с潟c
+ LimitRequestLine
泣若吾鴻絲障
+ 荐怨鴻鴻 URI 激狗障
+ 泣若GET
鴻純若鴻ャ莇潟
+ 紊с綽荀障
cc + 膊∞ゃ≪潟医幻鴻九勝с + 篏綵≪泣若号紙 (荐恰絵:DoS) 帥鴻с
+ +箴:
+ +
+ LimitRequestLine 4094
+
茯: | XML 綵√鴻c泣ゃ冴狗 |
---|---|
罕: | LimitXMLRequestBody bytes |
: | LimitXMLRequestBody 1000000 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
XML 綵√鴻c紊уゃ (ゃ篏) 狗障
+ ゃ 0
絎с≦鴻障
箴:
+ +
+ LimitXMLRequestBody 0
+
茯: | 蚊cc URL 帥 |
---|---|
罕: | <Location
+ URL-path|URL> ... </Location> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
<Location>
cc
+ URL 筝吾cc膀蚊狗障
+ <Directory>
+ cc篌若
+ </Location>
ccх篋
+ 泣祉激с潟紮障
+ <Location>
祉激с潟
+ <Directory>
祉激с潟
+ .htaccess
茯粋昭帥緇
+ <Files>
祉激с潟
+ 緇荐絎<ゃ憗障
<Location>
祉激с潟
+ 絎<ゃ激鴻∫c篏障絨
+ 腟ゃ羈鴻障荀
+ <ゃ激鴻篏臀吾≪祉劫九勝 <Location>
cc篏帥鴻с
+ с茲違 URL <ゃ激鴻篏臀
+ 純障с≪祉劫九勝帥障醇с
+ 障
<Location>
篏帥<Location>
cc
+ <ゃ激鴻紊潟潟潟cc
+ 篏睡<ゃ激鴻絖潟潟潟絲障
+ <Directory>
<Files>
篏帥c
+ 箴紊<Location />
с泣若篏絲障
+ 荐絎膂≦号с
(隙札紊) 鴻絲障
+ URL /path/
+ ・莨 http://servername
障綵≪с障
+ 激鴻翫scheme://servername/path
+ ・莨綵≪с・莨絎綽荀障
URL ゃ若с障
+ ?
篁紙筝絖*
篁紙絖障
~
絖菴遵с≦宍罩h頫憗
+ с障
+ 箴:
+ <Location ~ "/(extra|special)/data">
+
URL /extra/data
/special/data
絖
+ 障翫障
+ <LocationMatch>
cc
+ <Location>
罩h頫
+ 障c篏障
<Location>
罘純SetHandler
cc
+ 腟鴻箴水с
+ 箴違foo.com
吟帥鴻若帥鴻с鴻違
+ 罨<域с
+ <Location /status>
+
+ SetHandler server-status
+ Order Deny,Allow
+ Deny from all
+ Allow from .foo.com
+
+ </Location>
+
鴻激ユ絖URL 憗贋綽紊
+ 劫ャ潟c障
+ <ゃ激鴻翫茲違鴻激ャс筝ゃ
+ 鴻激ャ宴紊с
+ (/home///foo
+ /home/foo
c)
+ URL 綽с障
+ <LocationMatch>
+ cc罩h頫憗
+ <Location>
ccс
+ 茲違鴻激ャ腓榊荐菴違
+ 綽荀障
箴違<LocationMatch ^/abc>
+ /abc
鴻 URL 障
+ //abc
鴻 URL 障
+ (罩h頫憗с) <Location>
+ cc
+ proxy 鴻絲障罕障
+ (罩h頫憗с) <Location>
proxy
+ с鴻絲障
+ 筝ゃ鴻激ャц違鴻激ャ障
+ 箴違<Location /abc/def>
絎
+ /abc//def
鴻違
+ 障
茯: | 蚊cc罩h頫憗 URL 帥 + |
---|---|
罕: | <LocationMatch
+ regex> ... </LocationMatch> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
<LocationMatch>
cc
+ <Location>
罕
+ URL 筝吾cc膀蚊狗障
+ 篏綣違絖с罩h頫憗障箴違
+ <LocationMatch "/(extra|special)/data">
+
URL /extra/data
/special/data
+ 絖障翫障
茯: | ErrorLog 傑с九勝 |
---|---|
罕: | LogLevel level |
: | LogLevel warn |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
LogLevel
若 (ErrorLog
cc
+ 荀) 梧蚊<祉若吾傑с茯炊眼障
+ 篁ヤ level 絎с荀綺筝c障
+ + | 茯 | + +箴 | +
---|---|---|
emerg |
+
+ 膩 - 激鴻с | + +Child cannot open lock file. Exiting + (絖祉鴻<ゃ腟篋) | +
alert |
+
+ 眼<絲上綽荀 | + +getpwuid: couldn't determine user name from uid + (getpwuid: UID 若九劫сc) | +
crit |
+
+ 翫順倶 | + +socket: Failed to get a socket, exiting child + (socket: 純宴緇絖祉鴻腟篋) | +
error |
+
+ + + | Premature end of script headers + (鴻莇潟障障хc) | +
warn |
+
+ 茘 | + +child process 1234 did not exit, sending another SIGHUP + (絖祉 1234 腟篋c筝綺 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
篁ヤ絎ィ絅障
箴:
+ +
+ LogLevel notice
+
<ゃ違阪翫notice
+ <祉若吾吟鴻違阪障
+ syslog
篏睡翫
+ 綵障障
茯: | 膓・膓筝ц┗鴻 |
---|---|
罕: | MaxKeepAliveRequests number |
: | MaxKeepAliveRequests 100 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
MaxKeepAliveRequests
cc
+ KeepAlive
鴻翫
+ 筝・膓у篁純鴻違狗障
+ 0
荐絎違篁鴻≦狗障
+ 荐絎泣若ц純筝紊с医ゃ絎с障
+
箴:
+ +
+ MaxKeepAliveRequests 500
+
茯: | 若鴻若c鴻 IP ≪鴻絎 |
---|---|
罕: | NameVirtualHost addr[:port] |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Core |
≪吾ャ若: | core |
NameVirtualHost
cc
+ 若鴻若c鴻荐絎茵翫
+ 綽荀с
addr 鴻絎с障 + 絽吾 IP ≪鴻絎ィ絅障 + 箴違
+ +
+ NameVirtualHost 111.22.33.44
+
NameVirtualHost
cc
+ 若鴻若c鴻
+ 鴻篁 IP ≪鴻絎障
+ 若鴻若c鴻≪鴻с
+ <ゃ≪若若篁激鴻篁
+ IP ≪鴻泣若若翫
+ 鴻箴激割ゃ潟帥若с若鴻
+ IP ≪鴻絎綽荀障
+ 茲違≪鴻ц違若鴻若c鴻絎翫
+ ≪鴻絲障cc吾
筝祉泣若 _default_
泣若
+ NameVirtualHost
ф絎 IP ≪鴻吾鴻
+ 障 (
+ NameVirtualHost
+ 絎≪鴻 VirtualHost
絎臂c翫ゃ)
若鴻若c鴻若垩絎純с + 箴
+ +
+ NameVirtualHost 111.22.33.44:8080
+
IPV6 ≪鴻罨<箴茹綣су蚊綽荀障:
+ +
+ NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8080
+
鴻ゃ潟帥с若鴻吾鴻
+ 綣違 *
篏帥障
+ NameVirtualHost *
+
<VirtualHost>
cc綣<VirtualHost>
cc綣違 NameVirtualHost
cc綣違罩g∈
+ c綽荀羈
+ NameVirtualHost 1.2.3.4
+ <VirtualHost 1.2.3.4>
+ # ...
+ </VirtualHost>
+
茯: | c絲障篏睡純罘純荐絎 |
---|---|
罕: | Options
+ [+|-]option [[+|-]option] ... |
: | Options All |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Options |
鴻若帥: | Core |
≪吾ャ若: | core |
Options
cc劫c絲障
+ 罘純篏睡純九勝障
option None
絎
+ 劫ャ罘純≦鴻障
+ 障篁ヤ腓冴 1 篁ヤ絎с障
All
MultiViews
ゃ罘純鴻障
+ сExecCGI
mod_cgi
CGI 鴻絎茵荐怨障FollowSymLinks
泣若激潟潟翫с
+ <Directory>
祉激с潟
+
+ 劫紊眼障
<Location>
+ 激с潟絎∴
+ 羈
Includes
mod_include
箴 SSI 鴻障IncludesNOEXEC
#exec
潟潟 #exec CGI
≦鴻障
+ #include virtual
ScriptAlias
c
+ CGI 絎茵純сIndexes
DirectoryIndex
ф絎<ゃ (箴違index.html
)
+ c<違mod_autoindex
+ c筝荀с翫就菴障MultiViews
mod_negotiation
+ 潟潟潟眼激若激с
+ "MultiViews" 荐怨障SymLinksIfOwnerMatch
<Location>
激с潟
+ 絎∴障絽吾c絲障茲違 Options
+ 純翫
+ 菴筝ゃ帥篁∴障
+ 茲違絎若吾с障(祉激с潟若御号с)
+ 鴻 Options
cc +
-
篁
+ 絎翫激с潟ゃ若吾障
+ +
ゃ亥憜荐絎
+ -
篁亥憜荐絎ゃ障
箴違+
-
翫:
+ <Directory /web/docs>
+
+ Options Indexes FollowSymLinks
+
+ </Directory>
+
+ <Directory /web/docs/spec>
+
+ Options Includes
+
+ </Directory>
+
/web/docs/spec
c
+ Includes
障
+ 2 Options
+
-
帥:
+ <Directory /web/docs>
+
+ Options Indexes FollowSymLinks
+
+ </Directory>
+
+ <Directory /web/docs/spec>
+
+ Options +Includes -Indexes
+
+ </Directory>
+
/web/docs/spec
c FollowSymLinks
+ Includes
障
-IncludesNOEXEC
+ -Includes
絎
+ 荐絎c SSI ≦鴻障
荐絎違с All
+ 障
茯: | 茯荐惹帥若吟純若鴻≪祉鴻с御 |
---|---|
罕: | Require entity-name [entity-name] ... |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Core |
≪吾ャ若: | core |
cc茯荐惹帥若吟純若鴻 + ≪祉鴻с絎障 + 篁ヤ罕障
+ +Require user userid [userid] ...
Require group group-name [group-name] ...
Require valid-user
Require
罩c篏 AuthName
AuthType
cc
+ (若吟違若絎) AuthUserFile
AuthGroupFile
+ ccc宴
+ 絎綽荀障
+ 箴:
+ AuthType Basic
+ AuthName "Restricted Resource"
+ AuthUserFile /web/users
+ AuthGroupFile /web/groups
+ Require group admin
+
≪祉劫九勝<純
+ 絲障茵障
+ 絽吾障篏с
+ 劫<純絲障帥≪祉鴻九勝
+ 篁<純狗翫<Limit>
祉激с喝
+ Require
+ 絎
茯: | Apache 絖祉鴻莎桁祉鴻 CPU 羔莢脂 +狗 |
---|---|
罕: | RLimitCPU seconds|max [seconds|max] |
: | 荐絎若c潟違激鴻篏睡 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
筝ゃ篋ゃ<若帥障
+ <若帥祉鴻絲障純若鴻純荐絎
+ 2 <若帥紊с純若鴻荐絎障
+ <若帥医若c潟違激鴻紊с
+ max
<絎с障
+ 紊с純若鴻筝泣若
+ root
у茵莎桁違障
<帥荐絎 Apache 絖祉壕篏с + 鴻篁 Apache 絖祉鴻 fork 祉鴻 + 障 + CGI SSI 絎茵潟潟障障Apache + 荀祉鴻 fork 違ゃ祉鴻障
+ +CPU 純若鴻祉鴻腱違ц;障
+ + + +RLimitMEM
RLimitNPROC
茯: | Apache 絖祉鴻莎桁祉鴻<≪羔莢脂 +狗 |
---|---|
罕: | RLimitMEM bytes|max [bytes|max] |
: | 荐絎若c潟違激鴻篏睡 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
筝ゃ篋ゃ<若帥障
+ <若帥祉鴻絲障純若鴻純荐絎
+ 2 <若帥紊с純若鴻荐絎障
+ <若帥医若c潟違激鴻紊с
+ max
<絎с障
+ 紊с純若鴻筝泣若
+ root
у茵莎桁違障
荐絎 Apache 絖祉壕篏с + 鴻篁 Apache 絖祉鴻 fork 祉鴻 + 障 + CGI SSI 絎茵潟潟障障Apache + 荀祉鴻 fork 違ゃ祉鴻障
+ +<≪純若鴻祉鴻ゃ違ц;障
+ + +RLimitCPU
RLimitNPROC
茯: | Apache 絖祉鴻莎桁祉鴻莎桁祉鴻 +違狗 |
---|---|
罕: | RLimitNPROC number|max [number|max] |
: | 荐絎若c潟違激鴻篏睡 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
筝ゃ篋ゃ<若帥障
+ <若帥祉鴻絲障純若鴻純荐絎
+ 2 <若帥紊с純若鴻荐絎障
+ <若帥医若c潟違激鴻紊с
+ max
<絎с障
+ 紊с純若鴻筝泣若
+ root
у茵莎桁違障
荐絎 Apache 絖祉壕篏с + 鴻篁 Apache 絖祉鴻 fork 祉鴻 + 障 + CGI SSI 絎茵潟潟障障Apache + 荀祉鴻 fork 違ゃ祉鴻障
+ +祉鴻狗若吟祉号違у九勝障
+ + CGI 祉鴻с泣若若 ID 篁ュу茵
+ <
+ cc泣若荳с祉鴻違狗障
+ 倶cerror_log
筝
+ cannot fork
<祉若吾
+ 腆肴с障
茯: | 鴻≪祉劫九勝若区荐若娯篏絎 |
---|---|
罕: | Satisfy Any|All |
: | Satisfy All |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | 若吾с 2.0.51 篁ラс <Limit> cc <LimitExcept> cc綵演帥
+ |
Allow
+ Require
筝≧鴻篏帥
+ ≪祉鴻激若荐絎障<若帥 All
Any
+ сcc贋吾≪祉鴻若九/鴻若
+ ゃ≪潟鴻≪鴻у狗
+ 綵合<障篏 (All
) ゃ≪潟≪鴻
+ ≪祉劫狗羣罩c若九鴻若ュ
+ 荀羆障Any
сゃ≪潟鴻狗羣
+ 罩c若九鴻若ュ違≪祉鴻荐怨障
+ 贋鴻若т茘激劫≪鴻
+ ゃ≪潟鴻若ュ荀羆≪祉鴻荐怨
+ 篏睡с障
箴違若筝篋冴с泣ゃゃ + ≦狗≪祉鴻荐宴紊若篋冴 + 鴻若箴罨<荐絎 + с障:
+ +
+ Require valid-user
+ Allow from 192.168.1
+ Satisfy Any
+
若吾с 2.0.51
+ <Limit>
祉激с潟
+ <LimitExcept>
祉激с潟篏睡
+ Satisfy
cc
+ <純狗
+ с障
茯: | CGI 鴻ゃ潟帥若帥篏臀茯帥鴻羈 |
---|---|
罕: | ScriptInterpreterSource Registry|Registry-Strict|Script |
: | ScriptInterpreterSource Script |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | Win32 帥
+激с Registry-Strict Apache 2.0 篁ラт戎 |
ccApache CGI 鴻
+ 絎茵翫ゃ潟帥若帥
+ 「冴ゃ九勝篏睡障
+ 荐絎 Script
с鴻
+ shebang 茵 (茵 #!
紮障)
+ ゃ潟帥若帥篏睡障Win32 с茵
+ 篁ヤ罕障
+ #!C:/Perl/bin/perl.exe
+
perl
PATH
翫:
+ #!perl
+
ScriptInterpreterSource Registry
絎
+ 鴻<ゃ≦宍絖 (箴違.pl
)
+ 若Windows 吾鴻 HKEY_CLASSES_ROOT
+ 罎膣≪障吾鴻泣
+ Shell\ExecCGI\Command
絖翫
+ Shell\Open\Command
鴻<ゃ
+ 篏帥障吾鴻若荀ゃApache Script
+ 激с潟絎篏祉障
ScriptInterpreterSource Registry
ScriptAlias
cт戎
+ 羈Apache c筝鴻<ゃ
+ 絎茵障Registry
荐絎絽吾絎茵
+ <ゃ絲障障違絎茵榊醇с障
+ 箴違祉 Windows 激鴻с
+ .htm
<ゃ潟潟
+ Microsoft Internet Explorer 絎茵障с鴻絎
+ c .htm
<ゃ吾鴻泣若
+ 違潟с吟絎茵障筝
+ 激鴻激ャ号с
Apache 2.0 絨ャ激с Registry-Strict
+ Registry
茵障泣
+ Shell\ExecCGI\Command
帥篏帥障
+ ExecCGI
若篏帥若с障Windows
+ 吾鴻ц┃絎綽荀障с激鴻с句榊違
+ 絎茵蚊с障
茯: | 泣若ゃ≪潟若<祉若吾糸<若 +≪ |
---|---|
罕: | ServerAdmin email-address|URL |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
ServerAdmin
ゃ≪潟菴障障
+ 若<祉若娯賢荐菴違
+ ≪鴻荐絎障筝綣違 httpd
+ URL 茯茘翫email-address 茹i
+ ゃ若潟帥若蚊 mailto:
篁障
+ 絎糸<若≪鴻篏帥ィ絅障
+ 紊 CGI 鴻c篁絎障
+ URL 篏帥翫膊∞筝ャ泣若
+ с若莎激cg機сc
+ 障障
+
絨≪鴻荐絎с + 箴違
+ +
+ ServerAdmin www-admin@foo.example.com
+
c障若吟ゃ泣若≪荅宴с + 荐с障с
+ + +茯: | 鴻若鴻若c鴻 +篏睡鴻ュ |
---|---|
罕: | ServerAlias hostname [hostname] ... |
潟潟鴻: | 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
ServerAlias
cc若若鴻若c鴻
+ 篏睡鴻ュ絎障
+ <VirtualHost *>
+ ServerName server.domain.com
+ ServerAlias server server2.domain.com server2
+ # ...
+ </VirtualHost>
+
茯: | 泣若荳腓冴篏帥鴻若 |
---|---|
罕: | ServerName fully-qualified-domain-name[:port] |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | cc若吾с 2.0 с若吾с 1.3
+ Port cc罘純帥障 |
ServerName
cc
+ 泣若荳腓冴鴻若荐絎障
+ ゃ URL 障
+ 箴違с泣若激潟 simple.example.com
+ сDNS ゃ≪ www.example.com
+ с泣若緇茯茘罨蚊篁ヤcc
+ 篏帥障
+ ServerName www.example.com:80
+
ServerName
絎
+ 泣若 IP ≪鴻綣茵с鴻ャ障
+ ServerName
若絎
+ 泣若鴻ャ
+ 若篏帥障蕭篆♂惹с腆阪с
+ ServerName
篏帥c鴻若腓榊
+ 絎
若鴻若c鴻
+ 翫<VirtualHost>
祉激с喝
+ ServerName
若c鴻
+ 篏鴻 Host: 憗綽荀絎障
綏怨 URL (箴 mod_dir
≪吾ャ若)
+ 絎若篏帥ゃ≪潟鴻若垩篏帥
+ 羆阪荐絎 UseCanonicalName
+ ccс
茯: | 篋吟若鴻若c鴻≪祉鴻 +篋 URL 劫 |
---|---|
罕: | ServerPath URL-path |
潟潟鴻: | 若c鴻 |
鴻若帥: | Core |
≪吾ャ若: | core |
ServerPath
cc若若鴻若c鴻
+ 篋 URL 劫荐絎障
茯: | ゃ潟鴻若泣若若鴻c |
---|---|
罕: | ServerRoot directory-path |
: | ServerRoot /usr/local/apache |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Core |
≪吾ャ若: | core |
ServerRoot
cc
+ 泣若絖c荐絎障
+ 絽吾conf/
logs/
c泣c
+ 絖障
+ 障篁荐絎cc (箴 Include
LoadModule
) 後障鴻
+ c後鞘臀障
+ ServerRoot /home/httpd
+
httpd
-d
+ 激сServerRoot
罔荐絎号祉ャc茯: | 泣若ャ<潟帥荐絎 |
---|---|
罕: | ServerSignature On|Off|EMail |
: | ServerSignature Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Core |
≪吾ャ若: | core |
ServerSignature
cc
+ 泣若ャ<潟
+ (若<祉若吾mod_proxy
FTP c鴻
+ mod_info
阪膈)
+ 筝茵篁筝帥荐絎茵障
+ 粋鴻宴
+ 激茲育cc翫若吟泣若菴
+ 若<祉若吾ャ罧泣祉<障
с Off
荐絎粋吟障
+ (Apache-1.2 篁ュ篋篏障)
+ On
荐絎翫ャ<潟筝泣若若吾с潟
+ 腮弱筝若c鴻 ServerName 吾茵菴遵
+ EMail
翫сャ<潟絲障 ServerAdmin "mailto:" 菴遵障
若吾с 2.0.44 篁ラсcc ServerSignature
+ cc茵腓冴宴九勝障
ServerTokens
茯: | Server HTTP 綽膈荐絎 |
---|---|
罕: | ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full |
: | ServerTokens Full |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Core |
≪吾ャ若: | core |
ccゃ≪潟菴 Server
+ 綽膈泣若筝 OS 腮ャ
+ 潟潟ゃ腟粋昭障≪吾ャ若宴
+ 絎障
ServerTokens Prod[uctOnly]
Server:
+ Apache
c障ServerTokens Major
Server:
+ Apache/2
ServerTokens Minor
Server:
+ Apache/2.0
ServerTokens Min[imal]
Server:
+ Apache/2.0.41
c障ServerTokens OS
Server: Apache/2.0.41
+ (Unix)
c障ServerTokens Full
(絎)Server: Apache/2.0.41
+ (Unix) PHP/4.2.2 MyMod/1.2
c障荐絎泣若篏若c鴻筝ф鴻 + ≦鴻с障
+ +若吾с 2.0.44 篁ラсcc ServerSignature
+ cc茵腓冴宴九勝障
茯: | <ゃ潟у |
---|---|
罕: | SetHandler handler-name|None |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
篋: | Apache 2.0 core 腱糸 |
.htaccess
<Directory>
+ 祉激с潟<Location>
+ 祉激с潟吾翫
+ cc鴻<ゃ
+ handler-name ф絎潟ф宴綣桁吟障箴違≦宍絖≪
+ c篏ゃ<若吾<ゃ茹f罨蚊翫
+ 篁ヤc .htaccess
+ <ゃ荐菴違障:
+ SetHandler imap-file
+
ャ箴: URL http://servername/status
+ 絎泣若倶怨篁ヤ
+ httpd.conf
荐菴違障:
+ <Location /status>
+
+ SetHandler server-status
+
+ </Location>
+
None
ゃ荐絎с
+ 鴻 SetHandler
у臂荐絎≦鴻
+ с障
AddHandler
茯: | ゃ≪潟鴻 POST ュc帥荐絎 |
---|---|
罕: | SetInputFilter filter[;filter...] |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
SetInputFilter
ccゃ≪潟
+ 鴻 POST ュ泣若cc帥
+ 荐絎障 AddInputFilter
+ cc篁贋у臂c帥荐絎
+ 菴遵障
茲違c帥絎若帥 + 祉潟潟у阪綽荀障
+ + + +茯: | 泣若綽膈c帥荐絎 |
---|---|
罕: | SetOutputFilter filter[;filter...] |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Core |
≪吾ャ若: | core |
SetOutputFilter
cc
+ 泣若綽膈ゃ≪潟菴c帥荐絎障
+ AddOutputFilter
+ cc篁贋у臂c帥荐絎
+ 菴遵障
箴違篁ヤ荐絎 /www/data/
c鴻
+ <ゃ SSI у障
+ <Directory /www/data/>
+
+ SetOutputFilter INCLUDES
+
+ </Directory>
+
茲違c帥絎若帥 + 祉潟潟у阪綽荀障
+ + +茯: | ゃ潟ゃ鴻紊掩障с泣若 +緇ゆ荐絎 |
---|---|
罕: | TimeOut seconds |
: | TimeOut 300 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Core |
≪吾ャ若: | core |
TimeOut
cc憜
+ 篁ヤ筝ゃ緇≧ゃ絎臂茵障:
絨ャャ荐絎純с筝с + Apache 1.2 篁ュ帥ゃ若 1200 с + 300 筝障300 с祉翫ゃс + 潟若筝紊贋障宴帥ゃ祉 + 贋с絨ゃ障
+ + +茯: | 泣若荳若羆阪号荐絎 |
---|---|
罕: | UseCanonicalName On|Off|Dns |
: | UseCanonicalName Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Core |
≪吾ャ若: | core |
紊倶 Apache 綏怨 URL
+ 泣若 URL篏綽荀障
+ UseCanonicalName On
翫ServerName
ccф絎
+ 鴻若垩篏帥c罩h (綏怨с) 障
+ 鴻綏怨 URL т戎障CGI
+ SERVER_NAME
SERVER_PORT
с篏帥障
UseCanonicalName Off
翫
+ ゃ≪潟鴻若絎
+ 綏怨 URL 篏障 (絎c
+ 筝絎臂罕罩h茹f浦障)
+ ゃ若鴻
+ 若c鴻絎茖т戎ゃс
+ ゃ≪潟у緇сゃc障
+ CGI 紊 SERVER_NAME
SERVER_PORT
+ ゃ≪潟筝ゃ篏障
箴水箴ゃ潟泣若 www
+ с若吟激潟・膓с
+ 若吟ュх鴻篏帥URL 緇鴻激ョ<
+ cc http://www/splat
+ Apache 鴻 http://www.domain.com/splat/
+ 吾ゃ障
+ 茯荐若荐絎翫
+ 若吟 2 茯荐若違障 (www
+ 絲障 1 www.domain.com
絲障 1 --
+ 荅括完 荅演
+ FAQ с)
+ UseCanonicalName
Off
c
+ Apache http://www/splat/
ゃ障
筝ょ激с UseCanonicalName DNS
+ 紊ц閞< IP 若鴻若c鴻c潟違с
+ Host:
箴ゃゃ≪潟
+ 泣若翫喝障
+ 激с潟с Apache ゃ≪潟・膓 IP ≪鴻絲障
+ DNS 綣茵c綏怨 URL 篏障
CGI SERVER_NAME
≪篏>散
+ 篁絎激с潟荐絎c篏
+ 障ゃ≪潟絎莖鴻
+ 篏с帥ゃ絎с障CGI
+ SERVER_NAME
篏帥c綏怨 URL 篏
+ 翫荐絎茵c紊т紊с
ServerName
Listen
茯: | 劫鴻 IP ≪鴻帥cc +蚊 |
---|---|
罕: | <VirtualHost
+ addr[:port] [addr[:port]]
+ ...> ... </VirtualHost> |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Core |
≪吾ャ若: | core |
<VirtualHost>
+ </VirtualHost>
+ 劫若c鴻絲障翠cc臂ゃ
+ 篏帥障
+ 若c鴻潟潟鴻ц┗cc絎純с
+ 泣若絎若c鴻ャ<潟吾
+ 鴻篁翫
+ <VirtualHost>
祉激с潟筝
+ cc障
+ Addr罨<с障:
NameVirtualHost *
宴篏帥
+ 鴻 IP ≪鴻絖 *
_default_
+ <VirtualHost 10.1.2.3>
+
+ ServerAdmin webmaster@host.foo.com
+ DocumentRoot /www/docs/host.foo.com
+ ServerName host.foo.com
+ ErrorLog logs/host.foo.com-error_log
+ TransferLog logs/host.foo.com-access_log
+
+ </VirtualHost>
+
IPv6 ≪鴻激с潟若垩絎阪ャ + 茹綣сфc絎綽荀障罨< IPv6 箴с:
+ +
+ <VirtualHost [2001:db8::a00:20ff:fea7:ccea]>
+
+ ServerAdmin webmaster@host.example.com
+ DocumentRoot /www/docs/host.example.com
+ ServerName host.example.com
+ ErrorLog logs/host.example.com-error_log
+ TransferLog logs/host.example.com-access_log
+
+ </VirtualHost>
+
若c鴻 IP ≪鴻若
+ 鴻絲上綽荀
+ 1 翫茲違≪鴻 IP 宴篆<с
+ 泣若激潟荐絎違障
+ (激潟茲違若ゃ潟帥若с若鴻翫
+ (OS泣若) ifconfig alias
潟潟
+ с障)
:port
c綵√ц菴違
+ 若紊翫純с
+ 絎翫筝祉泣若荐絎
+ 筝緇 Port
ф絎若
+ 障
+ :*
絎
+ ≪剛若障(_default_
+ 篏帥ィ絅障)
祉ャc≪: + 泣若若莎桁篁ュ若吟違<ゃ篆膊<c + 吾莨若水純祉ャc眼醇с荅括完 + 祉ャc≪潟 + с
+ +<VirtualHost>
Apache Listen
+ IP ≪鴻綵演帥筝障
+ Listen
+ 篏帥c Apache 罩c≪鴻 listen 荐絎綽荀障
IP 若鴻若c鴻篏帥c翫劫ャ
+ _default_
絎с障翫
+ 若c鴻篁若c鴻ф腓榊
+ 鴻 IP ≪鴻障_default_
若c鴻<
+ 翫 IP 若c鴻ф絎
+ VirtualHost 祉激с潟紊鴻絎臂筝祉泣若荐絎
+ 篏帥障(NameVirtualHost
cc
+ 鴻 IP ≪鴻筝祉泣若荐絎 _default_
若c鴻
+ 篏帥羈荅潟 若若鴻若c鴻
+ с)
:port
c綵√ц菴違
+ 若紊翫純с
+ 絎翫筝祉泣若荐絎
+ 筝緇 Listen
ф絎
+ 若障
+ :*
絎
+ ≪剛若障(_default_
+ 篏帥ィ絅障)
:port
c綵√ц菴違
+ 若紊翫純с
+ 絎翫筝祉泣若荐絎
+ 筝緇 Port
ф絎若
+ 障
+ :*
絎
+ ≪剛若障(_default_
+ 篏帥ィ絅障)
泣若若莎桁篁ュ若吟違<ゃ篆膊<c + 吾莨若水純祉ャc眼醇с荅括完 + 祉ャc≪潟 + с
Apache HTTP サーバ バージョン 2.3
-この文書は各 Apache 設定ディレクティブ - を説明するために使われている用語を説明します。
-ディレクティブの目的の簡単な説明。
-設定ファイル中のディレクティブの書式を示します。 - この構文はディレクティブ特有なので、詳細はディレクティブの説明を - 参照してください。一般的に、ディレクティブ名の後には - 空白により分割されたいくつかの引数が続きます。 - 引数が空白を含むときは二重引用符 (訳注: ") - で囲まれています。 オプショナルな引数は括弧 - (訳注: []) で囲まれています。 - 引数が複数の値を取り得る場合は、それらの値は垂直の棒 "|" - で 分割されています。 - 変更されないテキストはデフォルトのフォントで表示され、置換の必要な - 引数は強調されて表示されます。 - 引数の数が変わるディレクティブは最後の - 引数が繰り返されることを示すために "..." - で終わります。
- -- ディレクティブは多くの違う型の引数をとります。いくつか、良く - 使われるものを以下で定義します。
- -http://www.example.com/path/to/file.html
- のように、
- スキーム、ホスト名、パス名(省略可能)を含んでいる完全な
- Uniform Resource Locator。/path/to/file.html
のように、スキームと
- ホスト名の後に続く url
- の一部。url-path は
- ファイルシステムからの視点ではなく、
- ウェブからの視点でリソースを表現します。/usr/local/apache/htdocs/path/to/file.html
- のように、
- ルートディレクトリから始まるローカルのファイルシステム上のファイルへのパス。
- 通常、スラッシュで始まらない file-path は ServerRoot
- からの相対パスとして 扱われます。/usr/local/apache/htdocs/path/to/
- のように、
- ルートディレクトリから始まるローカルのファイルシステムのディレクトリへの
- パス。file.html
のように、パス情報の付いていない
- ファイル名。file.html.en
- には二つの拡張子があります。.html
と
- .en
です。Apache
- のディレクティブでは、extension
- はドット付きでも無しでも指定できます。さらに、extension
- は 大文字小文字を区別しません。text/html
のように、スラッシュで分離された
- 主フォーマットと副フォーマットによってファイルの形式を
- 表す方法です。ディレクティブにデフォルト値 - (すなわち、設定ファイルから - 省略されていても、Apache - ウェブサーバは特定の値に設定されているかのように - 動作します) がある場合はここに記述されます。 - デフォルト値の無い場合、ここは "None" と - 書かれます。ここで書かれているデフォルトはサーバと共に配布されている - デフォルトの httpd.conf - 内に書かれているディレクティブの値と - 違う可能性があることに注意してください。
-- これは、サーバの設定ファイル中のどこでディレクティブが有効なのかを示します。 - 次に示す値が一つ以上カンマ区切りで列挙されています。
- -httpd.conf
,
- srm.conf
, access.conf
)
- 内では使用できますが、
- <VirtualHost>
や
- <Directory>
の中では
- 使用できないことを示します。
- .htaccess
ファイルでの使用は許可されていません。<VirtualHost>
- の中で使用できることを示します。<Directory>
,
- <Location>
,
- <Files>
,
- <Proxy>
- コンテナの中で、 設定セクション
- で説明されている制限の下で使用できることを示します。.htaccess
ファイル内で
- 使用可能であることを示します。 ただ、上書き
- の設定によっては、処理されないかもしれません。- ディレクティブは指示されたコンテキストでのみ許可されます。 - 他の場所で使おうとすると、サーバがそのコンテキストを正しく扱えなく - なるような設定エラーが発生するか、サーバがまったく動作しなくなる、 - すなわち、サーバが起動しなくなるということになります。
- -
- ディレクティブの有効な位置は、実際は挙げられているコンテキストの
- 論理和 (訳注: Boolen OR)
- になります。言い換えると、
- "サーバ設定ファイル、.htaccess
" で有効だと
- 記されているディレクティブは httpd.conf
- ファイルと .htaccess
- ファイルとで有効ですが、 <Directory>
- や <VirtualHost>
- の中では使用できません。
このディレクティブの属性は、.htaccess
- ファイル中に
- ディレクティブが現れたときに、それの処理を有効にするために
- どの設定の上書きが必要かを示します。 ディレクティブの
- コンテキスト
- が、.htaccess
- ファイル中では許可していない場合は、 この属性は
- "適用不可" と書かれます。
上書きは、AllowOverride
- ディレクティブによって有効にされ、
- 特定のスコープ(ディレクトリなど)と、
- さらに下位のレベルの AllowOverride
- で修正されない限り、 その配下に対して適用されます。
- ディレクティブのドキュメントは取り得る上書きの名前も挙げます。
これはディレクティブが Apache - ウェブサーバにどれくらいきつく組み込まれているかを - 示します。言い換えれば、ディレクティブとその機能を利用するために、 - モジュールの数を増やして、サーバを再コンパイルする必要があるかもしれない - ということを示します。 - この属性が取り得る値は以下のものです:
- -- これは単純にディレクティブが定義されているモジュールの名前を記載します。
-ディレクティブが Apache 2 - の配布に組み込まれていなかった場合、 - ディレクティブが導入されたバージョンがここに書かれています。 - また、ディレクティブが特定のプラットフォームにのみ存在するときも - ここに書かれています。
-Apache HTTP 泣若 若吾с 2.3
+吾 Apache 荐絎cc + 茯篏帥茯茯障
+cc膂≦茯
+荐絎<ゃ筝cc後腓冴障 + 罕cc号с荅括完cc茯 + с筝cc緇 + 腥榊純蚊ゃ綣違膓障 + 綣違腥榊純篋綣膃 (荐恰絵: ") + у蚊障障 激с綣違綣 + (荐恰絵: []) у蚊障障 + 綣違茲違ゃ緇翫ゃ眼罍 "|" + 蚊障 + 紊眼鴻潟ц;腓冴臀綽荀 + 綣違綣決帥茵腓冴障 + 綣違違紊cc緇 + 綣違膵違菴腓冴 "..." + х障
+ ++ cc紊綣違障ゃ + 篏帥篁ヤу臂障
+ +http://www.example.com/path/to/file.html
+
+ 鴻若鴻劫(ュ)с絎
+ Uniform Resource Locator/path/to/file.html
鴻若
+ 鴻緇膓 url
+ 筝url-path
+ <ゃ激鴻荀鴻с
+ с荀鴻с純若鴻茵憗障/usr/local/apache/htdocs/path/to/file.html
+
+ 若c紮障若<ゃ激鴻筝<ゃ吾鴻
+ 絽吾鴻激ャу障 file-path ServerRoot
+ 後障鴻 宴障/usr/local/apache/htdocs/path/to/
+
+ 若c紮障若<ゃ激鴻c吾
+ 鴻file.html
号宴篁
+ <ゃfile.html.en
+ 篋ゃ≦宍絖障.html
+ .en
сApache
+ ccсextension
+ 篁с<с絎с障extension
+ 紊ф絖絨絖阪ャ障text/html
鴻激ャу≪
+ 筝祉若若c<ゃ綵√
+ 茵号сcc + (荐絎<ゃ + ャApache + с泣若劫ゃ荐絎 + 篏障) 翫荐菴違障 + ゃ<翫 "None" + 吾障ф吾泣若宴絽 + httpd.conf + 吾ccゃ + 醇с羈
++ 泣若荐絎<ゃ筝сcc鴻腓冴障 + 罨<腓冴ゃ筝や札筝潟阪у障
+ +httpd.conf
,
+ srm.conf
, access.conf
)
+ с篏睡с障
+ <VirtualHost>
+ <Directory>
筝с
+ 篏睡с腓冴障
+ .htaccess
<ゃс篏睡荐怨障<VirtualHost>
+ 筝т戎с腓冴障<Directory>
,
+ <Location>
,
+ <Files>
,
+ <Proxy>
+ 潟潟筝с 荐絎祉激с
+ ц狗筝т戎с腓冴障.htaccess
<ゃ
+ 篏睡純с腓冴障 筝吾
+ 荐絎c障+ cc腓冴潟潟鴻荐怨障 + 篁贋т戎泣若潟潟鴻罩c宴 + 荐絎若榊泣若障c篏 + 泣若莎桁障
+ +
+ cc鴻篏臀絎潟潟鴻
+ 茫 (荐恰絵: Boolen OR)
+ 障荐
+ "泣若荐絎<ゃ.htaccess
" ф鴻
+ 荐cc httpd.conf
+ <ゃ .htaccess
+ <ゃф鴻с <Directory>
+ <VirtualHost>
+ 筝с篏睡с障
cc絮с.htaccess
+ <ゃ筝
+ cc憗鴻
+ 荐絎筝吾綽荀腓冴障 cc
+ 潟潟鴻
+ .htaccess
+ <ゃ筝с荐怨翫 絮с
+ "筝" 吾障
筝吾AllowOverride
+ ccc鴻
+ 劫鴻潟若(c)
+ 筝篏 AllowOverride
+ т信罩c 筝絲障障
+ ccャ<潟緇筝吾障
cc Apache + с泣若ゃ靚粋昭障 + 腓冴障荐違cc罘純 + ≪吾ャ若違紜泣若潟潟ゃ綽荀 + 腓冴障 + 絮с緇ゃ篁ヤс:
+ ++ 膣cc絎臂≪吾ャ若荐莠障
+cc Apache 2 + 絽腟粋昭障c翫 + cc絨ャ若吾с潟吾障 + 障cc劫若水 + 吾障
+Apache HTTP サーバ バージョン 2.3
+ +Apache HTTP 泣若 若吾с 2.3
- 標準 Apache 配布にあるすべての Apache のディレクティブの一覧です。 - これらは一貫した形式で書かれていて、使われている用語の - 用語集 も用意されています。 + 罔羣 Apache 絽鴻 Apache cc筝荀сс + 筝莢綵√ф吾篏帥茯 + 茯 障
- 各ディレクティブの概要を説明した ディレクティブクイックリファレンスも - あります。 + cc网荀茯 ccゃ<潟 + 障
A | B | C | D | E | F | G | H | I | K | L | M | N | O | P | R | S | T | U | V | W | X
@@ -447,11 +447,11 @@ +Apache HTTP サーバ バージョン 2.3
+ +Apache HTTP 泣若 若吾с 2.3
- 以下は Apache の配布の一部として配られているすべてのモジュールの - 一覧です。すべての Apache - ディレクティブ のアルファベット順のリストも見てください。 + 篁ヤ Apache 絽筝鴻≪吾ャ若 + 筝荀сс鴻 Apache + cc ≪<鴻荀
worker
MPMworker
MPMA | C | D | E | F | H | I | L | M | N | P | R | S | U | V
-ls
コマンドや
- Win32 の dir
シェルコマンドに似た
- ディレクトリインデックスを生成するls
潟潟
+ Win32 dir
激с潟潟篌若
+ cゃ潟鴻mod_dav
のためのファイルシステムプロバイダmod_dav
用の汎用ロックモジュールmod_dav
<ゃ激鴻ゃmod_dav
羆≪吾ャ若Expires
と
-Cache-Control
HTTP ヘッダの生成Expires
+Cache-Control
HTTP mod_proxy
で AJP
-をサポートするためのモジュールmod_proxy
拡張mod_proxy
AJP
+泣若≪吾ャ若mod_proxy
≦宍mod_proxy
extension for
CONNECT
request handlingmod_proxy
Apache HTTP サーバ バージョン 2.3
-説明: | ホスト (名前もしくは IP アドレス) に基づいたグループ承認 |
---|---|
ステータス: | Extension |
モジュール識別子: | access_compat_module |
ソースファイル: | mod_access_compat.c |
互換性: | Apache 2.3 (Apache 2.x の以前のバージョンとの互換性のためのモジュールとして)。
-このモジュールで提供するディレクティブは、承認の仕組みの一新に伴い、非推奨になったものです。
-mod_authz_host も見てください。 |
mod_access_compat
により提供されるディレクティブは
- サーバの特定の部分への
- アクセスを制御するために <Directory>
, <Files>
, <Location>
- と .htaccess
ファイルで使用されます。クライアントのホスト名、IP
- アドレスや、環境変数などのリクエストの特徴に基づいて
- アクセス制御を行なうことができます。Allow
と
- Deny
ディレクティブを使って、
- どのようなクライアントにアクセスを
- 許可する、しないを指定します。また
- Order
ディレクティブを使って、
- デフォルトのアクセス状態と、
- Allow
ディレクティブと
- Deny
- ディレクティブとのお互いへの影響の仕方を設定します。
-
ホストによるアクセス制限とパスワードによる認証を、
- 同時に組み合わせて使うこともできます。
- この場合、その二つの制限の関係を指定するために
- Satisfy
- ディレクティブを使用します。
mod_access_compat
が提供するディレクティブは、
- 承認の仕組みの一新に伴い、非推奨になったものです。
- mod_authz_host
も見てください。
- デフォルトの承認の取り扱い機能を使用するために
- mod_authz_default
- モジュールもロードされなければなりません。
一般的には、アクセス制限ディレクティブはすべてのアクセスメソッド
- (GET
, PUT
, POST
など)
- に適用されます。そして、ほとんどの場合これが望ましい動作です。
- しかし、<Limit>
- セクションの中にディレクティブを書くことで、
- 一部のメソッドにのみ制限をかけることもできます。
説明: | サーバのある領域にアクセスできるホストを制御する |
---|---|
構文: | Allow from all|host|env=env-variable
-[host|env=env-variable] ... |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | Limit |
ステータス: | Extension |
モジュール: | mod_access_compat |
Allow
ディレクティブは、どのホストが
- サーバのある領域にアクセスできるかに影響を与えます。
- アクセスはホスト名、IP アドレス、IP アドレスの範囲や、
- 環境変数などのクライアントのリクエストの
- 特徴に基づいてアクセス制御することができます。
このディレクティブの最初の引数は常に from
です。
- それに続く引数は三つの違った形式があります。Allow from
- all
が指定されていれば、すべてのホストにアクセスを許可し、
- アクセス制限は下で説明されているように、
- Deny
- ディレクティブと Order
- ディレクティブの設定で決まります。
- 特定のホストやホスト群にのみサーバへのアクセスを許可するためには、
- 以下のどれかの形式で host を指定することができます:
- Allow from apache.org
- Allow from .net example.edu
-
この文字列に合うか、これで終わる名前のホストのアクセスが許可されます。
- 各部分が完全に合うものだけに適用されますので、上の例は
- foo.apache.org
にはマッチしますが、
- fooapache.org
にはマッチしません。
- この設定をすると、Apache は
- HostnameLookups
- の設定に関わらず、クライアントの IP アドレスに対して
- DNS の 2 重逆引きを行ないます。
- ホスト名からオリジナルの IP アドレスを順引きします。
- 順引きと逆引きが一致し、ホスト名が該当した場合にのみ、
- アクセスが許可されます。
- Allow from 10.1.2.3
- Allow from 192.168.1.104 192.168.1.205
-
アクセスを許可する IP アドレスです。
- Allow from 10.1
- Allow from 10 172.20 192.168.2
-
サブネットの制限用の、IP - アドレスの最初の一つから三つまでのバイトです。
- Allow from 10.1.0.0/255.255.0.0
-
ネットワーク a.b.c.d とネットマスク w.x.y.z です。 - より細粒度のサブネット制限用です。
- Allow from 10.1.0.0/16
-
ネットマスクが nnn の上位ビットが 1 - となっているものからなること以外は前のものと同じです。
注: 最後の三つの例はまったく同じホストに合います。
- - -IPv6 アドレスと IPv6 のサブネットは以下のように指定できます:
- -
- Allow from 2001:db8::a00:20ff:fea7:ccea
- Allow from 2001:db8::a00:20ff:fea7:ccea/10
-
Allow
ディレクティブの引数の三つ目の形式は、
- 環境変数
- の存在によりアクセスの制御を行なえるようにするものです。
- Allow from env=env-variable
- が指定されていると、環境変数 env-variable
- が存在した場合にリクエストはアクセスを許可されます。サーバは
- mod_setenvif
- のディレクティブにより、クライアントのリクエスト
- の特徴に基づいて柔軟に環境変数を設定する機能を提供します。
- ですから、このディレクティブはクライアントの
- User-Agent
(ブラウザの種類)、Referer
- や他の HTTP リクエストのヘッダフィールドなどに基づいて
- アクセス許可をするために使うことができます。
-
- SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
- <Directory /docroot>
-
- Order Deny,Allow
- Deny from all
- Allow from env=let_me_in
-
- </Directory>
-
この場合、user-agent の文字列が KnockKnock/2.0
- で始まるブラウザのみがアクセスが許可され、
- 他のものはアクセスが拒否されます。
説明: | サーバがアクセスを拒否するホストを制御する |
---|---|
構文: | Deny from all|host|env=env-variable
-[host|env=env-variable] ... |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | Limit |
ステータス: | Extension |
モジュール: | mod_access_compat |
このディレクティブはホスト名、IP
- アドレス、環境変数に基づいてサーバへのアクセスを制限します。
- Deny
ディレクティブの引数は Allow
- ディレクティブとまったく同じです。
説明: | デフォルトのアクセス可能な状態と、Allow と
-Deny が評価される順番を制御する |
---|---|
構文: | Order ordering |
デフォルト: | Order Deny,Allow |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | Limit |
ステータス: | Extension |
モジュール: | mod_access_compat |
Order
ディレクティブは Allow
ディレクティブとDeny
と共に"3段階アクセス制御システム"
- を制御します。第1段階目では Order
ディレクティブで1番目に
- 指定したディレクティブ(Allow
- または Deny
)を全て処理します。
- 第2段階目で、残りのディレクティブ(Deny
または Allow
)
- を全て処理します。第3段階目で、第1段階目と第2段階目で
- マッチしなかったリクエストを処理します。
全ての Allow
と Deny
が処理され、結局のところ最後にマッチ
- した条件が有効となることに注意してください。これは最初にマッチした条件だけが有効
- となる、典型的なファイアウォールの動作とは異なっています。
- また、設定ファイルに書く順番には意味はありません。Allow
行は全部一つのグループとして扱われ、
- Deny
行はもう一つのグループとみなされます。
- またデフォルト状態は単独で一つのグループとみなされます。
Order 設定は以下の以下のどれかです。
- -Allow,Deny
Allow
- ディレクティブが適用されます。どれにもマッチしなかった場合、この時点で
- リクエストは拒否されます。次に、全ての
- Deny
ディレクティブが適用されます。どれか一つでもマッチした場合は、
- リクエストは拒否されます。
- 最後に、 Allow
にも Deny
にもマッチしなかったリクエストは
- デフォルト設定が適用されるので拒否されます。Deny,Allow
Deny
- ディレクティブが適用されます。どれか一つでもマッチした場合は、
- Allow
のどれにも
- マッチしなければ、アクセスは拒否されます。
- どの Allow
にも Deny
にもマッチしないリクエストは
- 許可されます。Mutual-failure
Order Allow,Deny
と全く同じ効果を持ち、
- そのため非推奨となっています。
- キーワードの間に置けるのはコンマだけです。 - 間に空白があってはいけません。
- -マッチ | -Allow,Deny 時の結果 | -Deny,Allow 時の結果 | -
---|---|---|
Allow だけにマッチ | -許可 | -許可 | -
Deny だけにマッチ | -拒否 | -拒否 | -
どちらにもマッチしない | -2番目のディレクティブがデフォルト: 拒否 | -2番目のディレクティブがデフォルト: 許可 | -
Allow と Deny 両方にマッチ | -最後にマッチしたほう: 拒否 | -最後にマッチしたほう: 許可 | -
以下の例では、apache.org - ドメインのすべてのホストはアクセスを許可されます。 - 他のすべてのホストはアクセスを拒否されます。
- -
- Order Deny,Allow
- Deny from all
- Allow from apache.org
-
次の例では、foo.apache.org サブドメインにあるホスト以外の、
- apache.org ドメインのすべてのホストがアクセスを許可されます。
- apache.org
- ドメインでないホストは、デフォルトの状態が Deny
のため、
- サーバへのアクセスを拒否されます。
- Order Allow,Deny
- Allow from apache.org
- Deny from foo.apache.org
-
一方、上の例の Order
が Deny,Allow
- に変わっていれば、すべのホストにアクセスが許可されます。
- これは、設定ファイル中の実際の順番に関わらず、
- Allow from apache.org
が最後に評価されて、
- Deny from foo.apache.org
を上書きするからです。
- apache.org
- ドメインにないホストも、デフォルトの状態が Allow
- なので、アクセスを許可されます。
-
Order
- ディレクティブはデフォルトのアクセスの状態に影響を与えるので、
- Allow
ディレクティブと
- Deny
- ディレクティブが無くても、サーバのアクセスに影響を与えることができます。
- たとえば、
- <Directory /www>
-
- Order Allow,Deny
-
- </Directory>
-
はデフォルトのアクセス状態が
- Deny
になるため、
- /www
ディレクトリへのすべてのアクセスを拒否します。
-
Order
- ディレクティブはサーバの設定処理の各段階でだけ
- アクセスディレクティブの処理の順番を変更します。これは、たとえば、
- Order
ディレクティブの設定に関わらず、
- <Location>
セクションの
- Allow
ディレクティブや
- Deny
ディレクティブは、
- Directory
セクションや
- .htaccess
ファイルの Allow
- ディレクティブや Deny
- ディレクティブよりも常に後に評価されるということを意味します。
- 設定セクションのマージの詳細については、
- Directory,Location, Files
- セクションの動作方法 を参照してください。
説明: | ホストレベルのアクセス制御とユーザ認証との相互作用を指定 |
---|---|
構文: | Satisfy Any|All |
デフォルト: | Satisfy All |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Extension |
モジュール: | mod_access_compat |
互換性: | バージョン 2.0.51 以降では <Limit> ディレクティブと <LimitExcept> ディレクティブの影響を受ける
- |
Allow
と
- Require
の両方が使われているときの
- アクセスポリシーを設定します。パラメータは All
か Any
- です。このディレクティブはある場所へのアクセスがユーザ名/パスワード
- とクライアントのホストのアドレスで制限されているときにのみ
- 役立ちます。デフォルトの動作 (All
) はクライアントがアドレスによる
- アクセス制限を満たし、かつ正しいユーザ名とパスワードを入力することを
- 要求します。Any
では、クライアントはホストの制限を満たすか、
- 正しいユーザ名とパスワードの入力をするかをすればアクセスを許可されます。
- これは、ある場所をパスワードで保護するけれど、特定のアドレスからの
- クライアントにはパスワードの入力を要求せずにアクセスを許可する、
- というようなときに使用できます。
例えば、同じネットワーク上にいる人にはウェブサイトのある部分について - 無制限のアクセスを許したいけれど、外のネットワークの人には - パスワードを提供させるようにするためには、次のような設定をすることが - できます:
- -
- Require valid-user
- Allow from 192.168.1
- Satisfy Any
-
バージョン 2.0.51 からは
- <Limit>
セクションと
- <LimitExcept>
セクションを使用することで
- Satisfy
ディレクティブが
- 適用されるメソッドを制限することが
- できるようになりました。
Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻 ( IP ≪) 冴ャ違若粋 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | access_compat_module |
純若鴻<ゃ: | mod_access_compat.c |
篋: | Apache 2.3 (Apache 2.x 篁ュ若吾с潟篋с≪吾ャ若)
+≪吾ャ若ф箴cc粋篁腟帥筝違篌眼ィ絅cс
+mod_authz_host 荀 |
mod_access_compat
箴cc
+ 泣若劫吾
+ ≪祉鴻九勝 <Directory>
, <Files>
, <Location>
+ .htaccess
<ゃт戎障ゃ≪潟鴻IP
+ ≪鴻医紊鴻劫彰冴ャ
+ ≪祉劫九勝茵с障Allow
+ Deny
cc篏帥c
+ ゃ≪潟≪祉鴻
+ 荐怨絎障障
+ Order
cc篏帥c
+ ≪祉合倶
+ Allow
cc
+ Deny
+ cc篋吾綵演帥篁鴻荐絎障
+
鴻≪祉劫狗鴻若茯荐若
+ 腟水篏帥с障
+ 翫篋ゃ狗≫絎
+ Satisfy
+ cc篏睡障
mod_access_compat
箴cc
+ 粋篁腟帥筝違篌眼ィ絅cс
+ mod_authz_host
荀
+ 粋宴罘純篏睡
+ mod_authz_default
+ ≪吾ャ若若違障
筝≪祉劫狗cc鴻≪祉鴻<純
+ (GET
, PUT
, POST
)
+ 障祉翫障篏с
+ <Limit>
+ 祉激с潟筝cc吾с
+ 筝<純水狗с障
茯: | 泣若≪祉鴻с鴻九勝 |
---|---|
罕: | Allow from all|host|env=env-variable
+[host|env=env-variable] ... |
潟潟鴻: | c, .htaccess |
筝吾: | Limit |
鴻若帥: | Extension |
≪吾ャ若: | mod_access_compat |
Allow
cc鴻
+ 泣若≪祉鴻с綵演帥筝障
+ ≪祉鴻鴻IP ≪鴻IP ≪鴻膀蚊
+ 医紊違ゃ≪潟鴻
+ 劫彰冴ャ≪祉劫九勝с障
cc綣違絽吾 from
с
+ 膓鏁違筝ゃc綵√障Allow from
+ all
絎違鴻鴻≪祉鴻荐怨
+ ≪祉劫狗筝ц
+ Deny
+ cc Order
+ cc荐絎ф浦障障
+ 劫鴻鴻臂ゃ帥泣若吾≪祉鴻荐怨
+ 篁ヤ綵√ host 絎с障:
+ Allow from apache.org
+ Allow from .net example.edu
+
絖х鴻≪祉鴻荐怨障
+ 絎障с筝箴
+ foo.apache.org
障
+ fooapache.org
障
+ 荐絎Apache
+ HostnameLookups
+ 荐絎≪ゃ≪潟 IP ≪鴻絲障
+ DNS 2 綣茵障
+ 鴻吾 IP ≪鴻綣障
+ 綣綣筝眼鴻荅峨翫帥
+ ≪祉鴻荐怨障
+ Allow from 10.1.2.3
+ Allow from 192.168.1.104 192.168.1.205
+
≪祉鴻荐怨 IP ≪鴻с
+ Allow from 10.1
+ Allow from 10 172.20 192.168.2
+
泣狗IP + ≪鴻筝ゃ筝ゃ障сゃс
+ Allow from 10.1.0.0/255.255.0.0
+
若 a.b.c.d 鴻 w.x.y.z с + 膣亥綺泣狗с
+ Allow from 10.1.0.0/16
+
鴻 nnn 筝篏 1 + c篁ュс
羈: 緇筝ゃ箴障c鴻障
+ + +IPv6 ≪鴻 IPv6 泣篁ヤ絎с障:
+ +
+ Allow from 2001:db8::a00:20ff:fea7:ccea
+ Allow from 2001:db8::a00:20ff:fea7:ccea/10
+
Allow
cc綣違筝ょ綵√
+ 医紊
+ 絖≪祉鴻九勝茵с
+ Allow from env=env-variable
+ 絎医紊 env-variable
+ 絖翫鴻≪祉鴻荐怨障泣若
+ mod_setenvif
+ ccゃ≪潟鴻
+ 劫彰冴ャ荵医紊違荐絎罘純箴障
+ сccゃ≪潟
+ User-Agent
(吟腮蕁)Referer
+ 篁 HTTP 鴻c若冴ャ
+ ≪祉壕┗篏帥с障
+
+ SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
+ <Directory /docroot>
+
+ Order Deny,Allow
+ Deny from all
+ Allow from env=let_me_in
+
+ </Directory>
+
翫user-agent 絖 KnockKnock/2.0
+ у障吟帥≪祉鴻荐怨
+ 篁≪祉鴻障
茯: | 泣若≪祉鴻鴻九勝 |
---|---|
罕: | Deny from all|host|env=env-variable
+[host|env=env-variable] ... |
潟潟鴻: | c, .htaccess |
筝吾: | Limit |
鴻若帥: | Extension |
≪吾ャ若: | mod_access_compat |
cc鴻IP
+ ≪鴻医紊違冴ャ泣若吾≪祉鴻狗障
+ Deny
cc綣違 Allow
+ cc障cс
茯: | ≪祉劫純倶Allow
+Deny 荅箴<九勝 |
---|---|
罕: | Order ordering |
: | Order Deny,Allow |
潟潟鴻: | c, .htaccess |
筝吾: | Limit |
鴻若帥: | Extension |
≪吾ャ若: | mod_access_compat |
Order
cc Allow
ccDeny
宴"3罧級≪祉劫九勝激鴻"
+ 九勝障膃1罧級с Order
cc1
+ 絎cc(Allow
+ 障 Deny
)障
+ 膃2罧級с罧cc(Deny
障 Allow
)
+ 障膃3罧級с膃1罧級膃2罧級
+ c鴻障
Allow
Deny
腟絮緇
+ >散鴻羈>散
+ 後<ゃ≪若篏違c障
+ 障荐絎<ゃ吾潟障Allow
茵筝ゃ違若宴
+ Deny
茵筝ゃ違若帥障
+ 障倶тゃ違若帥障
Order 荐絎篁ヤ篁ヤс
+ +Allow,Deny
Allow
+ cc障c翫鴻
+ 鴻障罨<
+ Deny
cc障筝ゃс翫
+ 鴻障
+ 緇 Allow
Deny
c鴻
+ 荐絎ф障Deny,Allow
Deny
+ cc障筝ゃс翫
+ Allow
+ ≪祉鴻障
+ Allow
Deny
鴻
+ 荐怨障Mutual-failure
Order Allow,Deny
号<
+ ィ絅c障
+ 若若臀潟潟с + 腥榊純c障
+ ++ | Allow,Deny 腟 | +Deny,Allow 腟 | +
---|---|---|
Allow | +荐怨 | +荐怨 | +
Deny | ++ | + |
< | +2cc: | +2cc: 荐怨 | +
Allow Deny 筝≧鴻 | +緇祉: | +緇祉: 荐怨 | +
篁ヤ箴сapache.org + <ゃ潟鴻鴻≪祉鴻荐怨障 + 篁鴻鴻≪祉鴻障
+ +
+ Order Deny,Allow
+ Deny from all
+ Allow from apache.org
+
罨<箴сfoo.apache.org 泣<ゃ潟鴻篁ュ
+ apache.org <ゃ潟鴻鴻≪祉鴻荐怨障
+ apache.org
+ <ゃ潟с鴻倶 Deny
+ 泣若吾≪祉鴻障
+ Order Allow,Deny
+ Allow from apache.org
+ Deny from foo.apache.org
+
筝鴻筝箴 Order
Deny,Allow
+ 紊c違鴻鴻≪祉鴻荐怨障
+ 荐絎<ゃ筝絎≪
+ Allow from apache.org
緇荅箴<
+ Deny from foo.apache.org
筝吾с
+ apache.org
+ <ゃ潟鴻倶 Allow
+ с≪祉鴻荐怨障
+
Order
+ cc≪祉鴻倶綵演帥筝с
+ Allow
cc
+ Deny
+ cc<泣若≪祉鴻綵演帥筝с障
+ 違
+ <Directory /www>
+
+ Order Allow,Deny
+
+ </Directory>
+
≪祉合倶
+ Deny
+ /www
c吾鴻≪祉鴻障
+
Order
+ cc泣若荐絎罧級с
+ ≪祉鴻cc紊眼障違
+ Order
cc荐絎≪
+ <Location>
祉激с潟
+ Allow
cc
+ Deny
cc
+ Directory
祉激с潟
+ .htaccess
<ゃ Allow
+ cc Deny
+ cc絽吾緇荅箴<潟障
+ 荐絎祉激с潟若吾荅括完ゃ
+ Directory,Location, Files
+ 祉激с潟篏号 с
茯: | 鴻≪祉劫九勝若区荐若娯篏絎 |
---|---|
罕: | Satisfy Any|All |
: | Satisfy All |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Extension |
≪吾ャ若: | mod_access_compat |
篋: | 若吾с 2.0.51 篁ラс <Limit> cc <LimitExcept> cc綵演帥
+ |
Allow
+ Require
筝≧鴻篏帥
+ ≪祉鴻激若荐絎障<若帥 All
Any
+ сcc贋吾≪祉鴻若九/鴻若
+ ゃ≪潟鴻≪鴻у狗
+ 綵合<障篏 (All
) ゃ≪潟≪鴻
+ ≪祉劫狗羣罩c若九鴻若ュ
+ 荀羆障Any
сゃ≪潟鴻狗羣
+ 罩c若九鴻若ュ違≪祉鴻荐怨障
+ 贋鴻若т茘激劫≪鴻
+ ゃ≪潟鴻若ュ荀羆≪祉鴻荐怨
+ 篏睡с障
箴違若筝篋冴с泣ゃゃ + ≦狗≪祉鴻荐宴紊若篋冴 + 鴻若箴罨<荐絎 + с障:
+ +
+ Require valid-user
+ Allow from 192.168.1
+ Satisfy Any
+
若吾с 2.0.51
+ <Limit>
祉激с潟
+ <LimitExcept>
祉激с潟篏睡
+ Satisfy
cc
+ <純狗
+ с障
Apache HTTP サーバ バージョン 2.3
-説明: | メディアタイプやリクエストメソッドに応じて -CGI スクリプトを実行する機能を提供 |
---|---|
ステータス: | Base |
モジュール識別子: | actions_module |
ソースファイル: | mod_actions.c |
このモジュールには二つのディレクティブがあります。Action
- ディレクティブは特定の MIME タイプのファイルをリクエストされた場合に
- CGI スクリプトが実行されるようにします。Script
- ディレクティブはリクエストで特定のメソッドが使用されたときに CGI
- スクリプトが実行されるようにします。
- これはファイルを処理するスクリプトの実行をずっと簡単にします。
説明: | 特定のハンドラやコンテントタイプに対して CGI を実行するように -設定 |
---|---|
構文: | Action action-type cgi-script [virtual] |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_actions |
互換性: | virtual 修飾子とハンドラ渡しは
-Apache 2.1 で導入されました |
このディレクティブは action-type
- がリクエストされたときに cgi-script
- が実行されるという動作を追加します。cgi-script は
- ScriptAlias
や
- AddHandler
によって
- CGI スクリプトに設定されたリソースへの URL-path です。
- Action-type には
- handler か MIME
- コンテントタイプを指定できます。リクエストされたドキュメントの URL
- とファイルのパスは標準 CGI 環境変数 PATH_INFO
と
- PATH_TRANSLATED
を使って伝えられます。
- 特定のリクエストに対して使用されるハンドラへは、
- REDIRECT_HANDLER
変数を使って渡せます。
- # Requests for files of a particular MIME content type:
- Action image/gif /cgi-bin/images.cgi
-
- # Files of a particular file extension
- AddHandler my-file-type .xyz
- Action my-file-type /cgi-bin/program.cgi
-
最初の例では、MIME コンテントタイプが image/gif
- のファイルへのリクエストは、指定したスクリプト
- /cgi-bin/images.cgi
で処理されます。
2 番目の例では、拡張子が .xyz
- のファイルへのリクエストは、指定したスクリプト
- /cgi-bin/program.cgi
で処理されます。
オプションの virtual
修飾子を使用すると、
- リクエストされたファイルが実際に存在するかどうかを検査しないようにできます。
- これは例えば、Action
ディレクティブをバーチャルな
- Location に使用したい、といった場合に便利です。
- <Location /news>
-
- SetHandler news-handler
- Action news-handler /cgi-bin/news.cgi virtual
-
- </Location>
-
AddHandler
説明: | 特定のリクエストメソッドに対して CGI スクリプトを -実行するように設定 |
---|---|
構文: | Script method cgi-script |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
ステータス: | Base |
モジュール: | mod_actions |
このディレクティブは method
- というメソッドを使ってリクエストが行なわれたときに
- cgi-script を実行するという動作を追加します。
- cgi-script は
- ScriptAlias
や
- AddHandler
によって
- CGI スクリプトに設定されたリソースへの URL-path です。
- リクエストされたドキュメントの URL とファイルのパスは標準 CGI
- 環境変数 PATH_INFO
と PATH_TRANSLATED
- を使って伝えられます。
Script PUT
と Script put
- はまったく違った効果になります。
- Script
コマンドはデフォルトの動作を
- 追加するだけであることに
- 注意してください。もし CGI スクリプトが呼ばれたり、リクエストされた
- メソッドを内部で扱うことのできる他のリソースがあれば、それが行なわれます。
- GET
メソッドの Script
は問合せ
- 引数がある場合にのみ
- (たとえば、foo.html?hi) 呼ばれるということにも注意してください。
- そうでない場合は、リクエストは通常通り処理されます。
- # For <ISINDEX>-style searching
- Script GET /cgi-bin/search
-
- # A CGI PUT handler
- Script PUT /~bob/put.cgi
-
Apache HTTP 泣若 若吾с 2.3
+茯: | <c≪帥ゃ鴻<純綽 +CGI 鴻絎茵罘純箴 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | actions_module |
純若鴻<ゃ: | mod_actions.c |
≪吾ャ若篋ゃcc障Action
+ cc劫 MIME 帥ゃ<ゃ鴻翫
+ CGI 鴻絎茵障Script
+ cc鴻х劫<純篏睡 CGI
+ 鴻絎茵障
+ <ゃ鴻絎茵c膂≦障
茯: | 劫潟潟潟潟帥ゃ絲障 CGI 絎茵 +荐絎 |
---|---|
罕: | Action action-type cgi-script [virtual] |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_actions |
篋: | virtual 篆蕋上潟羝<
+Apache 2.1 уャ障 |
cc action-type
+ 鴻 cgi-script
+ 絎茵篏菴遵障cgi-script
+ ScriptAlias
+ AddHandler
c
+ CGI 鴻荐絎純若鴻吾 URL-path с
+ Action-type
+ handler MIME
+ 潟潟潟帥ゃ絎с障鴻ャ<潟 URL
+ <ゃ鴻罔羣 CGI 医紊 PATH_INFO
+ PATH_TRANSLATED
篏帥c篌障
+ 劫鴻絲障篏睡潟吾
+ REDIRECT_HANDLER
紊違篏帥c羝<障
+ # Requests for files of a particular MIME content type:
+ Action image/gif /cgi-bin/images.cgi
+
+ # Files of a particular file extension
+ AddHandler my-file-type .xyz
+ Action my-file-type /cgi-bin/program.cgi
+
箴сMIME 潟潟潟帥ゃ image/gif
+ <ゃ吾鴻絎鴻
+ /cgi-bin/images.cgi
у障
2 箴с≦宍絖 .xyz
+ <ゃ吾鴻絎鴻
+ /cgi-bin/program.cgi
у障
激с潟 virtual
篆蕋上篏睡
+ 鴻<ゃ絎絖罎祉с障
+ 箴違Action
cc若c
+ Location 篏睡c翫箴水с
+ <Location /news>
+
+ SetHandler news-handler
+ Action news-handler /cgi-bin/news.cgi virtual
+
+ </Location>
+
AddHandler
茯: | 劫鴻<純絲障 CGI 鴻 +絎茵荐絎 |
---|---|
罕: | Script method cgi-script |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Base |
≪吾ャ若: | mod_actions |
cc method
+ <純篏帥c鴻茵
+ cgi-script 絎茵篏菴遵障
+ cgi-script
+ ScriptAlias
+ AddHandler
c
+ CGI 鴻荐絎純若鴻吾 URL-path с
+ 鴻ャ<潟 URL <ゃ鴻罔羣 CGI
+ 医紊 PATH_INFO
PATH_TRANSLATED
+ 篏帥c篌障
Script PUT
Script put
+ 障cc号障
+ Script
潟潟篏
+ 菴遵с
+ 羈 CGI 鴻若違鴻
+ <純ф宴с篁純若鴻違茵障
+ GET
<純 Script
+ 綣違翫
+ (foo.html?hi) 若違羈
+ с翫鴻絽檎障
+ # For <ISINDEX>-style searching
+ Script GET /cgi-bin/search
+
+ # A CGI PUT handler
+ Script PUT /~bob/put.cgi
+
Apache HTTP サーバ バージョン 2.3
-説明: | ホストファイルシステム上のいろいろな違う場所を - ドキュメントツリーにマップする機能と、 - URL のリダイレクトを行なう機能を提供する |
---|---|
ステータス: | Base |
モジュール識別子: | alias_module |
ソースファイル: | mod_alias.c |
このモジュールのディレクティブはサーバにリクエストが到着したときに
- URL の操作や制御をすることを可能にします。Alias
- ディレクティブと ScriptAlias
- ディレクティブは
- URL とファイルシステムのパスをマップするために使用されます。これは
- DocumentRoot
- の下にないドキュメントをウェブのドキュメントツリーの一部として
- 送られるようにします。ScriptAlias
- ディレクティブにはマップ先のディレクトリが CGI
- スクリプトのみであることを示すという追加の効果があります。
-
Redirect
ディレクティブは
- クライアントに違った
- URL に新しいリクエストを送るように指示します。これは、
- リソースが新しい場所に移動したときによく使用されます。
mod_alias
は簡単な URL 操作向けに設計されています。
- より複雑な操作、クエリーストリングの操作には、mod_rewrite
- で提供されるツールを使用してください。
様々なコンテキスト中での Alias や Redirect は他のディレクティブと
-同じように標準の マージ規則 に
-従って処理されます。ただし、(例えば <VirtualHost>
セクションの中のように) 複数の Alias や Redirect が
-同じコンテキスト中に現れた場合は決まった順番で処理されます。
まず、Alias の前にすべての Redirect が処理されます。ですから、Redirect
か RedirectMatch
にマッチするリクエストには
-Alias は決して適用されません。次に、Alias と Redirect が設定ファイル中の
-順番に適用され、最初にマッチしたものが優先されます。
ですから、二つ以上のディレクティブが同じパスに適用されるときは、 -すべてのディレクティブの効果を得るためにはより詳しいパスを先に書く -必要があります。例えば、次の設定は期待通りの動作をします:
- -
-Alias /foo/bar /baz
-Alias /foo /gaq
-
しかし、上記の二つのディレクティブの順番が逆になると、
-/foo
Alias
が
-常に /foo/bar
Alias
より先にマッチしますので、後者は
-決して適用されることはありません。
説明: | URL をファイルシステムの位置にマップする |
---|---|
構文: | Alias URL-path
-file-path|directory-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_alias |
Alias
ディレクティブはドキュメントを
- ローカルファイルシステムの
- DocumentRoot
- 以外の場所に保管することを可能にします。
- URL の (% が復号された) パスが url-path で始まるものは
- directory-filename
- で始まるローカルファイルにマップされます。
- Alias /image /ftp/pub/image
-
http://myserver/image/foo.gif へのリクエストに対して、サーバは - ファイル /ftp/pub/image/foo.gif を返します。
- -もし url-path の最後に /
- を書いたなら、サーバがエイリアスを展開するためには、最後の /
- が必要になることに注意してください。すなわち、Alias /icons/
- /usr/local/apache/icons/
というものを使用している場合は、
- /icons
という url はエイリアスされません。
エイリアスの行き先を含んでいる <Directory>
- セクションを追加する必要があるかもしれないことに注意してください。
- エイリアスの展開は <Directory>
- セクションを調べる前に行なわれますので、
- エイリアスの行き先の <Directory>
セクションのみ
- 効果があります。
- (しかし、<Location>
- セクションはエイリアスが処理される前に実行されますので、
- こちらは適用されます。)
特に、Alias
を
- DocumentRoot
- ディレクトリの外側に配置した場合は、行き先のディレクトリに対する
- アクセス権限を明示的に制限しなければならないでしょう。
- Alias /image /ftp/pub/image
- <Directory /ftp/pub/image>
-
- Order allow,deny
- Allow from all
-
- </Directory>
-
説明: | 正規表現を使って URL をファイルシステムの位置にマップする |
---|---|
構文: | AliasMatch regex
-file-path|directory-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_alias |
このディレクティブは Alias
- とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、
- 標準正規表現を利用します。ここで指定された正規表現と URL のパス
- が合うかどうかを調べ、合う場合は括弧で括られたマッチを
- 与えられた文字列で置き換え、それをファイル名として使用します。たとえば、
- /icons
ディレクトリを使う
- ためには以下のようなものが使用できます:
- AliasMatch ^/icons(.*) /usr/local/apache/icons$1
-
説明: | クライアントが違う URL を取得するように外部へのリダイレクトを -送る |
---|---|
構文: | Redirect [status] URL-path
-URL |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_alias |
Redirect ディレクティブは古い URL を新しいものへマップします。 - 新しい URL がクライアントに返されます。そして、 - クライアントは新しいアドレスをもう一回取得しようとします。 - URL-path (% が復号された) パスで始まるドキュメントへの - すべてのリクエストは URL で始まる新しい - (% が符号化された) URL へのリダイレクトエラーが返されます。
- -
- Redirect /service http://foo2.bar.com/service
-
クライアントは http://myserver/service/foo.txt - へのリクエストを行なうと、代わりに http://foo2.bar.com/service/foo.txt - をアクセスするように告げられます。
- -設定ファイル中の順番に関わらず、
-Redirect 系のディレクティブは Alias
-ディレクティブと ScriptAlias ディレクティブよりも優先されます。
-また、.htaccess ファイルや <Directory>
-セクションの中で使われていたとしても、URL-path
-は相対パスではなく、完全な URL でなければなりません。
もし status 引数が与えられていなければ、リダイレクトは - "temporary" (HTTP ステータス 302) になります。これはクライアントに - リソースが一時的に移動したということを示します。Status - 引数は 他の HTTP のステータスコードを返すために使用することができます:
- -Status の値にステータスコードを数値で与えることで
- 他のステータスコードも返すことができます。ステータスが 300 と 399
- の間にある場合、url 引数は存在していなければいけません。
- その他の場合は省略されていなければなりません。ただし、
- ステータスは Apache のコードが知っているものである必要があります
- (http_protocol.c の関数 send_error_response
- を見てください)。
例:
- -
- Redirect permanent /one http://example.com/two
- Redirect 303 /three http://example.com/other
-
説明: | 現在の URL への正規表現のマッチにより -外部へのリダイレクトを送る |
---|---|
構文: | RedirectMatch [status] regex
-URL |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_alias |
このディレクティブは Redirect
- とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、
- 標準正規表現を利用します。ここで指定された正規表現と URL-path
- が合うかどうかを調べ、合う場合は括弧で括られたマッチを
- 与えられた文字列で置き換え、それをファイル名として使用します。
- たとえば、すべての GIF ファイルを別サーバの同様な名前の JPEG
- ファイルにリダイレクトするには、以下のようなものを使います:
-
- RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg
-
説明: | クライアントが違う URL を取得するように外部への永久的な -リダイレクトを送る |
---|---|
構文: | RedirectPermanent URL-path URL |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_alias |
このディレクティブはクライアントに Redirect が永久的なもの
- (ステータス 301) であることを知らせます。
- Redirect permanent
とまったく同じです。
説明: | クライアントが違う URL を取得するように外部への一時的な -リダイレクトを送る |
---|---|
構文: | RedirectTemp URL-path URL |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_alias |
このディレクティブはクライアントに Redirect
- が一時的なものである (ステータス 302) ことを知らせます。
- Redirect temp
とまったく同じです。
説明: | URL をファイルシステムの位置へマップし、マップ先を -CGI スクリプトに指定 |
---|---|
構文: | ScriptAlias URL-path
-file-path|directory-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_alias |
ScriptAlias
ディレクティブは、対象ディレクトリに
- mod_cgi
の cgi-script
- ハンドラで処理される CGI
- スクリプトがあることを示す以外は
- Alias
- ディレクティブと同じ振る舞いをします。
- URL の (% が復号された) パスが URL-path で始まるものは
- ローカルのファイルシステムの
- フルパスである二番目の引数にマップされます。
- ScriptAlias /cgi-bin/ /web/cgi-bin/
-
http://myserver/cgi-bin/foo
- へのリクエストに対してサーバはスクリプト
- /web/cgi-bin/foo
を実行します。
説明: | URL を正規表現を使ってファイルシステムの位置へマップし、マップ先を -CGI スクリプトに指定 |
---|---|
構文: | ScriptAliasMatch regex
-file-path|directory-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_alias |
このディレクティブは ScriptAlias
- とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、
- 標準正規表現を利用します。ここで指定された正規表現と URL-path
- が合うかどうかを調べ、合う場合は括弧で括られたマッチを
- 与えられた文字列で置き換え、それをファイル名として使用します。
- たとえば、標準の /cgi-bin
- を使用するようにするためには、以下のようなものを使います:
-
- ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
-
Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻<ゃ激鴻筝贋 + ャ<潟若罘純 + URL ゃ茵罘純箴 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | alias_module |
純若鴻<ゃ: | mod_alias.c |
≪吾ャ若cc泣若鴻亥
+ URL 篏九勝純障Alias
+ cc ScriptAlias
+ cc
+ URL <ゃ激鴻鴻篏睡障
+ DocumentRoot
+ 筝ャ<潟сャ<潟若筝
+ 障ScriptAlias
+ ccc CGI
+ 鴻帥с腓冴菴遵号障
+
Redirect
cc
+ ゃ≪潟c
+ URL 違鴻腓冴障
+ 純若鴻違贋腱糸鋎睡障
mod_alias
膂≦ URL 篏荐荐障
+ 茲篏若鴻潟違篏mod_rewrite
+ ф箴若篏睡
罕潟潟鴻筝с Alias Redirect 篁cc
+罔羣 若梧
+緇c障(箴 <VirtualHost>
祉激с潟筝) 茲違 Alias Redirect
+潟潟鴻筝憗翫羆冴障cу障
障Alias 鴻 Redirect 障сRedirect
RedirectMatch
鴻
+Alias 羆冴障罨<Alias Redirect 荐絎<ゃ筝
+障
с篋や札筝cc鴻 +鴻cc号緇荅潟鴻吾 +綽荀障箴違罨<荐絎緇篏障:
+ +
+Alias /foo/bar /baz
+Alias /foo /gaq
+
茯: | URL <ゃ激鴻篏臀 |
---|---|
罕: | Alias URL-path
+file-path|directory-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_alias |
Alias
ccャ<潟
+ 若<ゃ激鴻
+ DocumentRoot
+ 篁ュ贋篆膊<純障
+ URL (% 緇垩) 鴻 url-path у障
+ directory-filename
+ у障若<ゃ障
+ Alias /image /ftp/pub/image
+
http://myserver/image/foo.gif 吾鴻絲障泣若 + <ゃ /ftp/pub/image/foo.gif 菴障
+ + url-path 緇 /
+ 吾泣若ゃ≪鴻絮緇 /
+ 綽荀羈<Alias /icons/
+ /usr/local/apache/icons/
篏睡翫
+ /icons
url ゃ≪鴻障
ゃ≪鴻茵с <Directory>
+ 祉激с潟菴遵綽荀羈
+ ゃ≪鴻絮 <Directory>
+ 祉激с潟茯帥鴻茵障с
+ ゃ≪鴻茵 <Directory>
祉激с潟
+ 号障
+ (<Location>
+ 祉激с潟ゃ≪鴻絎茵障с
+ <障)
鴻Alias
+ DocumentRoot
+ c紊眼臀翫茵c絲障
+ ≪祉号┤腓榊狗違с
+ Alias /image /ftp/pub/image
+ <Directory /ftp/pub/image>
+
+ Order allow,deny
+ Allow from all
+
+ </Directory>
+
茯: | 罩h頫憗篏帥c URL <ゃ激鴻篏臀 |
---|---|
罕: | AliasMatch regex
+file-path|directory-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_alias |
cc Alias
+ 祉с膂≦茵с
+ 罔羣罩h頫憗障ф絎罩h頫憗 URL
+ 茯帥鴻翫綣сф
+ 筝絖х舟<ゃ篏睡障違
+ /icons
c篏帥
+ 篁ヤ篏睡с障:
+ AliasMatch ^/icons(.*) /usr/local/apache/icons$1
+
茯: | ゃ≪潟 URL 緇紊吾ゃ + |
---|---|
罕: | Redirect [status] URL-path
+URL |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_alias |
Redirect ccゃ URL 違吾障 + 違 URL ゃ≪潟菴障 + ゃ≪潟違≪鴻筝緇障 + URL-path (% 緇垩) 鴻у障ャ<潟吾 + 鴻鴻 URL у障違 + (% 膃垸) URL 吾ゃ若菴障
+ +
+ Redirect /service http://foo2.bar.com/service
+
ゃ≪潟 http://myserver/service/foo.txt + 吾鴻茵篁c http://foo2.bar.com/service/foo.txt + ≪祉鴻障
+ +荐絎<ゃ筝≪
+Redirect 膤祉cc Alias
+cc ScriptAlias cc障
+障.htaccess <ゃ <Directory>
+祉激с潟筝т戎URL-path
+後障鴻с絎 URL с違障
status 綣違筝違ゃ + "temporary" (HTTP 鴻若帥 302) 障ゃ≪潟 + 純若鴻筝腱糸腓冴障Status + 綣違 篁 HTTP 鴻若帥鴻潟若菴篏睡с障:
+ +Status ゃ鴻若帥鴻潟若医ゃт
+ 篁鴻若帥鴻潟若菴с障鴻若帥鴻 300 399
+ 翫url 綣違絖違障
+ 篁翫ャ違障
+ 鴻若帥鴻 Apache 潟若ャcс綽荀障
+ (http_protocol.c ∽ send_error_response
+ 荀)
箴:
+ +
+ Redirect permanent /one http://example.com/two
+ Redirect 303 /three http://example.com/other
+
茯: | 憜 URL 吾罩h頫憗 +紊吾ゃ |
---|---|
罕: | RedirectMatch [status] regex
+URL |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_alias |
cc Redirect
+ 祉с膂≦茵с
+ 罔羣罩h頫憗障ф絎罩h頫憗 URL-path
+ 茯帥鴻翫綣сф
+ 筝絖х舟<ゃ篏睡障
+ 違鴻 GIF <ゃャ泣若罕 JPEG
+ <ゃゃ篁ヤ篏帥障:
+
+ RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg
+
茯: | ゃ≪潟 URL 緇紊吾羂娯 +ゃ |
---|---|
罕: | RedirectPermanent URL-path URL |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_alias |
ccゃ≪潟 Redirect 羂娯
+ (鴻若帥 301) сャ障
+ Redirect permanent
障cс
茯: | ゃ≪潟 URL 緇紊吾筝 +ゃ |
---|---|
罕: | RedirectTemp URL-path URL |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_alias |
ccゃ≪潟 Redirect
+ 筝с (鴻若帥 302) ャ障
+ Redirect temp
障cс
茯: | URL <ゃ激鴻篏臀吾 +CGI 鴻絎 |
---|---|
罕: | ScriptAlias URL-path
+file-path|directory-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_alias |
ScriptAlias
cc絲乗院c
+ mod_cgi
cgi-script
+ 潟у CGI
+ 鴻腓冴篁ュ
+ Alias
+ cc障
+ URL (% 緇垩) 鴻 URL-path у障
+ 若<ゃ激鴻
+ 鴻с篋綣違障
+ ScriptAlias /cgi-bin/ /web/cgi-bin/
+
http://myserver/cgi-bin/foo
+ 吾鴻絲障泣若鴻
+ /web/cgi-bin/foo
絎茵障
茯: | URL 罩h頫憗篏帥c<ゃ激鴻篏臀吾 +CGI 鴻絎 |
---|---|
罕: | ScriptAliasMatch regex
+file-path|directory-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_alias |
cc ScriptAlias
+ 祉с膂≦茵с
+ 罔羣罩h頫憗障ф絎罩h頫憗 URL-path
+ 茯帥鴻翫綣сф
+ 筝絖х舟<ゃ篏睡障
+ 違罔羣 /cgi-bin
+ 篏睡篁ヤ篏帥障:
+
+ ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
+
Apache HTTP サーバ バージョン 2.3
-説明: | 自分用の HTTP ヘッダの書かれているファイルを送信する |
---|---|
ステータス: | Base |
モジュール識別子: | asis_module |
ソースファイル: | mod_asis.c |
このモジュールはハンドラ send-as-is
- を提供します。このハンドラは通常の HTTP
- ヘッダをほとんど追加することなくドキュメントを送信します。
これはサーバからどんな種類のデータを送るときにも使用できます。 - Cgi スクリプトや nph スクリプトが無くてもリダイレクトや他の特別な - HTTP 応答を送ることができます。
- -歴史的な理由により、このモジュールは mime タイプ
- httpd/send-as-is
のファイルも処理します。
サーバ設定ファイルで、ファイルと send-as-is
- ハンドラを例えば以下のように関連付けてください。
AddHandler send-as-is asis
拡張子が .asis
のすべてのファイルの内容は Apache
- からクライアントへほとんど変更無く送られます。クライアントには
- HTTP ヘッダが必要ですので、ファイルに書くことを忘れないでください。
- Status: ヘッダも必要です。データは 3 桁の HTTP
- 応答コードと、その後にテキストメッセージが続いたものでなければなりません。
これはクライアントにファイルが移動したことを知らせるために - as is (そのまま) で送られるファイルの内容の例です。 -
- - -
- Status: 301 Now where did I leave that URL
- Location: http://xyz.abc.com/foo/bar.html
- Content-type: text/html
-
- <html>
- <head>
- <title>Lame excuses'R'us</title>
- </head>
- <body>
- <h1>Fred's exceptionally wonderful page has moved to
- <a href="http://xyz.abc.com/foo/bar.html">Joe's</a>
- site.
- </h1>
- </body>
- </html>
-
注意: サーバはクライアントに返されるデータに常に Date:
- と Server:
ヘッダを追加しますので、
- それらがファイルに書かれていてはいけません。
- サーバは Last-Modified
ヘッダを追加しません。
- おそらくはそうすべきでしょうけれど。
Apache HTTP 泣若 若吾с 2.3
+茯: | HTTP 吾<ゃ篆< |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | asis_module |
純若鴻<ゃ: | mod_asis.c |
≪吾ャ若潟 send-as-is
+ 箴障潟絽吾 HTTP
+ 祉菴遵ャ<潟篆<障
泣若腮蕁若帥篏睡с障 + Cgi 鴻 nph 鴻<ゃ篁劫ャ + HTTP 綽膈с障
+ +罩翫兏宴≪吾ャ若 mime 帥ゃ
+ httpd/send-as-is
<ゃ障
泣若荐絎<ゃс<ゃ send-as-is
+ 潟箴遺札筝∫d
AddHandler send-as-is asis
≦宍絖 .asis
鴻<ゃ絎鴻 Apache
+ ゃ≪潟吾祉紊雁<障ゃ≪潟
+ HTTP 綽荀сс<ゃ吾綽с
+ Status: 綽荀с若帥 3 罅 HTTP
+ 綽膈潟若緇鴻<祉若吾膓с違障
ゃ≪潟<ゃ腱糸ャ + as is (障) ч<ゃ絎鴻箴с +
+ + +
+ Status: 301 Now where did I leave that URL
+ Location: http://xyz.abc.com/foo/bar.html
+ Content-type: text/html
+
+ <html>
+ <head>
+ <title>Lame excuses'R'us</title>
+ </head>
+ <body>
+ <h1>Fred's exceptionally wonderful page has moved to
+ <a href="http://xyz.abc.com/foo/bar.html">Joe's</a>
+ site.
+ </h1>
+ </body>
+ </html>
+
羈: 泣若ゃ≪潟菴若帥絽吾 Date:
+ Server:
菴遵障с
+ <ゃ吾障
+ 泣若 Last-Modified
菴遵障
+ 鴻с
Apache HTTP サーバ バージョン 2.3
-説明: | 基本認証 |
---|---|
ステータス: | Base |
モジュール識別子: | auth_basic_module |
ソースファイル: | mod_auth_basic.c |
互換性: | Apache 2.1 以降 |
与えられたプロバイダ (訳注: 認証での照会を行う問い合わせ先)
- でユーザを検索し、HTTP 基本認証でアクセス制限できるようになります。
- HTTP ダイジェスト認証については mod_auth_digest
- で提供されます。
説明: | 認証と承認を、より低いレベルのモジュールに移行させるかを -設定します。 |
---|---|
構文: | AuthBasicAuthoritative On|Off |
デフォルト: | AuthBasicAuthoritative On |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Base |
モジュール: | mod_auth_basic |
AuthBasicAuthoritative
- ディレクティブで明示的に Off
に設定すると、
- 与えられた認証ユーザ ID に対してユーザ ID がない
- またはルールがない場合に、
- 認証と承認の両方のプロセスが、
- より低いレベルのモジュール (modules.c
ファイルで定義) に移行するようにできます。
- ユーザ ID がある、かつまたは、ルールが指定されている場合は、
- 通常のパスワードとアクセスチェックが適用されて、
- 認証に失敗すると "Authentication Required" 応答が返されます。
ですから、二つ以上のモジュールのデータベースで同一の
- ユーザ ID が現われたり、
- または、正しい Require
- ディレクティブが二つ以上のモジュールで現われたりした場合は、
- 一つ目のモジュールが認定を行って、AuthAuthoritative
- 設定に関わらず、アクセスは移行しません。
デフォルトでは、制御は移行しません。そして、未知のユーザ ID や - ルールがあっても "Authentication Required" 応答が返されます。 - ですから、このディレクティブを設定しないことでシステムの安全を維持できて、また、 - NCSA 準拠の挙動を強制できます。
- -説明: | この位置に対する認証プロバイダを設定します。 |
---|---|
構文: | AuthBasicProvider On|Off|provider-name
-[provider-name] ... |
デフォルト: | AuthBasicProvider On |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Base |
モジュール: | mod_auth_basic |
AuthBasicProvider
ディレクティブで、
- この位置に対するユーザ認証に用いられる認証プロバイダを設定します。
- On
に設定するとデフォルトの認証プロバイダ
- (file
) が使用されます。file
- プロバイダは mod_authn_file
- モジュールで実装されていますので、
- このモジュールがサーバに入っていることを確認してください。
- <Location /secure>
-
- AuthBasicProvider dbm
- AuthDBMType SDBM
- AuthDBMUserFile /www/etc/dbmpasswd
- Require valid-user
-
- </Location>
-
認証プロバイダについては
- mod_authn_dbm
と mod_authn_file
- をご覧下さい。
Off
はプロバイダリストをクリアして、デフォルトの
- 状態に戻します。
Apache HTTP 泣若 若吾с 2.3
+茯: | 堺茯荐 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | auth_basic_module |
純若鴻<ゃ: | mod_auth_basic.c |
篋: | Apache 2.1 篁ラ |
筝ゃ (荐恰絵: 茯荐若ст茵)
+ с若吟罎膣≪HTTP 堺茯荐若с≪祉劫狗с障
+ HTTP ゃ吾с鴻茯荐若ゃ mod_auth_digest
+ ф箴障
茯: | 茯荐若粋篏≪吾ャ若腱肢 +荐絎障 |
---|---|
罕: | AuthBasicAuthoritative On|Off |
: | AuthBasicAuthoritative On |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Base |
≪吾ャ若: | mod_auth_basic |
AuthBasicAuthoritative
+ ccф腓榊 Off
荐絎
+ 筝茯荐若若 ID 絲障若 ID
+ 障若翫
+ 茯荐若粋筝≧鴻祉鴻
+ 篏≪吾ャ若 (modules.c
<ゃу臂) 腱肢с障
+ 若 ID ゃ障若絎翫
+ 絽吾鴻若≪祉鴻с
+ 茯荐若紊掩 "Authentication Required" 綽膈菴障
с篋や札筝≪吾ャ若若帥若鴻у筝
+ 若 ID 憗
+ 障罩c Require
+ cc篋や札筝≪吾ャ若х憗翫
+ 筝ょ≪吾ャ若茯絎茵cAuthAuthoritative
+ 荐絎≪≪祉鴻腱肢障
с九勝腱肢障ャ若 ID + 若c "Authentication Required" 綽膈菴障 + сcc荐絎с激鴻絎膓с障 + NCSA 羣綣桁吟с障
+ +茯: | 篏臀絲障茯荐若ゃ荐絎障 |
---|---|
罕: | AuthBasicProvider On|Off|provider-name
+[provider-name] ... |
: | AuthBasicProvider On |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Base |
≪吾ャ若: | mod_auth_basic |
AuthBasicProvider
ccс
+ 篏臀絲障若区荐若茯荐若ゃ荐絎障
+ On
荐絎茯荐若ゃ
+ (file
) 篏睡障file
+ ゃ mod_authn_file
+ ≪吾ャ若у茖障с
+ ≪吾ャ若泣若ャc腆肴
+ <Location /secure>
+
+ AuthBasicProvider dbm
+ AuthDBMType SDBM
+ AuthDBMUserFile /www/etc/dbmpasswd
+ Require valid-user
+
+ </Location>
+
茯荐若ゃゃ
+ mod_authn_dbm
mod_authn_file
+ 荀т
Off
ゃ鴻≪
+ 倶祉障
Apache HTTP サーバ バージョン 2.3
-説明: | 認証が必要な領域への "anonymous" ユーザのアクセスを許可する - |
---|---|
ステータス: | Extension |
モジュール識別子: | authn_anon_module |
ソースファイル: | mod_authn_anon.c |
互換性: | Apache 2.1 以降 |
このモジュールは mod_auth_basic
のような
- 認証フロントエンドとして、anonymous-ftp サイトのような、「魔法の」ユーザ ID
- 'anonymous' と電子メールアドレスをパスワードにしたユーザ認証を
- 行なう機能を提供します。この電子メールアドレスはログ収集することが
- できます。
他の (データベースによる) アクセス制御方法と組み合わせることで、 - 「未登録」ユーザに対してサイトを公開しつつ、効率よくユーザ追跡したり、 - ユーザのプロファイルに応じたカスタマイズをしたりできます。 - このような認証に基づいたユーザ追跡の利点の一つは、 - マジッククッキーに基づくユーザ追跡方法や、 - 珍妙な URL の接頭辞や接尾辞を利用したユーザ追跡方法とは異なり、 - 完全にブラウザ非依存であり、ユーザ間で URL を共有することができるという - 点です。
- -mod_auth_basic
を使用している場合は、このモジュールは
- AuthBasicProvider
に
- anon
という値を設定することで起動されます。
以下の例は「普通」の htpasswd ファイルに基づいた認証と組み合わされて - おり、以下の要件を見たすユーザを「ゲスト」として許可します:
- -Anonymous_NoUserID
)Anonymous_MustGiveEmail
)Anonymous_VerifyEmail
)anonymous guest www test
- welcome
のどれかでなければなりません。
- ユーザ名の比較は大文字小文字を区別しません。Anonymous_LogEmail
)
- <Directory /foo>
-
- AuthName "Use 'anonymous' & Email address for guest entry"
- AuthType Basic
- AuthBasicProvider file anon
- AuthUserFile /path/to/your/.htpasswd
-
- Anonymous_NoUserID off
- Anonymous_MustGiveEmail on
- Anonymous_VerifyEmail on
- Anonymous_LogEmail on
- Anonymous anonymous guest www test welcome
-
- Order Deny,Allow
- Allow from all
-
- Require valid-user
-
- </Directory>
-
説明: | パスワードの検査無しでアクセスを許可する userID を指定する - |
---|---|
構文: | Anonymous user [user] ... |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Extension |
モジュール: | mod_authn_anon |
パスワードの検査をしないでアクセスを許可する「魔法の」 userID を - 設定します。userID 中に空白を使えるようにするため、 - エスケープ文字 \ による方法と、引用符 ' と " によるクオーティング - を使うことができます。
- -ユーザ名の比較は大文字小文字を区別しないことに
- 注意してください。
- 魔法のユーザ名 'anonymous
' が許可されている userID に
- 含むようにすることは強く推奨されています。
- Anonymous anonymous "Not Registered" "I don't know"
-
これは、userID "anonymous", - "AnonyMous", "Not Registered", "I Don't Know" のどれかを使っても - パスワード無しでユーザがサイトに入れるようにします。
- -Apache 2.1 では userID に "*
" を指定することができます。
- この場合、すべてのuserID を許可します。
説明: | 入力されたパスワードがエラーログにロギングされるかどうかを -設定する |
---|---|
構文: | Anonymous_LogEmail On|Off |
デフォルト: | Anonymous_LogEmail On |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Extension |
モジュール: | mod_authn_anon |
デフォルトの On
に設定された場合は、
- 入力された (まっとうな電子メールアドレスであることが
- 期待される) 「パスワード」がエラーログにロギングされます。
説明: | 空パスワードを許可するかどうかを指定する |
---|---|
構文: | Anonymous_MustGiveEmail On|Off |
デフォルト: | Anonymous_MustGiveEmail On |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Extension |
モジュール: | mod_authn_anon |
ユーザがパスワードとして電子メールアドレスを指定する必要があるかどうかを - 設定します。これは空パスワードを禁止します。
- -説明: | 空 userID を許可するかを指定する |
---|---|
構文: | Anonymous_NoUserID On|Off |
デフォルト: | Anonymous_NoUserID Off |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Extension |
モジュール: | mod_authn_anon |
On
に設定すると、ユーザは userID (とおそらくは
- パスワード欄も) 空にすることができます。これは単にリターンキーを
- 叩いたり OK ボタンを直接クリックしたりする MS-Explorer ユーザには
- 非常に便利です。そのような操作はごくごく自然なものでしょう。
説明: | パスワード欄が正しい形式の電子メールアドレスであることを -調べるかどうかを設定する |
---|---|
構文: | Anonymous_VerifyEmail On|Off |
デフォルト: | Anonymous_VerifyEmail Off |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Extension |
モジュール: | mod_authn_anon |
On
に設定されている場合、ユーザが有効な電子メール
- アドレスを入力することを推奨するため、入力された「パスワード」は
- 少なくとも一つの '@' と '.' を含んでいるかどうかを調べます
- (上の Anonymous_LogEmail
参照)。
Apache HTTP 泣若 若吾с 2.3
+茯: | 茯荐若綽荀吾 "anonymous" 若吟≪祉鴻荐怨 + |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | authn_anon_module |
純若鴻<ゃ: | mod_authn_anon.c |
篋: | Apache 2.1 篁ラ |
≪吾ャ若 mod_auth_basic
+ 茯荐若潟潟anonymous-ftp 泣ゃ薛羈若 ID
+ 'anonymous' 糸<若≪鴻鴻若若区荐若
+ 茵罘純箴障糸<若≪鴻医
+ с障
篁 (若帥若鴻) ≪祉劫九勝号腟水с + 脂蚊若吟絲障泣ゃゃゃ合若区申莊< + 若吟<ゃ綽鴻帥ゃ冴с障 + 茯荐若冴ャ若区申莊<鴻筝ゃ + 吾若冴ャ若区申莊≧号 + 絋 URL ・莨・絨乗若区申莊≧号違 + 絎狗箴絖с若狗 URL 掩с + 鴻с
+ +mod_auth_basic
篏睡翫≪吾ャ若
+ AuthBasicProvider
+ anon
ゃ荐絎ц儀障
篁ヤ箴 htpasswd <ゃ冴ャ茯荐若腟水 + 篁ヤ荀篁吟荀若吟蚊鴻荐怨障:
+ +Anonymous_NoUserID
)Anonymous_MustGiveEmail
)Anonymous_VerifyEmail
)anonymous guest www test
+ welcome
с違障
+ 若九罸莠紊ф絖絨絖阪障Anonymous_LogEmail
)
+ <Directory /foo>
+
+ AuthName "Use 'anonymous' & Email address for guest entry"
+ AuthType Basic
+ AuthBasicProvider file anon
+ AuthUserFile /path/to/your/.htpasswd
+
+ Anonymous_NoUserID off
+ Anonymous_MustGiveEmail on
+ Anonymous_VerifyEmail on
+ Anonymous_LogEmail on
+ Anonymous anonymous guest www test welcome
+
+ Order Deny,Allow
+ Allow from all
+
+ Require valid-user
+
+ </Directory>
+
茯: | 鴻若罎紫<с≪祉鴻荐怨 userID 絎 + |
---|---|
罕: | Anonymous user [user] ... |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Extension |
≪吾ャ若: | mod_authn_anon |
鴻若罎祉с≪祉鴻荐怨薛羈 userID + 荐絎障userID 筝腥榊純篏帥 + 鴻宴若絖 \ 号綣膃 ' " 若c潟 + 篏帥с障
+ +若九罸莠紊ф絖絨絖阪ャ
+ 羈
+ 薛羈若九 'anonymous
' 荐怨 userID
+ 綣激ィ絅障
+ Anonymous anonymous "Not Registered" "I don't know"
+
userID "anonymous", + "AnonyMous", "Not Registered", "I Don't Know" 篏帥c + 鴻若<с若吟泣ゃャ障
+ +Apache 2.1 с userID "*
" 絎с障
+ 翫鴻userID 荐怨障
茯: | ュ鴻若若違潟違 +荐絎 |
---|---|
罕: | Anonymous_LogEmail On|Off |
: | Anonymous_LogEmail On |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Extension |
≪吾ャ若: | mod_authn_anon |
On
荐絎翫
+ ュ (障c糸<若≪鴻с
+ 緇) 鴻若若違潟違障
茯: | 腥冴鴻若荐怨絎 |
---|---|
罕: | Anonymous_MustGiveEmail On|Off |
: | Anonymous_MustGiveEmail On |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Extension |
≪吾ャ若: | mod_authn_anon |
若吟鴻若糸<若≪鴻絎綽荀 + 荐絎障腥冴鴻若胼罩≪障
+ +茯: | 腥 userID 荐怨絎 |
---|---|
罕: | Anonymous_NoUserID On|Off |
: | Anonymous_NoUserID Off |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Extension |
≪吾ャ若: | mod_authn_anon |
On
荐絎若吟 userID (
+ 鴻若罨) 腥冴с障帥若潟若
+ OK 帥潟贋・ MS-Explorer 若吟
+ 絽吾箴水с篏吟с
茯: | 鴻若罨罩c綵√糸<若≪鴻с +茯帥鴻荐絎 |
---|---|
罕: | Anonymous_VerifyEmail On|Off |
: | Anonymous_VerifyEmail Off |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Extension |
≪吾ャ若: | mod_authn_anon |
On
荐絎翫若吟鴻糸<若
+ ≪鴻ュィ絅ュ鴻若
+ 絨筝ゃ '@' '.' с茯帥鴻障
+ (筝 Anonymous_LogEmail
)
Apache HTTP サーバ バージョン 2.3
-説明: | DBM ファイルを用いたユーザ認証 |
---|---|
ステータス: | Extension |
モジュール識別子: | authn_dbm_module |
ソースファイル: | mod_authn_dbm.c |
互換性: | Apache 2.1 以降 |
本モジュールは mod_auth_digest
や
- mod_auth_basic
といった認証フロントエンドに対して、
- dbm パスワードファイル内からのユーザ検索による
- ユーザ認証機能を提供します。似たような機能は mod_authn_file
- でも提供されています。
mod_auth_basic
や mod_auth_digest
- を使用する際には、このモジュールは
- AuthBasicProvider
や
- AuthDigestPrivider
- で dbm
と指定することで起動されます。
AuthName
AuthType
AuthBasicProvider
-AuthDigestProvider
-説明: | パスワードを保存するために必要なデータベースファイルの種類を -設定する |
---|---|
構文: | AuthDBMType default|SDBM|GDBM|NDBM|DB |
デフォルト: | AuthDBMType default |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Extension |
モジュール: | mod_authn_dbm |
パスワードを保存するために使用するデータベースファイルの種類を - 設定します。デフォルトのデータベースの種類はコンパイル時に決まります。 - 他の種類のデータベースが使用可能かどうかも コンパイル時の設定に依存します。
- -パスワードファイルを作成するのに使用するプログラムが同じ種類のデータベースを - 使用するように設定することは非常に重要です。
- -説明: | 認証用のユーザとパスワードのリストを保持している -データベースファイル名を設定する |
---|---|
構文: | AuthDBMUserFile file-path |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Extension |
モジュール: | mod_authn_dbm |
AuthDBMUserFile
ディレクティブは
- 認証用のユーザとパスワードのリストを保持している DBM ファイルの
- 名前を設定します。File-path はユーザファイルへの
- 絶対パスです。
ユーザファイルのキーはユーザ名です。ユーザに対して返される値は - 暗号化されたパスワードで、その後に、コロンに続いて任意のデータが - 続いていることもあります。コロンとその後のデータはサーバは - 無視します。
- -AuthDBMUserFile
は、
- ウェブサーバのドキュメントツリーの外側に保管するようにしてください。
- 保護しようとしているディレクトリ以下には
- 置かないで下さい。
- そうしないとクライアントが AuthUserFile
を
- ダウンロードできてしまいます。
重要な互換性に関する注意: apache module の dbmopen
の実装は
- 文字列が NULL で終わっていることに依存するのではなく、DBM データストラクチャ
- のハッシュ値の文字列の長さを読み取ります。Netscape ウェブサーバなど、
- アプリケーションの中には文字列が NULL で終わっていることに依存している
- ものがあります。ですから、異なるアプリケーション間での DBM ファイルの
- 使用に問題がある場合は、これが原因になっている可能性があります。
Apache には dbmmanage
という
- perl スクリプトが含まれています。このプログラムを使ってこの
- モジュールが使用する DBM フォーマットのパスワードファイルを作成したり
- 更新したりすることができます。
Apache HTTP 泣若 若吾с 2.3
+茯: | DBM <ゃ若区荐 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | authn_dbm_module |
純若鴻<ゃ: | mod_authn_dbm.c |
篋: | Apache 2.1 篁ラ |
≪吾ャ若 mod_auth_digest
+ mod_auth_basic
c茯荐若潟潟絲障
+ dbm 鴻若<ゃ若倶膣≪
+ 若区荐惹純箴障篌若罘純 mod_authn_file
+ с箴障
mod_auth_basic
mod_auth_digest
+ 篏睡≪吾ャ若
+ AuthBasicProvider
+ AuthDigestPrivider
+ dbm
絎ц儀障
AuthName
AuthType
AuthBasicProvider
+AuthDigestProvider
+茯: | 鴻若篆絖綽荀若帥若鴻<ゃ腮蕁 +荐絎 |
---|---|
罕: | AuthDBMType default|SDBM|GDBM|NDBM|DB |
: | AuthDBMType default |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Extension |
≪吾ャ若: | mod_authn_dbm |
鴻若篆絖篏睡若帥若鴻<ゃ腮蕁 + 荐絎障若帥若鴻腮蕁潟潟ゃ羆冴障障 + 篁腮蕁若帥若鴻篏睡純 潟潟ゃ荐絎箴絖障
+ +鴻若<ゃ篏篏睡違腮蕁若帥若鴻 + 篏睡荐絎絽吾荀с
+ +茯: | 茯荐主若吟鴻若鴻篆 +若帥若鴻<ゃ荐絎 |
---|---|
罕: | AuthDBMUserFile file-path |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Extension |
≪吾ャ若: | mod_authn_dbm |
AuthDBMUserFile
cc
+ 茯荐主若吟鴻若鴻篆 DBM <ゃ
+ 荐絎障File-path 若吟<ゃ吾
+ 腟九障鴻с
若吟<ゃ若若九с若吟絲障菴ゃ + 垸鴻若с緇潟潟膓篁紙若帥 + 膓障潟潟緇若帥泣若 + ∴障
+ +AuthDBMUserFile
+ с泣若ャ<潟若紊眼篆膊<
+ 篆茘激c篁ヤ
+ 臀т
+ ゃ≪潟 AuthUserFile
+ 潟若с障障
荀篋с≪羈: apache module dbmopen
絎茖
+ 絖 NULL хc箴絖сDBM 若帥鴻
+ 激ュゃ絖激茯水障Netscape с泣若
+ ≪宴若激с潟筝絖 NULL хc箴絖
+ 障с違≪宴若激с渇с DBM <ゃ
+ 篏睡馹翫c醇с障
Apache dbmmanage
+ perl 鴻障障違篏帥c
+ ≪吾ャ若篏睡 DBM 若鴻若<ゃ篏
+ 贋違с障
Apache HTTP サーバ バージョン 2.3
-説明: | 認証フォールバックモジュール |
---|---|
ステータス: | Base |
モジュール識別子: | authn_default_module |
ソースファイル: | mod_authn_default.c |
互換性: | Apache 2.1 以降 |
mod_auth_basic
のような認証モジュールを
- 設定しなかった場合は、本モジュールがフォールバックとなります。
- ユーザから提示されたどんな証書も単に拒否します。
説明: | 次の低次レベルの認証モジュールに制御を渡すかどうかを -設定します |
---|---|
構文: | AuthDefaultAuthoritative On|Off |
デフォルト: | AuthDefaultAuthoritative On |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Base |
モジュール: | mod_authn_default |
AuthDefaultAuthoritative
ディレクティブを
- 明示的に Off
に設定すると、
- 認証を次の (modules.c
ファイルで定義されている)
- 低次レベルのモジュールに渡します。
-
mod_authn_default
自体がとても低い
- レベルとして定義されていますので、通常はこれよりも低次の
- モジュールは存在しません。ですから
- AuthDefaultAuthoritative
はデフォルト
- (On
) のままにしたほうが良いでしょう。
Apache HTTP 泣若 若吾с 2.3
+茯: | 茯荐若若≪吾ャ若 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | authn_default_module |
純若鴻<ゃ: | mod_authn_default.c |
篋: | Apache 2.1 篁ラ |
mod_auth_basic
茯荐若≪吾ャ若
+ 荐絎c翫≪吾ャ若若障
+ 若吟腓冴荐惹吾障
茯: | 罨<篏罨<茯荐若≪吾ャ若九勝羝< +荐絎障 |
---|---|
罕: | AuthDefaultAuthoritative On|Off |
: | AuthDefaultAuthoritative On |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Base |
≪吾ャ若: | mod_authn_default |
AuthDefaultAuthoritative
cc
+ 腓榊 Off
荐絎
+ 茯荐若罨< (modules.c
<ゃу臂)
+ 篏罨<≪吾ャ若羝<障
+
mod_authn_default
篏篏
+ 絎臂障с絽吾篏罨<
+ ≪吾ャ若絖障с
+ AuthDefaultAuthoritative
+ (On
) 障障祉с
Apache HTTP サーバ バージョン 2.3
-説明: | テキストファイルを用いたユーザ認証 |
---|---|
ステータス: | Base |
モジュール識別子: | authn_file_module |
ソースファイル: | mod_authn_file.c |
互換性: | Apache 2.1 以降 |
本モジュールは mod_auth_digest
や
- mod_auth_basic
といった認証フロントエンドに対して、
- プレインテキストのパスワードファイル内からユーザを検索することで、
- ユーザ認証機能を提供します。似たような機能は mod_authn_dbm
- でも提供されています。
mod_auth_basic
や mod_auth_digest
- を使用する際には、
- AuthBasicProvider
や
- AuthDigestPrivider
- で file
と指定することでこのモジュールは起動されます。
AuthBasicProvider
-AuthDigestProvider
-htpasswd
htdigest
説明: | 認証に使用するユーザとパスワードの一覧が格納されている、 -テキストファイルの名前を設定する |
---|---|
構文: | AuthUserFile file-path |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Base |
モジュール: | mod_authn_file |
AuthUserFile
ディレクティブは、
- ユーザ認証のためのユーザとパスワードの一覧を格納した
- テキストファイルの名前を設定します。file-path
- はユーザファイルへのパスです。
- もし絶対パスでなければ、
- ServerRoot
- からの相対パスとして扱われます。
ユーザファイルの各行には、ユーザ名、コロン、
- 暗号化したパスワードを記述します。
- 同一ユーザ ID が複数回登録された時は、
- mod_authn_file
- は最初に見つかったパスワードを使用して認証します。
バイナリ配布の一部としてインストールされるか、
- あるいは src/support
にある
- htpasswd
- ユーティリティで、この HTTP 基本認証
- 用パスワードファイルをメインテナンスします。
- 詳細は man
- ページをご覧頂くとして、簡単には:
初期 ID username
で、Filename
- というパスワードファイルを生成します。
- 次のコマンドを発行するとパスワードが要求されます:
- htpasswd -c Filename username
-
パスワードファイル Filename
に、username2
- を追加したり修正したりします:
- htpasswd Filename username2
-
(訳注: 非常に多くのユーザを登録すると大きなファイルになりますが)
- 大きなテキストファイルを検索するのは非常に効率が悪い
- ということに注意してください。そのような必要のある時は、
- AuthDBMUserFile
- を代わりに使ってください。
HTTP ダイジェスト認証を使用する場合は、
- htpasswd
- プログラムでは不十分です。その代わりに
- htdigest
- を使用してください。ダイジェスト認証用のデータと
- 基本認証用のデータを同一ファイルに混ぜて保存できない、
- ということに注意してください。
AuthUserFile
- は、ウェブサーバのドキュメントツリーの外側に保管するようにしてください。
- 保護しようとしているディレクトリ以下には、置かないで下さい。
- そうしないと AuthUserFile
は
- ダウンロードできてしまいます。
Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻<ゃ若区荐 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | authn_file_module |
純若鴻<ゃ: | mod_authn_file.c |
篋: | Apache 2.1 篁ラ |
≪吾ャ若 mod_auth_digest
+ mod_auth_basic
c茯荐若潟潟絲障
+ ゃ潟鴻鴻若<ゃ若吟罎膣≪с
+ 若区荐惹純箴障篌若罘純 mod_authn_dbm
+ с箴障
mod_auth_basic
mod_auth_digest
+ 篏睡
+ AuthBasicProvider
+ AuthDigestPrivider
+ file
絎с≪吾ャ若莎桁障
茯: | 茯荐若篏睡若吟鴻若筝荀с主 +鴻<ゃ荐絎 |
---|---|
罕: | AuthUserFile file-path |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Base |
≪吾ャ若: | mod_authn_file |
AuthUserFile
cc
+ 若区荐若若吟鴻若筝荀с主
+ 鴻<ゃ荐絎障file-path
+ 若吟<ゃ吾鴻с
+ 腟九障鴻с違
+ ServerRoot
+ 後障鴻宴障
若吟<ゃ茵若九潟潟
+ 垸鴻若荐菴違障
+ 筝若 ID 茲医脂蚊
+ mod_authn_file
+ 荀ゃc鴻若篏睡茯荐若障
ゃ絽筝ゃ潟鴻若
+ src/support
+ htpasswd
+ 若ccс HTTP 堺茯荐
+ 鴻若<ゃ<ゃ潟潟鴻障
+ 荅括完 man
+ 若荀ч膂≦:
ID username
сFilename
+ 鴻若<ゃ障
+ 罨<潟潟肴鴻若荀羆障:
+ htpasswd -c Filename username
+
鴻若<ゃ Filename
username2
+ 菴遵篆罩c障:
+ htpasswd Filename username2
+
(荐恰絵: 絽吾紊若吟脂蚊紊с<ゃ障)
+ 紊с鴻<ゃ罎膣≪絽吾合
+ 羈綽荀
+ AuthDBMUserFile
+ 篁c篏帥c
HTTP ゃ吾с鴻茯荐篏睡翫
+ htpasswd
+ 違с筝с篁c
+ htdigest
+ 篏睡ゃ吾с鴻茯荐主若帥
+ 堺茯荐主若帥筝<ゃ羞激篆絖с
+ 羈
AuthUserFile
+ с泣若ャ<潟若紊眼篆膊<
+ 篆茘激c篁ヤ臀т
+ AuthUserFile
+ 潟若с障障
Apache HTTP サーバ バージョン 2.3
-説明: | 承認フォールバックモジュール |
---|---|
ステータス: | Base |
モジュール識別子: | authz_default_module |
ソースファイル: | mod_authz_default.c |
互換性: | Apache 2.1 以降 |
このモジュールは mod_authz_user
や
- mod_authz_groupfile
といった承認モジュールを
- 設定しなかった場合のフォールバックモジュールとして設計されています。
- どのような承認リクエストも単に拒否します。
説明: | 承認が低位のモジュールに渡されるかどうかを設定する |
---|---|
構文: | AuthzDefaultAuthoritative On|Off |
デフォルト: | AuthzDefaultAuthoritative On |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Base |
モジュール: | mod_authz_default |
AuthzDefaultAuthoritative
ディレクティブを
- 明示的に Off
に設定すると
- 認証を次の (modules.c
ファイルで定義されている)
- 低位のモジュールに渡すことを許可します。
mod_authz_default
自体がとても低い
- レベルとして定義されていますので、通常はこれよりも低次の
- モジュールは存在しません。ですから
- AuthDefaultAuthoritative
はデフォルト
- (On
) のままにしたほうが良いでしょう。
Apache HTTP 泣若 若吾с 2.3
+茯: | 粋若≪吾ャ若 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | authz_default_module |
純若鴻<ゃ: | mod_authz_default.c |
篋: | Apache 2.1 篁ラ |
≪吾ャ若 mod_authz_user
+ mod_authz_groupfile
c粋≪吾ャ若
+ 荐絎c翫若≪吾ャ若荐荐障
+ 粋鴻障
茯: | 粋篏篏≪吾ャ若羝<荐絎 |
---|---|
罕: | AuthzDefaultAuthoritative On|Off |
: | AuthzDefaultAuthoritative On |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Base |
≪吾ャ若: | mod_authz_default |
AuthzDefaultAuthoritative
cc
+ 腓榊 Off
荐絎
+ 茯荐若罨< (modules.c
<ゃу臂)
+ 篏篏≪吾ャ若羝<荐怨障
mod_authz_default
篏篏
+ 絎臂障с絽吾篏罨<
+ ≪吾ャ若絖障с
+ AuthDefaultAuthoritative
+ (On
) 障障祉с
Apache HTTP サーバ バージョン 2.3
-説明: | プレーンテキストファイルを用いたグループ承認 |
---|---|
ステータス: | Base |
モジュール識別子: | authz_groupfile_module |
ソースファイル: | mod_authz_groupfile.c |
互換性: | Apache 2.1 以降 |
このモジュールは認証されたユーザがグループのメンバーか
- 否かによってウェブサイトの一部へのアクセスを許可するか拒否するかの
- 承認機能を提供します。同様の機能は mod_authz_dbm
- によっても提供されています。
説明: | 証認に使用するユーザグループの一覧が格納されている、 -テキストファイルの名前を設定する |
---|---|
構文: | AuthGroupFile file-path |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Base |
モジュール: | mod_authz_groupfile |
AuthGroupFile
ディレクティブは、
- 証認に使用するユーザグループの一覧が格納されている、
- テキストファイルの名前を設定します。
- file-path はグループファイルへのパスです。
- 絶対パスでなければ、
- ServerRoot
- からの相対パスとして扱われます。
グループファイル各行は、グループ名、コロン、そして - スペース区切りでそのメンバーのユーザ名を記述します。
- -
- mygroup: bob joe anne
-
大きなファイルを探索するのは、非常に効率が悪いという点に
- 注意してください。そのような場合は、
- AuthDBMGroupFile
- の方がずっと良い性能を発揮します。
AuthGroupFile
は、
- ウェブサーバのドキュメントツリーの外側に
- 保管するようにしてください。
- 保護しようとしているディレクトリ以下には、置かないで下さい。
- そうしないとクライアントが AuthGroupFile
を
- ダウンロードできてしまう可能性があります。
説明: | 承認が下位のモジュールに渡されるかどうかを設定する |
---|---|
構文: | AuthzGroupFileAuthoritative On|Off |
デフォルト: | AuthzGroupFileAuthoritative On |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Base |
モジュール: | mod_authz_groupfile |
AuthzGroupFileAuthoritative
ディレクティブを
- 明示的に Off
に設定すると userID に対応する
- グループがない場合に、
- (module.c
で定義されている) 下位のモジュールにグループ承認を
- 渡すことを許可します。
デフォルトでは制御は渡されず、未知のグループの場合は Authentication - Required 応答が返されます。ですから、これを設定しないと - システムを安全に保つことができ、NCSA 互換の振る舞いをさせることになります。
- -ユーザの .htaccess
ファイルで他の承認手段への
- 委譲ができるようにすることの意味するところは十分に考慮しておいてください。
- そしてそれが、本当に望む挙動であることを確かめてください。
- 通常は一つの .htpasswd
ファイルを安全にする方が
- より多くのアクセスインタフェースを持つかもしれないデータベースを
- 安全にするよりも簡単です。
Apache HTTP 泣若 若吾с 2.3
+茯: | 若潟鴻<ゃ違若粋 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | authz_groupfile_module |
純若鴻<ゃ: | mod_authz_groupfile.c |
篋: | Apache 2.1 篁ラ |
≪吾ャ若茯荐若若吟違若<潟若
+ cс泣ゃ筝吾≪祉鴻荐怨
+ 粋罘純箴障罕罘純 mod_authz_dbm
+ c箴障
茯: | 荐取篏睡若吟違若筝荀с主 +鴻<ゃ荐絎 |
---|---|
罕: | AuthGroupFile file-path |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Base |
≪吾ャ若: | mod_authz_groupfile |
AuthGroupFile
cc
+ 荐取篏睡若吟違若筝荀с主
+ 鴻<ゃ荐絎障
+ file-path 違若<ゃ吾鴻с
+ 腟九障鴻с違
+ ServerRoot
+ 後障鴻宴障
違若<ゃ茵違若潟潟 + 鴻若劫阪с<潟若若九荐菴違障
+ +
+ mygroup: bob joe anne
+
紊с<ゃ「膣≪絽吾合鴻
+ 羈翫
+ AuthDBMGroupFile
+ 鴻cц純堺障
AuthGroupFile
+ с泣若ャ<潟若紊眼
+ 篆膊<
+ 篆茘激c篁ヤ臀т
+ ゃ≪潟 AuthGroupFile
+ 潟若с障醇с障
茯: | 粋筝篏≪吾ャ若羝<荐絎 |
---|---|
罕: | AuthzGroupFileAuthoritative On|Off |
: | AuthzGroupFileAuthoritative On |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Base |
≪吾ャ若: | mod_authz_groupfile |
AuthzGroupFileAuthoritative
cc
+ 腓榊 Off
荐絎 userID 絲上
+ 違若翫
+ (module.c
у臂) 筝篏≪吾ャ若違若粋
+ 羝<荐怨障
с九勝羝<ャ違若翫 Authentication + Required 綽膈菴障с荐絎 + 激鴻絎篆ゃсNCSA 篋障
+ +若吟 .htaccess
<ゃт粋罧泣吾
+ 紮茘蚊с潟
+ 綵с腆冴
+ 絽吾筝ゃ .htpasswd
<ゃ絎鴻
+ 紊≪祉鴻ゃ潟帥с若鴻ゃ若帥若鴻
+ 絎膂≦с
Apache HTTP サーバ バージョン 2.3
-説明: | ホスト (名前もしくは IP アドレス) に基づいたグループ承認 |
---|---|
ステータス: | Base |
モジュール識別子: | authz_host_module |
ソースファイル: | mod_authz_host.c |
互換性: | Apache 2.1 以降 |
mod_authz_host
により提供されるディレクティブは
- サーバの特定の部分への
- アクセスを制御するために <Directory>
, <Files>
, <Location>
- と .htaccess
ファイルで使用されます。クライアントのホスト名、IP
- アドレスや 環境変数として取得された、その他のリクエストの特徴に基づいて
- アクセス制御を行なうことができます。Allow
と
- Deny
ディレクティブは
- どのようなクライアントにアクセスを
- 許可する、しないかを指定するために使用されます。一方、
- Order
ディレクティブは
- デフォルトのアクセス状態と、
- Allow
ディレクティブと
- Deny
- ディレクティブとのお互いへの影響の仕方を設定します。
-
ホストによるアクセス制限とパスワードによる認証を同時に
- 行なうことが可能です。その場合、その二つの制限の関係を指定するために
- Satisfy
- ディレクティブを使用します。
一般的には、アクセス制限ディレクティブはすべてのアクセスメソッド
- (GET
, PUT
, POST
など)
- に適用されます。そして、ほとんどの場合これが望ましい動作です。
- しかし、<Limit>
- セクションの中にディレクティブを書くことで、
- 一部のメソッドにのみ制限をかけることもできます。
説明: | サーバのある領域にアクセスできるホストを制御する |
---|---|
構文: | Allow from all|host|env=env-variable
-[host|env=env-variable] ... |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | Limit |
ステータス: | Base |
モジュール: | mod_authz_host |
Allow
ディレクティブはどのホストが
- サーバのある領域をアクセスできるかに影響を与えます。
- アクセスはホスト名、IP アドレス、IP アドレスの範囲や、
- 環境変数として取得された、その他のクライアントのリクエストの
- 特徴によって制御することができます。
このディレクティブの最初の引数は常に from
です。
- それに続く引数は三つの違った形式があります。Allow from
- all
が指定されていれば、すべてのホストにアクセスを許可し、
- アクセス制限は下で説明されているように、
- Deny
- ディレクティブと Order
- ディレクティブの設定で決まります。
- 特定のホストやホスト群にのみサーバへのアクセスを許可するためには、
- 以下のどれかの形式で host を指定することができます:
- Allow from apache.org
- Allow from .net example.edu
-
この文字列に合うか、これで終わる名前のホストのアクセスが許可されます。
- 各部分が完全に合うものだけに適用されますので、上の例は
- foo.apache.org
にはマッチしますが、
- fooapache.org
にはマッチしません。
- この設定をすると、Apache は
- HostnameLookups
- の設定に関わらず、クライアントの IP アドレスに対して
- DNS の 2 重逆引きを行ないます。
- ホスト名からオリジナルの IP アドレスを順引きします。
- 順引きと逆引きが一致し、ホスト名が該当した場合にのみ、
- アクセスが許可されます。
- Allow from 10.1.2.3
- Allow from 192.168.1.104 192.168.1.205
-
アクセスを許可する IP アドレスです。
- Allow from 10.1
- Allow from 10 172.20 192.168.2
-
サブネットの制限用の、IP - アドレスの最初の一つから三つまでのバイトです。
- Allow from 10.1.0.0/255.255.0.0
-
ネットワーク a.b.c.d とネットマスク w.x.y.z です。 - より細粒度のサブネット制限用です。
- Allow from 10.1.0.0/16
-
ネットマスクが nnn の上位ビットが 1 - となっているものからなること以外は前のものと同じです。
注: 最後の三つの例はまったく同じホストに合います。
- - -IPv6 アドレスと IPv6 のサブネットは以下のように指定できます:
- -
- Allow from 2001:db8::a00:20ff:fea7:ccea
- Allow from 2001:db8::a00:20ff:fea7:ccea/10
-
Allow
ディレクティブの引数の三つ目の形式は、
- 環境変数
- の存在によりアクセスの制御を行なえるようにするものです。
- Allow from env=env-variable
- が指定されていると、環境変数 env-variable
- が存在した場合にリクエストはアクセスを許可されます。サーバは
- mod_setenvif
- のディレクティブにより、クライアントのリクエスト
- の特徴に基づいて柔軟に環境変数を設定する機能を提供します。
- ですから、このディレクティブはクライアントの
- User-Agent
(ブラウザの種類)、Referer
- や他の HTTP リクエストのヘッダフィールドなどに基づいて
- アクセス許可をするために使うことができます。
-
- SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
- <Directory /docroot>
-
- Order Deny,Allow
- Deny from all
- Allow from env=let_me_in
-
- </Directory>
-
この場合、user-agent の文字列が KnockKnock/2.0
- で始まるブラウザのみがアクセスを許可され、
- 他のものはアクセスを拒否されます。
説明: | サーバがアクセスを拒否するホストを制御する |
---|---|
構文: | Deny from all|host|env=env-variable
-[host|env=env-variable] ... |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | Limit |
ステータス: | Base |
モジュール: | mod_authz_host |
このディレクティブはホスト名、IP
- アドレス、環境変数に基づいてサーバへのアクセスを制限します。
- Deny
ディレクティブの引数は Allow
- ディレクティブとまったく同じです。
説明: | デフォルトのアクセス可能な状態と、Allow と
-Deny が評価される順番を制御する |
---|---|
構文: | Order ordering |
デフォルト: | Order Deny,Allow |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | Limit |
ステータス: | Base |
モジュール: | mod_authz_host |
Order
ディレクティブはデフォルトのアクセスの状態と
- Allow
ディレクティブと
- Deny
- ディレクティブが評価される順番を制御します。
- Ordering は以下のどれかです。
Deny,Allow
Deny
ディレクティブが
- Allow
- ディレクティブの前に評価されます。
- アクセスはデフォルトで許可されます。Deny
- ディレクティブに合わないか、Allow
- ディレクティブに合うクライアントはアクセスを許可されます。Allow,Deny
Allow
- ディレクティブが Deny
- ディレクティブの前に評価されます。
- アクセスはデフォルトで拒否されます。Allow
- ディレクティブに合わないか、Deny
- ディレクティブに合うクライアントはアクセスを拒否されます。
- Mutual-failure
Allow
のリストに現れて、
- Deny
- のリストに現れないホストのみがアクセスを許可されます。
- この順番付けは Order Allow,Deny
と同じ効果を持ち、
- その設定の方が好ましいために非推奨となっています。キーワードはコンマで分離することだけが可能です。
- 間に空白があってはいけません。どの場合でも、Allow
と
- Deny
文は
- 全て評価されるということに注意してください。
-
以下の例では、apache.org - ドメインのすべてのホストはアクセスを許可されます。 - 他のすべてのホストはアクセスを拒否されます。
- -
- Order Deny,Allow
- Deny from all
- Allow from apache.org
-
次の例では、foo.apache.org サブドメインにあるホスト以外の、 - apache.org ドメインのすべてのホストがアクセスを許可されます。 - apache.org - ドメインでないホストは、デフォルトの状態がアクセス拒否のため、 - サーバへのアクセスを拒否されます。
- -
- Order Allow,Deny
- Allow from apache.org
- Deny from foo.apache.org
-
一方、上の例の Order
が Deny,Allow
- に変わっていれば、すべのホストにアクセスが許可されます。
- これは、設定ファイル中の実際の順番に関わらず、
- Allow from apache.org
が最後に評価されて、
- Deny from foo.apache.org
を上書きするからです。
- apache.org
- ドメインにないホストも、デフォルトの状態が allow
- に変化するために、アクセスを許可されます。
-
Order
- ディレクティブはデフォルトのアクセスの状態に影響を与えるので、
- Allow
ディレクティブと
- Deny
- ディレクティブが無くても、サーバのアクセスに影響を与えることができます。
- たとえば、
- <Directory /www>
-
- Order Allow,Deny
-
- </Directory>
-
はデフォルトのアクセス状態が deny になるため、
- /www
ディレクトリへのすべてのアクセスを拒否します。
-
Order
- ディレクティブはサーバの設定処理の各段階でだけ
- アクセスディレクティブの処理の順番を変更します。これは、たとえば、
- Order
ディレクティブの設定に関わらず、
- <Location>
セクションの
- Allow
ディレクティブや
- Deny
ディレクティブは、
- Directory
セクションや
- .htaccess
ファイルの Allow
- ディレクティブや Deny
- ディレクティブよりも常に後に評価されるということを意味します。
- 設定セクションのマージの詳細については、
- Directory,Location, Files
- セクションの動作方法 を参照してください。
Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻 ( IP ≪) 冴ャ違若粋 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | authz_host_module |
純若鴻<ゃ: | mod_authz_host.c |
篋: | Apache 2.1 篁ラ |
mod_authz_host
箴cc
+ 泣若劫吾
+ ≪祉鴻九勝 <Directory>
, <Files>
, <Location>
+ .htaccess
<ゃт戎障ゃ≪潟鴻IP
+ ≪鴻 医紊緇篁鴻劫彰冴ャ
+ ≪祉劫九勝茵с障Allow
+ Deny
cc
+ ゃ≪潟≪祉鴻
+ 荐怨絎篏睡障筝鴻
+ Order
cc
+ ≪祉合倶
+ Allow
cc
+ Deny
+ cc篋吾綵演帥篁鴻荐絎障
+
鴻≪祉劫狗鴻若茯荐若
+ 茵純с翫篋ゃ狗≫絎
+ Satisfy
+ cc篏睡障
筝≪祉劫狗cc鴻≪祉鴻<純
+ (GET
, PUT
, POST
)
+ 障祉翫障篏с
+ <Limit>
+ 祉激с潟筝cc吾с
+ 筝<純水狗с障
茯: | 泣若≪祉鴻с鴻九勝 |
---|---|
罕: | Allow from all|host|env=env-variable
+[host|env=env-variable] ... |
潟潟鴻: | c, .htaccess |
筝吾: | Limit |
鴻若帥: | Base |
≪吾ャ若: | mod_authz_host |
Allow
cc鴻
+ 泣若≪祉鴻с綵演帥筝障
+ ≪祉鴻鴻IP ≪鴻IP ≪鴻膀蚊
+ 医紊違緇篁ゃ≪潟鴻
+ 劫彰c九勝с障
cc綣違絽吾 from
с
+ 膓鏁違筝ゃc綵√障Allow from
+ all
絎違鴻鴻≪祉鴻荐怨
+ ≪祉劫狗筝ц
+ Deny
+ cc Order
+ cc荐絎ф浦障障
+ 劫鴻鴻臂ゃ帥泣若吾≪祉鴻荐怨
+ 篁ヤ綵√ host 絎с障:
+ Allow from apache.org
+ Allow from .net example.edu
+
絖х鴻≪祉鴻荐怨障
+ 絎障с筝箴
+ foo.apache.org
障
+ fooapache.org
障
+ 荐絎Apache
+ HostnameLookups
+ 荐絎≪ゃ≪潟 IP ≪鴻絲障
+ DNS 2 綣茵障
+ 鴻吾 IP ≪鴻綣障
+ 綣綣筝眼鴻荅峨翫帥
+ ≪祉鴻荐怨障
+ Allow from 10.1.2.3
+ Allow from 192.168.1.104 192.168.1.205
+
≪祉鴻荐怨 IP ≪鴻с
+ Allow from 10.1
+ Allow from 10 172.20 192.168.2
+
泣狗IP + ≪鴻筝ゃ筝ゃ障сゃс
+ Allow from 10.1.0.0/255.255.0.0
+
若 a.b.c.d 鴻 w.x.y.z с + 膣亥綺泣狗с
+ Allow from 10.1.0.0/16
+
鴻 nnn 筝篏 1 + c篁ュс
羈: 緇筝ゃ箴障c鴻障
+ + +IPv6 ≪鴻 IPv6 泣篁ヤ絎с障:
+ +
+ Allow from 2001:db8::a00:20ff:fea7:ccea
+ Allow from 2001:db8::a00:20ff:fea7:ccea/10
+
Allow
cc綣違筝ょ綵√
+ 医紊
+ 絖≪祉鴻九勝茵с
+ Allow from env=env-variable
+ 絎医紊 env-variable
+ 絖翫鴻≪祉鴻荐怨障泣若
+ mod_setenvif
+ ccゃ≪潟鴻
+ 劫彰冴ャ荵医紊違荐絎罘純箴障
+ сccゃ≪潟
+ User-Agent
(吟腮蕁)Referer
+ 篁 HTTP 鴻c若冴ャ
+ ≪祉壕┗篏帥с障
+
+ SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
+ <Directory /docroot>
+
+ Order Deny,Allow
+ Deny from all
+ Allow from env=let_me_in
+
+ </Directory>
+
翫user-agent 絖 KnockKnock/2.0
+ у障吟帥≪祉鴻荐怨
+ 篁≪祉鴻障
茯: | 泣若≪祉鴻鴻九勝 |
---|---|
罕: | Deny from all|host|env=env-variable
+[host|env=env-variable] ... |
潟潟鴻: | c, .htaccess |
筝吾: | Limit |
鴻若帥: | Base |
≪吾ャ若: | mod_authz_host |
cc鴻IP
+ ≪鴻医紊違冴ャ泣若吾≪祉鴻狗障
+ Deny
cc綣違 Allow
+ cc障cс
茯: | ≪祉劫純倶Allow
+Deny 荅箴<九勝 |
---|---|
罕: | Order ordering |
: | Order Deny,Allow |
潟潟鴻: | c, .htaccess |
筝吾: | Limit |
鴻若帥: | Base |
≪吾ャ若: | mod_authz_host |
Order
cc≪祉鴻倶
+ Allow
cc
+ Deny
+ cc荅箴<九勝障
+ Ordering 篁ヤс
Deny,Allow
Deny
cc
+ Allow
+ cc荅箴<障
+ ≪祉鴻ц┗障Deny
+ ccAllow
+ ccゃ≪潟≪祉鴻荐怨障Allow,Deny
Allow
+ cc Deny
+ cc荅箴<障
+ ≪祉鴻ф障Allow
+ ccDeny
+ ccゃ≪潟≪祉鴻障
+ Mutual-failure
Allow
鴻憗
+ Deny
+ 鴻憗鴻帥≪祉鴻荐怨障
+ 篁 Order Allow,Deny
号<
+ 荐絎鴻絅純障ィ絅c障若若潟潟у≪純с
+ 腥榊純c障翫сAllow
+ Deny
+ 荅箴<羈
+
篁ヤ箴сapache.org + <ゃ潟鴻鴻≪祉鴻荐怨障 + 篁鴻鴻≪祉鴻障
+ +
+ Order Deny,Allow
+ Deny from all
+ Allow from apache.org
+
罨<箴сfoo.apache.org 泣<ゃ潟鴻篁ュ + apache.org <ゃ潟鴻鴻≪祉鴻荐怨障 + apache.org + <ゃ潟с鴻倶≪祉号 + 泣若吾≪祉鴻障
+ +
+ Order Allow,Deny
+ Allow from apache.org
+ Deny from foo.apache.org
+
筝鴻筝箴 Order
Deny,Allow
+ 紊c違鴻鴻≪祉鴻荐怨障
+ 荐絎<ゃ筝絎≪
+ Allow from apache.org
緇荅箴<
+ Deny from foo.apache.org
筝吾с
+ apache.org
+ <ゃ潟鴻倶 allow
+ 紊≪祉鴻荐怨障
+
Order
+ cc≪祉鴻倶綵演帥筝с
+ Allow
cc
+ Deny
+ cc<泣若≪祉鴻綵演帥筝с障
+ 違
+ <Directory /www>
+
+ Order Allow,Deny
+
+ </Directory>
+
≪祉合倶 deny
+ /www
c吾鴻≪祉鴻障
+
Order
+ cc泣若荐絎罧級с
+ ≪祉鴻cc紊眼障違
+ Order
cc荐絎≪
+ <Location>
祉激с潟
+ Allow
cc
+ Deny
cc
+ Directory
祉激с潟
+ .htaccess
<ゃ Allow
+ cc Deny
+ cc絽吾緇荅箴<潟障
+ 荐絎祉激с潟若吾荅括完ゃ
+ Directory,Location, Files
+ 祉激с潟篏号 с
Apache HTTP サーバ バージョン 2.3
-説明: | ファイルの所有者に基づいた承認 |
---|---|
ステータス: | Extension |
モジュール識別子: | authz_owner_module |
ソースファイル: | mod_authz_owner.c |
互換性: | Apache 2.1 以降で使用可能 |
このモジュールはリクエストされたファイルのファイルシステムの
- 所有者やグループを HTTP 認証に使われたユーザ ID (ウェブユーザ ID) と
- 比較することでアクセスを承認します。提供されたユーザ名とパスワードは
- mod_auth_basic
や
- mod_auth_digest
のような認証モジュールで既に
- 適切に検証されている必要があります。mod_authz_owner
- は以下のように、Require
ディレクティブの file-owner
と
- file-group
という二つの引数を認識します:
file-owner
jones
により所有されている
- と言ったときは、ウェブからのアクセスに使われるユーザ名も
- jones
でなければなりません。file-group
mod_authz_groupfile
や mod_authz_dbm
- により提供されるグループデータベースに存在していて、
- ウェブユーザ名がそのグループに属していなければなりません。
- 例えば、オペレーティングシステムがファイルは (システムの) グループ
- accounts
により所有されていると言ったときは、
- accounts
がグループデータベースに存在して、
- リクエストに使用されたウェブユーザ名がそのグループに属している
- 必要があります。ファイルシステムに実際には存在しないリソース
- (つまり バーチャルなリソース) の承認に
- mod_authz_owner
が使用されたときは、
- アクセスは拒否されます。
特に、コンテント - ネゴシエーションされた"MultiViews" のリソースは - 決して承認しません。
-複数ユーザのシステムで Apache ウェブサーバが実行されていて、
- ~/public_html/private
に各ユーザがファイルを置いているとします。
- AuthDBMUserFile
- データベースが一つだけあり、すべてのウェブユーザ名が列挙されており、
- このユーザ名がサーバで実際にファイルを所有しているユーザ名と一致している場合、
- 次の節のような設定で、ユーザが自分自身のファイルにアクセスできるようになります。
- /home/smith/public_html/private
の中のファイルは、所有者が
- smith
の代わりに jones
になっていない限り、
- jones
にはアクセスは許可されません。
- <Directory /home/*/public_html/private>
-
- AuthType Basic
- AuthName MyPrivateFiles
- AuthBasicProvider dbm
- AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
- Satisfy All
- Require file-owner
-
- </Directory>
-
上記のようなシステムで、数人のユーザがプロジェクトのファイルを
- ~/public_html/project-foo
で共有しているとします。
- ファイルはシステムのグループ foo
に所有されていて、
- AuthDBMGroupFile
- データベースが一つだけあり、そこにすべてのウェブユーザ名と
- グループのメンバが列挙されている、つまり、それらの
- ユーザは少なくとも foo
というグループに属している、とします。
- jones
とsmith
の二人共がグループ
- foo
のメンバである場合、どちらの人も両方の
- project-foo
にアクセスが許可されます。
- <Directory /home/*/public_html/project-foo>
-
- AuthType Basic
- AuthName "Project Foo Files"
- AuthBasicProvider dbm
-
- # combined user/group database
- AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
- AuthDBMGroupFile /usr/local/apache2/etc/.htdbm-all
-
- Satisfy All
- Require file-group
-
- </Directory>
-
説明: | 承認が下位承認モジュールに渡されるかどうかを設定する |
---|---|
構文: | AuthzOwnerAuthoritative On|Off |
デフォルト: | AuthzOwnerAuthoritative On |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Extension |
モジュール: | mod_authz_owner |
AuthzOwnerAuthoritative
ディレクティブを
- 明示的に Off
に設定すると、以下の場合に認証が
- (modules.c
で定義されている) 下位のモジュールに
- 渡されるようにします:
file-owner
の場合は、提供されたウェブユーザ名に
- ファイルシステムの所有者が一致しないか、所有者がわからない場合。file-group
の場合は、提供されたウェブユーザ名が
- ファイルシステムグループに存在しないか、わからない場合。値を Off
に設定すると、file-owner
と
- file-group
を組み合わせることもできるようになり、
- その場合はどちらか (両方でも) にマッチした場合にアクセスを許可されます。
デフォルトでは制御は渡されず、未知のグループの場合は Authentication
- Required 応答が返されます。ですから、Off
に設定しないことで
- システムを安全に保つことができ、NCSA 互換の振る舞いをさせることになります。
Apache HTTP 泣若 若吾с 2.3
+茯: | <ゃ冴ャ粋 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | authz_owner_module |
純若鴻<ゃ: | mod_authz_owner.c |
篋: | Apache 2.1 篁ラт戎 |
≪吾ャ若鴻<ゃ<ゃ激鴻
+ 違若 HTTP 茯荐若篏帥若 ID (с若 ID)
+ 罸莠с≪祉鴻粋障箴若九鴻若
+ mod_auth_basic
+ mod_auth_digest
茯荐若≪吾ャ若ф≪
+ 罎荐若綽荀障mod_authz_owner
+ 篁ヤRequire
cc file-owner
+ file-group
篋ゃ綣違茯茘障:
file-owner
jones
+ 荐cс≪祉鴻篏帥若九
+ jones
с違障file-group
mod_authz_groupfile
mod_authz_dbm
+ 箴違若若帥若鴻絖
+ с若九違若絮違障
+ 箴違若c潟違激鴻<ゃ (激鴻) 違若
+ accounts
荐c
+ accounts
違若若帥若鴻絖
+ 鴻篏睡с若九違若絮
+ 綽荀障茲違若吟激鴻 Apache с泣若絎茵
+ ~/public_html/private
若吟<ゃ臀障
+ AuthDBMUserFile
+ 若帥若鴻筝ゃ鴻с若九
+ 若九泣若у<ゃ若九筝眼翫
+ 罨<膀荐絎с若吟荳<ゃ≪祉鴻с障
+ /home/smith/public_html/private
筝<ゃ
+ smith
篁c jones
c
+ jones
≪祉鴻荐怨障
+ <Directory /home/*/public_html/private>
+
+ AuthType Basic
+ AuthName MyPrivateFiles
+ AuthBasicProvider dbm
+ AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
+ Satisfy All
+ Require file-owner
+
+ </Directory>
+
筝荐激鴻с遺査若吟吾с<ゃ
+ ~/public_html/project-foo
у掩障
+ <ゃ激鴻違若 foo
+ AuthDBMGroupFile
+ 若帥若鴻筝ゃ鴻с若九
+ 違若<潟ゃ障
+ 若吟絨 foo
違若絮障
+ jones
smith
篋篋阪宴違若
+ foo
<潟с翫<篋冴筝≧鴻
+ project-foo
≪祉鴻荐怨障
+ <Directory /home/*/public_html/project-foo>
+
+ AuthType Basic
+ AuthName "Project Foo Files"
+ AuthBasicProvider dbm
+
+ # combined user/group database
+ AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
+ AuthDBMGroupFile /usr/local/apache2/etc/.htdbm-all
+
+ Satisfy All
+ Require file-group
+
+ </Directory>
+
茯: | 粋筝篏粋≪吾ャ若羝<荐絎 |
---|---|
罕: | AuthzOwnerAuthoritative On|Off |
: | AuthzOwnerAuthoritative On |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Extension |
≪吾ャ若: | mod_authz_owner |
AuthzOwnerAuthoritative
cc
+ 腓榊 Off
荐絎篁ヤ翫茯荐若
+ (modules.c
у臂) 筝篏≪吾ャ若
+ 羝<障:
file-owner
翫箴с若九
+ <ゃ激鴻筝眼翫file-group
翫箴с若九
+ <ゃ激鴻違若絖翫ゃ Off
荐絎file-owner
+ file-group
腟水с
+ 翫< (筝≧鴻с) 翫≪祉鴻荐怨障
с九勝羝<ャ違若翫 Authentication
+ Required 綽膈菴障сOff
荐絎
+ 激鴻絎篆ゃсNCSA 篋障
Apache HTTP サーバ バージョン 2.3
-説明: | ユーザ承認 |
---|---|
ステータス: | Base |
モジュール識別子: | authz_user_module |
ソースファイル: | mod_authz_user.c |
互換性: | Apache 2.1 以降で使用可能 |
このモジュールは、認証されたユーザにウェブサイトの一部への
- アクセスを許可したり拒否したりするための承認機能を提供します。
- mod_authz_user
は認証されたユーザが
- Require user
ディレクティブに書かれていれば
- アクセスを認めます。認証に成功したユーザすべてにアクセスを
- 許可するには、代わりに require valid-user
を
- 使うことができます。
説明: | 承認が下位のモジュールに渡されるかどうかを設定する |
---|---|
構文: | AuthzUserAuthoritative On|Off |
デフォルト: | AuthzUserAuthoritative On |
コンテキスト: | ディレクトリ, .htaccess |
上書き: | AuthConfig |
ステータス: | Base |
モジュール: | mod_authz_user |
AuthzUserAuthoritative
ディレクティブを
- 明示的に Off
に設定すると userID に対応する
- グループがない場合に、
- (module.c
で定義されている) 下位のモジュールにグループ承認を
- 渡すことを許可します。
デフォルトでは制御は渡されず、未知のグループの場合は Authentication - Required 応答が返されます。ですから、これを設定しないと - システムを安全に保つことができ、NCSA 互換の振る舞いをさせることになります。
- -Apache HTTP 泣若 若吾с 2.3
+茯: | 若倶粋 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | authz_user_module |
純若鴻<ゃ: | mod_authz_user.c |
篋: | Apache 2.1 篁ラт戎 |
≪吾ャ若茯荐若若吟с泣ゃ筝吾
+ ≪祉鴻荐怨粋罘純箴障
+ mod_authz_user
茯荐若若吟
+ Require user
cc吾
+ ≪祉鴻茯障茯荐若若吟鴻≪祉鴻
+ 荐怨篁c require valid-user
+ 篏帥с障
茯: | 粋筝篏≪吾ャ若羝<荐絎 |
---|---|
罕: | AuthzUserAuthoritative On|Off |
: | AuthzUserAuthoritative On |
潟潟鴻: | c, .htaccess |
筝吾: | AuthConfig |
鴻若帥: | Base |
≪吾ャ若: | mod_authz_user |
AuthzUserAuthoritative
cc
+ 腓榊 Off
荐絎 userID 絲上
+ 違若翫
+ (module.c
у臂) 筝篏≪吾ャ若違若粋
+ 羝<荐怨障
с九勝羝<ャ違若翫 Authentication + Required 綽膈菴障с荐絎 + 激鴻絎篆ゃсNCSA 篋障
+ +Apache HTTP サーバ バージョン 2.3
-説明: | Unix の ls コマンドや
- Win32 の dir シェルコマンドに似た
- ディレクトリインデックスを生成する |
---|---|
ステータス: | Base |
モジュール識別子: | autoindex_module |
ソースファイル: | mod_autoindex.c |
ディレクトリのインデックスは二つの情報源のうちの - 一つから生成できます:
- -index.html
と呼ばれる
- ユーザによって書かれたファイル。
- DirectoryIndex
- ディレクティブでこのファイル名を設定します。
- これは mod_dir
で制御されます。AddIcon
, AddIconByEncoding
と
- AddIconByType
- を使うことで、様々なファイルタイプに対してアイコン一覧を
- セットします。つまり、リストされたファイル毎に、
- ファイルにマッチした一番最初のアイコンが表示されます。
- これらは mod_autoindex
で制御されます。望むならば、自動インデックス生成を完全に除去 (あるいは置換) - できるように、この二つの機能は分離されています。
- -自動インデックス生成は Options +Indexes
- を使うことで有効になります。詳細については、
- Options
- ディレクティブをご覧下さい。
もし FancyIndexing
オプションが
- IndexOptions
- ディレクティブに与えられているならば、
- 列の先頭は表示の順番を制御するリンクになります。
- 先頭のリンクを選択すると、一覧は再生成されて
- その列の値でソートされます。
- 同じ先頭を続けて選択すると、交互に昇順と降順とになります。
- これらの列の先頭のリンクは、
- IndexOptions
- ディレクティブの
- SuppressColumnSorting
- オプションで消すことができます。
"Size" でソートした場合は、用いられるのは - 実際のファイルのサイズであって、 - 表示の値ではないことに注意してください - - たとえ両方ともが "1K" と表示されていたとしても、 - 1010 バイトのファイルは必ず 1011 - バイトのファイルよりも前 (昇順の場合) に表示されます。
-Apache 2.0.23 で、
- コラムソートのためにクエリー引数を再編成して、
- 新しいクエリーオプションのグループを導入しました。
- 出力に対するクライアントのすべての制御を効率的に抹消
- できるように、
- IndexOptions
- IgnoreClient
が導入されました。
コラムソートのヘッダそれ自体が、 - 下記のソートクエリーオプションを付加する - 自分自身を参照するリンクです。 - 下記のオプションのどれでも、 - ディレクトリリソースへのリクエストに加えることができます。
- -C=N
は、ファイル名でソートします。C=M
は、更新日時、
- ディレクトリ、ファイル名の順でソートします。C=S
は、サイズ、
- ディレクトリ、ファイル名の順でソートします。C=D
は、説明、
- ディレクトリ、ファイル名の順でソートします。O=A
は、昇順で表をソートします。O=D
は、降順で表をソートします。F=0
は、単純な表の書式にします。
- (FancyIndex ではありません。)F=1
は、FancyIndex
- 表示の表の書式にします。F=2
は、表を HTML
- のテーブルを使った FancyIndex の書式にします。V=0
- は、バージョンによるソートを無効にします。V=1
- は、バージョンによるソートを有効にします。P=pattern
- は、与えられた pattern
- に適合したファイルのみを表示します。"P (パターンの P)" クエリー引数は、
- 通常の IndexIgnore
- ディレクティブが処理された後に検査され、
- ファイル名全てが、他の autoindex
- リスト処理と同様の判定基準下に置かれ続ける
- ことに注意してください。
- mod_autoindex
のクエリー引数パーサ (解析) は、
- 認識不能なオプションにぶつかると即座に停止します。
- クエリー引数は上の表に従って
- 正しい形式になっていなければなりません。
下の単純な例は、これらのクエリーオプションを - 表します。これをそのまま切り取って HEADER.html - ファイルに保存することもできます。 - mod_autoindex が X=Go 入力にぶつかる前に - 引数が全て解釈されるように、 - 未知の引数 "X" はリストの最後に置かれています。
- -
- <form action="" method="get">
-
- Show me a <select name="F">
-
- <option value="0"> Plain list</option>
- <option value="1" selected="selected"> Fancy list</option>
- <option value="2"> Table list</option>
-
- </select>
- Sorted by <select name="C">
-
- <option value="N" selected="selected"> Name</option>
- <option value="M"> Date Modified</option>
- <option value="S"> Size</option>
- <option value="D"> Description</option>
-
- </select>
- <select name="O">
-
- <option value="A" selected="selected"> Ascending</option>
- <option value="D"> Descending</option>
-
- </select>
- <select name="V">
-
- <option value="0" selected="selected"> in Normal order</option>
- <option value="1"> in Version order</option>
-
- </select>
- Matching <input type="text" name="P" value="*" />
- <input type="submit" name="X" value="Go" />
-
- </form>
-
説明: | アイコンの代わりに -表示される、ファイル名で選択された代替テキスト |
---|---|
構文: | AddAlt string file [file] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
AddAlt
は、FancyIndexing
- において、アイコンの代わりに表示する代替テキストを提供します。
- file は、説明するファイルのファイル拡張子、
- ファイル名の一部、ワイルドカード表現、完全なファイル名の
- どれかになります。
- string に空白がある場合は引用符 ("
- か '
) で囲む必要があります。
- この文字列は、クライアントが画像を表示できない場合や
- 画像のロードを無効にしている場合や
- アイコンの取得に失敗したときに表示されます。
- AddAlt "PDF file" *.pdf
- AddAlt Compressed *.gz *.zip *.Z
-
説明: | アイコンの代わりに表示される、MIME 符号化方法で選択された -代替テキスト |
---|---|
構文: | AddAltByEncoding string MIME-encoding
-[MIME-encoding] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
AddAltByEncoding
は、
- FancyIndexing
- において、アイコンの代わりに表示する代替文字列を提供します。
- MIME-encoding は有効な符号化、例えば
- x-compress
- です。
- string に空白があるときは、引用符 ("
か
- '
) で囲む必要があります。
- この文字列は、クライアントが画像を表示できない場合や
- 画像のロードを無効にしている場合や
- アイコンの取得に失敗したときに表示されます。
- AddAltByEncoding gzip x-gzip
-
説明: | アイコンの代わりに -表示される、MIME タイプで選択された代替テキスト |
---|---|
構文: | AddAltByType string MIME-type
-[MIME-type] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
AddAltByType
は、
- FancyIndexing
- において、アイコンの代わりに表示する代替文字列を設定します。
- MIME-type は有効なタイプ、例えば
- text/html
- です。
- string に空白があるときは、引用符 ("
か
- '
) で囲む必要があります。
- この文字列は、クライアントが画像を表示できない場合や
- 画像のロードを無効にしている場合や
- アイコンの取得に失敗したときに表示されます。
- AddAltByType 'plain text' text/plain
-
説明: | ファイルに対して表示する説明 |
---|---|
構文: | AddDescription string file [file] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
FancyIndexing
- において、ファイルに対して表示する説明を設定します。
- file は説明するファイルのファイル拡張子、
- ファイル名の一部、ワイルドカード表現、完全なファイル名の
- どれかになります。
- string は二重引用符 ("
) で囲まれます。
- AddDescription "The planet Mars" /web/pics/mars.gif
-
通常のデフォルトの説明領域は 23 バイトの幅です。
- IndexOptions SuppressIcon
- オプションで 6 バイト追加、
- IndexOptions SuppressSize
- オプションで 7 バイト追加、
- IndexOptions SuppressLastModified
- オプションで 19 バイト追加されます。
- ですから、デフォルトの説明コラムの最大幅は
- 55 バイトになります。
このコラムの大きさを上書きしたり、
- 説明が無制限長でもよいようにするための詳細に関しては、
- DescriptionWidth
- という
- IndexOptions
- のキーワードをご覧下さい。
AddDescription
- で定義された説明テキストは、タグや文字列といった
- HTML マークアップを含むことができます。
- もし、説明コラムの幅によってタグ付けされた要素が丸め込まれた
- (太字の語句の最後が切れるといった) 場合、
- 出力結果は、ディレクトリ一覧の残りの部分に影響を与えるでしょう。
説明: | ファイルに表示するアイコンを名前で選択 |
---|---|
構文: | AddIcon icon name
-[name] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
FancyIndexing
- において、
- name で終わるファイルの隣に表示するアイコンを設定します。
- icon は、(% でエスケープされた) アイコンへの相対 URL
- か、他の書式 (alttext, url) です。
- ここで alttext
- は、非グラフィカルブラウザ向けにアイコンに付けられたテキストタグです。
-
name は、ディレクトリに対応する ^^DIRECTORY^^
- か、空白行に対応する ^^BLANKICON^^
(一覧が正しく表示されるために) か、
- ファイル拡張子か、ワイルドカード表現か、ファイル名の一部か
- 完全なファイル名です。
- AddIcon (IMG,/icons/image.xbm) .gif .jpg .xbm
- AddIcon /icons/dir.xbm ^^DIRECTORY^^
- AddIcon /icons/backup.xbm *~
-
もし可能なら、
- AddIcon
- より
- AddIconByType
- を優先的に使うべきでしょう。
説明: | ファイルに表示するアイコンを MIME -符号化方法で選択 |
---|---|
構文: | AddIconByEncoding icon MIME-encoding
-[MIME-encoding] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
FancyIndexing
- において、ファイルの隣に表示するアイコンを設定します。
- icon は、(% でエスケープされた) アイコンへの相対 URL
- か、他の書式 (alttext, url)
です。
- ここで alttext
- は、非グラフィカルブラウザ向けにアイコンに付けられたテキストタグです。
-
MIME-encoding は、要求されたエンコードに該当する - ワイルドカード表現です。
- -
- AddIconByEncoding /icons/compress.xbm x-compress
-
説明: | ファイルの隣に表示するアイコンを -MIME タイプによって選択 |
---|---|
構文: | AddIconByType icon MIME-type
-[MIME-type] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
FancyIndexing
- において、ファイルの隣に表示するアイコンを設定します。
- icon は、(% でエスケープされた) アイコンへの相対 URL
- か、他の書式 (alttext, url)
です。
- ここで alttext
- は、非グラフィカルブラウザ向けにアイコンに付けられたテキストタグです。
-
MIME-type は、要求されたタイプに該当する - ワイルドカード表現です。
- -
- AddIconByType (IMG,/icons/image.xbm) image/*
-
説明: | 特定のアイコンが何も設定されていない時に -ファイルに表示するアイコン |
---|---|
構文: | DefaultIcon url-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
FancyIndexing
- において、
- 特定のアイコンがない場合にファイルに表示するアイコンを設定します。
- url-path は、(% でエスケープされた) アイコンへの相対 URL
- です。
- DefaultIcon /icon/unknown.xbm
-
説明: | -インデックス一覧の先頭に挿入されるファイルの名前 |
---|---|
構文: | HeaderName filename |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
HeaderName
- ディレクティブは、
- インデックス一覧の先頭に挿入するファイルの名前を設定します。
- Filename は取り込むファイルの名前です。
- HeaderName HEADER.html
-
HeaderName も ReadmeName
- も両方とも現在は、filename
- をインデックスされているディレクトリに用いられた URI
- に対する相対 URI パスとして扱います。
- filename がスラッシュで始まる場合は、
- DocumentRoot
- からの相対パスとなります。
- HeaderName /include/HEADER.html
-
filename は
- メジャーコンテントタイプが "text/*
"
- (例えば、text/html
,
- text/plain
等です。)
- のドキュメントとして解決
- されなければなりません。これはつまり、
- もし CGI スクリプトの実際のファイルタイプが
- 次のディレクティブのようにして実際の出力とは異なって
- text/html
としてマークされている場合、
- filename
- は CGI スクリプトを参照するかも知れない、
- ということを意味します:
- AddType text/html .cgi
-
Options
MultiViews
が
- 有効になっている場合は、
- コンテントネゴシエーション
- が行なわれます。
- もし filename が (CGI スクリプトでない) 静的な
- text/html
ドキュメントで解決され、
- options
- Includes
か IncludesNOEXEC
- が有効になっている場合は、
- ファイルはサーバーサイドインクルードで処理されます
- (mod_include
ドキュメントを参照して下さい)。
もし HeaderName
で指定されたファイルが
- HTML ドキュメントの開始部分 (<html>, <head>,
- 等) を含んでいたら、
- IndexOptions
- +SuppressHTMLPreamble
- を設定して、これらのタグが繰り返されないようにしたいと思うでしょう。
説明: | ディレクトリ一覧を行なう際に無視すべき -ファイルリストに追加 |
---|---|
構文: | IndexIgnore file [file] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
IndexIgnore
ディレクティブは、
- ディレクトリの一覧を行う際に無視すべきファイルリストに追加します。
- file は、
- シェル形式のワイルドカード表現か完全なファイル名です。
- IndexIgnore が複数ある場合は、無視するリストに追加が行われ、
- 置換は行われません。デフォルトではリストには .
- (カレントディレクトリ) が含まれています。
- IndexIgnore README .htaccess *.bak *~
-
説明: | ディレクトリインデックスの様々な設定項目 - |
---|---|
構文: | IndexOptions [+|-]option [[+|-]option] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
IndexOptions
- は、ディレクトリインデックスの挙動を指定します。
- option は次のどれかです:
DescriptionWidth
- キーワードは説明コラムの幅を文字数で指定することができます。-DescriptionWidth
(または非設定) で、
- mod_autoindex
が最適な幅を計算するようにできます。DescriptionWidth=n
- で、コラム幅を n バイトに固定します。DescriptionWidth=*
- は、最長の説明に合わせて必要な長さまでコラムを延ばします。AddDescription
- セクションをお読み下さい。FoldersFirst
が有効になっている場合は、
- サブディレクトリ Zed
はサブディレクトリ
- Beta
よりも前にリストされ、通常のファイル
- Gamma
や Alpha
- よりも前にリストされます。このオプションは
- FancyIndexing
- も有効になっているときにのみ、効果があります。img
- タグに height
と width
- 属性を取り込むようになります。
- これによって、イメージ全てをロードし終わるまで待たなくても、
- ブラウザはページレイアウトをあらかじめ計算することができます。
- このオプションに何も値が与えられなければ、Apache
- ソフトウェアで提供されているアイコンの標準の高さが
- デフォルトなります。IconHeight
とともに使われている場合は、
- サーバはファイルアイコンのための img
- タグに height
と width
- 属性を取り込むようになります。
- これによって、イメージ全てをロードし終わるまで待たなくても、
- ブラウザはページレイアウトをあらかじめ計算することができます。
- このオプションに何も値が与えられなければ、Apache
- ソフトウェアで提供されているアイコンの標準の高さが
- デフォルトなります。mod_autoindex
は、
- クライアントからの全てのクエリー変数を無視するようになります。
- これはソート順も含みます。
- (つまり SuppressColumnSorting
- を暗に意味します。)NameWidth
キーワードでファイル名コラムの幅をバイト数で
- 指定できます。-NameWidth
(または非設定) で、
- mod_autoindex
が最適な幅を計算するようにできます。NameWidth=n
- で、コラム幅を n バイトに固定します。NameWidth=*
- は、必要な長さまでコラムを延ばします。AddDescription
- で説明が与えられていなければ、
- httpd は title
タグの値を読むためにドキュメントを読み始めます。
- これは CPU や disk に負荷をかけます。AddDescription
- をご覧下さい。また、説明のコラムサイズを制限する
- DescriptionWidth
- インデックスオプションもご覧下さい。HeaderName
- ディレクティブで指定したファイルを
- ディレクトリが実際に含んでいれば、標準的な HTML プリアンブル
- (<html>
, <head>
, 等) の後に、
- モジュールはファイルの中身をインクルードします。
- SuppressHTMLPreamble
オプションは、
- この挙動を無効にできて、
- モジュールがヘッダーファイルの中身から表示を始めます。
- この場合、ヘッダーファイルは正しい HTML
- 命令を含んでいなければなりません。
- ヘッダーファイルが存在しない場合は、プリアンブルは通常通り
- 生成されます。SuppressIcon
と SuppressRules
- と組合わせることによって正しい HTML 3.2 の出力が得られます。
- 正しい HTML 3.2 出力は、最終規格において img
と hr
- が pre
ブロックに入る (FancyIndexing 一覧で書式に使われています)
- ことを禁止しています。hr
タグ) を消去します。
- SuppressIcon
と SuppressRules
- と組合わせることによって正しい HTML 3.2 の出力が得られます。
- 正しい HTML 3.2 出力は、最終規格において img
と hr
- が pre
ブロックに入る (FancyIndexing 一覧で書式に使われています)
- ことを禁止しています。HEAD
リクエストを行うことによって、
- ファイル一覧の変化を追跡することができるようになります。
- いくつかのオペレーティングシステムは、新規ファイルや
- 移動ファイルは正しく追跡するけれども、
- ディレクトリ中のファイルのサイズや日付は追跡ないということに
- 注意してください。
- 既に存在するファイルのサイズや日付のスタンプが変化しても、
- 全ての Unix プラットホームでは、
- 最終更新日ヘッダーを更新しません。
- もしこれが重要であれば、
- このオプションを無効のままにしてください。VersionSort
キーワードはバージョン番号を含んだファイルが
- 自然な方法でソートされるようにします。
- 文字列は通常通りソートされ、
- それ以外の、説明や名前中の数となる部分文字列は
- その数値で比較されます。
-
-
- foo-1.7
- foo-1.7.2
- foo-1.7.12
- foo-1.8.2
- foo-1.8.2a
- foo-1.12
-
番号が 0 から始まる場合は、端数と考えられます
- -
- foo-1.001
- foo-1.002
- foo-1.030
- foo-1.04
-
XHTML
キーワードを指定すると、mod_autoindex
- は HTML 3.2 の代わりに XHTML 1.0 のコードを出力するようになります。Apache 1.3.3 では、
- IndexOptions
- ディレクティブの扱いで幾つかの大きな変化が導入されました。
- 特に、
IndexOptions
- ディレクティブは、現在では一つにマージされます。
- 上の例の結果は、
-
-
- <Directory /foo>
-
- IndexOptions HTMLTable
- IndexOptions SuppressColumnsorting
-
- </Directory>
-
と同一になります。
- -
- IndexOptions HTMLTable SuppressColumnsorting
-
'+' や '-' 接頭辞の付いたキーワードに出会うとそれは、
- その時点での IndexOptions
- の設定 (これは上流のディレクトリを受け継ぎます)
- に対して適応されます。
- しかしながら、接頭辞の付かないキーワードが処理された場合は、
- 受け継いだオプション全てとそれまで出会った増減設定全てが
- 消去されます。次の例を考えてみてください:
- IndexOptions +ScanHTMLTitles -IconsAreLinks FancyIndexing
- IndexOptions +SuppressSize
-
中身の効果は
- IndexOptions FancyIndexing +SuppressSize
- と同一です。
- 接頭辞の付かない FancyIndexing
- でそれ以前の増減キーワードを無効にされて、
- その後の累積が始まるからです。
無条件に IndexOptions
- をあるディレクトリで設定することによって
- 継承した設定を消去して、+
や -
- 接頭辞の付かないキーワードで設定してください。
説明: | -ディレクトリインデックスの標準の順番付けを設定 |
---|---|
構文: | IndexOrderDefault Ascending|Descending
-Name|Date|Size|Description |
デフォルト: | IndexOrderDefault Ascending Name |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
IndexOrderDefault
ディレクティブは
- FancyIndexing
- インデックスオプションと併せて用いれれます。
- デフォルトでは、FancyIndexing
- のディレクトリ一覧はファイル名の昇順で表示されます。
- IndexOrderDefault
- で、初期状態の表示順番を変えることができます。
IndexOrderDefault
- は二つの引数をとります。一つ目はソートの方向を指示する
- Ascending
か Descending
のいずれかです。
- 二つ目の引数は Name
, Date
,
- Size
か Description
- のいずれか一つのキーワードであって、プライマリキーを指定します。
- 二つ目のキーは常にファイル名の昇順になります。
このディレクティブと SuppressColumnSorting
- インデックスオプションとを組み合わせることで、
- ディレクトリ一覧をある特定の順番でのみ表示するようにできます。
- これは、
- クライアントが別の順番でディレクトリ一覧をリクエストすることを防ぎます。
説明: | ディレクトリインデックスに CSS スタイルシートを追加する |
---|---|
構文: | IndexStyleSheet url-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
IndexStyleSheet
ディレクティブは
- インデックス表示に使用される CSS のファイル名を設定します。
-
-
- IndexStyleSheet "/css/style.css"
-
説明: | インデックス一覧の最後に挿入されるファイルの名前 |
---|---|
構文: | ReadmeName filename |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_autoindex |
ReadmeName
ディレクティブは、
- インデックスの終わりに付け加えられるファイルの名前を設定します。
- filename は挿入するファイルの名前で、
- 一覧の行われている位置から相対的なものとして解釈されます。
- filename がスラッシュで始まる場合は、
- DocumentRoot
- からの相対パスとなります。
- ReadmeName FOOTER.html
-
- ReadmeName /include/FOOTER.html
-
より詳細にまでこの挙動について記述している HeaderName
- もご覧下さい。
Apache HTTP 泣若 若吾с 2.3
+茯: | Unix ls 潟潟
+ Win32 dir 激с潟潟篌若
+ cゃ潟鴻 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | autoindex_module |
純若鴻<ゃ: | mod_autoindex.c |
cゃ潟鴻篋ゃ掩< + 筝ゃс障:
+ +index.html
若違
+ 若吟c吾<ゃ
+ DirectoryIndex
+ ccс<ゃ荐絎障
+ mod_dir
у九勝障AddIcon
, AddIconByEncoding
+ AddIconByType
+ 篏帥с罕<ゃ帥ゃ絲障≪ゃ潟割荀с
+ 祉障ゃ障鴻<ゃ罸
+ <ゃ筝≪ゃ潟潟茵腓冴障
+ mod_autoindex
у九勝障違ゃ潟合絎ゅサ (臀) + с篋ゃ罘純≪障
+ +ゃ潟合 Options +Indexes
+ 篏帥ф鴻障荅括完ゃ
+ Options
+ cc荀т
FancyIndexing
激с潟
+ IndexOptions
+ cc筝違
+ 茵腓冴九勝潟障
+ 潟御筝荀с
+ ゃс純若障
+ 膓御篋や障
+ 潟
+ IndexOptions
+ cc
+ SuppressColumnSorting
+ 激с潟фс障
"Size" с純若翫 + 絎<ゃ泣ゃ冴сc + 茵腓冴ゃс羈 - + 筝≧鴻 "1K" 茵腓冴 + 1010 ゃ<ゃ綽 1011 + ゃ<ゃ (翫) 茵腓冴障
+Apache 2.0.23 с
+ 潟純若弱違膩
+ 違若激с潟違若絨ャ障
+ 阪絲障ゃ≪潟鴻九勝合号
+ с
+ IndexOptions
+ IgnoreClient
絨ャ障
潟純若篏 + 筝荐純若若激с潟篁 + 荳с潟с + 筝荐激с潟с + c純若鴻吾鴻с障
+ +C=N
<ゃс純若障C=M
贋井ユ
+ c<ゃс純若障C=S
泣ゃ冴
+ c<ゃс純若障C=D
茯
+ c<ゃс純若障O=A
ц;純若障O=D
ц;純若障F=0
膣茵後障
+ (FancyIndex с障)F=1
FancyIndex
+ 茵腓冴茵後障F=2
茵 HTML
+ 若篏帥c FancyIndex 後障V=0
+ 若吾с潟純若≦鴻障V=1
+ 若吾с潟純若鴻障P=pattern
+ 筝 pattern
+ <ゃ帥茵腓冴障"P (帥若潟 P)" 弱違
+ 絽吾 IndexIgnore
+ cc緇罎祉
+ <ゃ篁 autoindex
+ 鴻罕ゅ堺筝臀膓
+ 羈
+ mod_autoindex
弱違若 (茹f)
+ 茯茘筝純激с潟吟ゃ喝婚罩≪障
+ 弱違筝茵緇c
+ 罩c綵√c違障
筝膣箴若激с潟 + 茵障障上c HEADER.html + <ゃ篆絖с障 + mod_autoindex X=Go ュ吟ゃ + 綣違茹i + ャ綣 "X" 鴻緇臀障
+ +
+ <form action="" method="get">
+
+ Show me a <select name="F">
+
+ <option value="0"> Plain list</option>
+ <option value="1" selected="selected"> Fancy list</option>
+ <option value="2"> Table list</option>
+
+ </select>
+ Sorted by <select name="C">
+
+ <option value="N" selected="selected"> Name</option>
+ <option value="M"> Date Modified</option>
+ <option value="S"> Size</option>
+ <option value="D"> Description</option>
+
+ </select>
+ <select name="O">
+
+ <option value="A" selected="selected"> Ascending</option>
+ <option value="D"> Descending</option>
+
+ </select>
+ <select name="V">
+
+ <option value="0" selected="selected"> in Normal order</option>
+ <option value="1"> in Version order</option>
+
+ </select>
+ Matching <input type="text" name="P" value="*" />
+ <input type="submit" name="X" value="Go" />
+
+ </form>
+
茯: | ≪ゃ潟潟篁c +茵腓冴<ゃч御篁f帥鴻 |
---|---|
罕: | AddAlt string file [file] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
AddAlt
FancyIndexing
+ ≪ゃ潟潟篁c茵腓冴篁f帥鴻箴障
+ file 茯<ゃ<ゃ≦宍絖
+ <ゃ筝ゃ若茵憗絎<ゃ
+ 障
+ string 腥榊純翫綣膃 ("
+ '
) у蚊綽荀障
+ 絖ゃ≪潟糸茵腓冴с翫
+ 糸若≦鴻翫
+ ≪ゃ潟潟緇紊掩茵腓冴障
+ AddAlt "PDF file" *.pdf
+ AddAlt Compressed *.gz *.zip *.Z
+
茯: | ≪ゃ潟潟篁c茵腓冴MIME 膃垸号ч御 +篁f帥鴻 |
---|---|
罕: | AddAltByEncoding string MIME-encoding
+[MIME-encoding] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
AddAltByEncoding
+ FancyIndexing
+ ≪ゃ潟潟篁c茵腓冴篁f炊絖箴障
+ MIME-encoding 鴻膃垸箴
+ x-compress
+ с
+ string 腥榊純綣膃 ("
+ '
) у蚊綽荀障
+ 絖ゃ≪潟糸茵腓冴с翫
+ 糸若≦鴻翫
+ ≪ゃ潟潟緇紊掩茵腓冴障
+ AddAltByEncoding gzip x-gzip
+
茯: | ≪ゃ潟潟篁c +茵腓冴MIME 帥ゃч御篁f帥鴻 |
---|---|
罕: | AddAltByType string MIME-type
+[MIME-type] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
AddAltByType
+ FancyIndexing
+ ≪ゃ潟潟篁c茵腓冴篁f炊絖荐絎障
+ MIME-type 鴻帥ゃ箴
+ text/html
+ с
+ string 腥榊純綣膃 ("
+ '
) у蚊綽荀障
+ 絖ゃ≪潟糸茵腓冴с翫
+ 糸若≦鴻翫
+ ≪ゃ潟潟緇紊掩茵腓冴障
+ AddAltByType 'plain text' text/plain
+
茯: | <ゃ絲障茵腓冴茯 |
---|---|
罕: | AddDescription string file [file] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
FancyIndexing
+ <ゃ絲障茵腓冴茯荐絎障
+ file 茯<ゃ<ゃ≦宍絖
+ <ゃ筝ゃ若茵憗絎<ゃ
+ 障
+ string 篋綣膃 ("
) у蚊障障
+ AddDescription "The planet Mars" /web/pics/mars.gif
+
絽吾茯 23 ゃ綛с
+ IndexOptions SuppressIcon
+ 激с潟 6 ゃ菴遵
+ IndexOptions SuppressSize
+ 激с潟 7 ゃ菴遵
+ IndexOptions SuppressLastModified
+ 激с潟 19 ゃ菴遵障
+ с茯潟紊у
+ 55 ゃ障
潟紊с筝吾
+ 茯≦狗激с荅括完≪
+ DescriptionWidth
+
+ IndexOptions
+ 若若荀т
AddDescription
+ у臂茯鴻帥違絖c
+ HTML 若≪с障
+ 茯潟綛c帥遺荀膣筝吾莨若障
+ (紊絖茯ャ緇c) 翫
+ 阪腟c筝荀с罧綵演帥筝с
茯: | <ゃ茵腓冴≪ゃ潟潟ч御 |
---|---|
罕: | AddIcon icon name
+[name] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
FancyIndexing
+
+ name х<ゃc茵腓冴≪ゃ潟潟荐絎障
+ icon (% с鴻宴若) ≪ゃ潟潟吾後 URL
+ 篁後 (alttext, url) с
+ alttext
+ 違c九≪ゃ潟潟篁鴻帥違с
+
name c絲上 ^^DIRECTORY^^
+ 腥榊処絲上 ^^BLANKICON^^
(筝荀с罩c頫腓冴)
+ <ゃ≦宍絖ゃ若茵憗<ゃ筝
+ 絎<ゃс
+ AddIcon (IMG,/icons/image.xbm) .gif .jpg .xbm
+ AddIcon /icons/dir.xbm ^^DIRECTORY^^
+ AddIcon /icons/backup.xbm *~
+
純
+ AddIcon
+
+ AddIconByType
+ 篏帥鴻с
茯: | <ゃ茵腓冴≪ゃ潟潟 MIME +膃垸号ч御 |
---|---|
罕: | AddIconByEncoding icon MIME-encoding
+[MIME-encoding] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
FancyIndexing
+ <ゃc茵腓冴≪ゃ潟潟荐絎障
+ icon (% с鴻宴若) ≪ゃ潟潟吾後 URL
+ 篁後 (alttext, url)
с
+ alttext
+ 違c九≪ゃ潟潟篁鴻帥違с
+
MIME-encoding 荀羆潟潟若荅峨 + ゃ若茵憗с
+ +
+ AddIconByEncoding /icons/compress.xbm x-compress
+
茯: | <ゃc茵腓冴≪ゃ潟潟 +MIME 帥ゃc御 |
---|---|
罕: | AddIconByType icon MIME-type
+[MIME-type] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
FancyIndexing
+ <ゃc茵腓冴≪ゃ潟潟荐絎障
+ icon (% с鴻宴若) ≪ゃ潟潟吾後 URL
+ 篁後 (alttext, url)
с
+ alttext
+ 違c九≪ゃ潟潟篁鴻帥違с
+
MIME-type 荀羆帥ゃ荅峨 + ゃ若茵憗с
+ +
+ AddIconByType (IMG,/icons/image.xbm) image/*
+
茯: | 劫≪ゃ潟潟篏荐絎 +<ゃ茵腓冴≪ゃ潟 |
---|---|
罕: | DefaultIcon url-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
FancyIndexing
+
+ 劫≪ゃ潟潟翫<ゃ茵腓冴≪ゃ潟潟荐絎障
+ url-path (% с鴻宴若) ≪ゃ潟潟吾後 URL
+ с
+ DefaultIcon /icon/unknown.xbm
+
茯: | +ゃ潟剛荀с水ャ<ゃ |
---|---|
罕: | HeaderName filename |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
HeaderName
+ cc
+ ゃ潟剛荀с水ャ<ゃ荐絎障
+ Filename 莨若<ゃс
+ HeaderName HEADER.html
+
HeaderName ReadmeName
+ 筝≧鴻憜filename
+ ゃ潟鴻c URI
+ 絲障後 URI 鴻宴障
+ filename 鴻激ャу障翫
+ DocumentRoot
+ 後障鴻障
+ HeaderName /include/HEADER.html
+
filename
+ <吾c若潟潟潟帥ゃ "text/*
"
+ (箴text/html
,
+ text/plain
膈с)
+ ャ<潟茹f浦
+ 違障ゃ障
+ CGI 鴻絎<ゃ帥ゃ
+ 罨<cc絎阪違c
+ text/html
若翫
+ filename
+ CGI 鴻сャ
+ 潟障:
+ AddType text/html .cgi
+
Options
MultiViews
+ 鴻c翫
+ 潟潟潟眼激若激с
+ 茵障
+ filename (CGI 鴻с)
+ text/html
ャ<潟цВ羆冴
+ options
+ Includes
IncludesNOEXEC
+ 鴻c翫
+ <ゃ泣若若泣ゃゃ潟若у障
+ (mod_include
ャ<潟с筝)
HeaderName
ф絎<ゃ
+ HTML ャ<潟紮 (<html>, <head>,
+ 膈) с
+ IndexOptions
+ +SuppressHTMLPreamble
+ 荐絎帥違膵違菴с
茯: | c筝荀с茵∴鴻 +<ゃ鴻菴遵 |
---|---|
罕: | IndexIgnore file [file] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
IndexIgnore
cc
+ c筝荀с茵∴鴻<ゃ鴻菴遵障
+ file
+ 激с綵√ゃ若茵憗絎<ゃс
+ IndexIgnore 茲違翫∴鴻菴遵茵
+ 臀茵障с鴻 .
+ (潟c) 障障
+ IndexIgnore README .htaccess *.bak *~
+
茯: | cゃ潟鴻罕荐絎 + |
---|---|
罕: | IndexOptions [+|-]option [[+|-]option] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
IndexOptions
+ cゃ潟鴻絎障
+ option 罨<с:
DescriptionWidth
+ 若若茯潟綛絖違ф絎с障-DescriptionWidth
(障荐絎) с
+ mod_autoindex
綛荐膊с障DescriptionWidth=n
+ с潟綛 n ゃ阪障DescriptionWidth=*
+ 激茯綽荀激障с潟綮吟違障AddDescription
+ 祉激с潟茯推FoldersFirst
鴻c翫
+ 泣c Zed
泣c
+ Beta
鴻絽吾<ゃ
+ Gamma
Alpha
+ 鴻障激с潟
+ FancyIndexing
+ 鴻c帥号障img
+ 帥違 height
width
+ 絮с莨若障
+ cゃ<若後若腟障у
+ 吟若吾ゃ≪荐膊с障
+ 激с潟篏ゃ筝違Apache
+ 純с≪ф箴≪ゃ潟潟罔羣蕭
+ 障IconHeight
篏帥翫
+ 泣若<ゃ≪ゃ潟潟 img
+ 帥違 height
width
+ 絮с莨若障
+ cゃ<若後若腟障у
+ 吟若吾ゃ≪荐膊с障
+ 激с潟篏ゃ筝違Apache
+ 純с≪ф箴≪ゃ潟潟罔羣蕭
+ 障mod_autoindex
+ ゃ≪潟弱違∴障
+ 純若帥障
+ (ゃ障 SuppressColumnSorting
+ 潟障)NameWidth
若若с<ゃ潟綛ゃ違
+ 絎с障-NameWidth
(障荐絎) с
+ mod_autoindex
綛荐膊с障NameWidth=n
+ с潟綛 n ゃ阪障NameWidth=*
+ 綽荀激障с潟綮吟違障AddDescription
+ ц筝違
+ httpd title
帥違ゃ茯ャ<潟茯水障
+ CPU disk 莢激障AddDescription
+ 荀т障茯潟泣ゃ冴狗
+ DescriptionWidth
+ ゃ潟鴻激с潟荀тHeaderName
+ ccф絎<ゃ
+ c絎с違罔羣 HTML ≪潟
+ (<html>
, <head>
, 膈) 緇
+ ≪吾ャ若<ゃ筝荳ゃ潟若障
+ SuppressHTMLPreamble
激с潟
+ ≦鴻с
+ ≪吾ャ若若<ゃ筝荳茵腓冴紮障
+ 翫若<ゃ罩c HTML
+ 巡擦с違障
+ 若<ゃ絖翫≪潟絽檎
+ 障SuppressIcon
SuppressRules
+ 腟c罩c HTML 3.2 阪緇障
+ 罩c HTML 3.2 阪腟荀若 img
hr
+ pre
ャ (FancyIndexing 筝荀сф後篏帥障)
+ 胼罩≪障hr
帥) 羔サ障
+ SuppressIcon
SuppressRules
+ 腟c罩c HTML 3.2 阪緇障
+ 罩c HTML 3.2 阪腟荀若 img
hr
+ pre
ャ (FancyIndexing 筝荀сф後篏帥障)
+ 胼罩≪障HEAD
鴻茵c
+ <ゃ筝荀с紊菴処掘с障
+ ゃ若c潟違激鴻域<ゃ
+ 腱糸<ゃ罩c颷処掘
+ c筝<ゃ泣ゃ冴ヤ菴処掘
+ 羈
+ ≪絖<ゃ泣ゃ冴ヤ鴻帥潟紊
+ Unix 若с
+ 腟贋井ャ若贋違障
+ 荀с違
+ 激с潟≦鴻障障VersionSort
若若若吾с括垩<ゃ
+ 吟号с純若障
+ 絖絽檎純若
+ 篁ュ茯筝違絖
+ 医ゃф莠障
+
+
+ foo-1.7
+ foo-1.7.2
+ foo-1.7.12
+ foo-1.8.2
+ foo-1.8.2a
+ foo-1.12
+
垩 0 紮障翫腴違障
+ +
+ foo-1.001
+ foo-1.002
+ foo-1.030
+ foo-1.04
+
XHTML
若若絎mod_autoindex
+ HTML 3.2 篁c XHTML 1.0 潟若阪障Apache 1.3.3 с
+ IndexOptions
+ cc宴у江ゃ紊с紊絨ャ障
+ 鴻
IndexOptions
+ cc憜с筝ゃ若吾障
+ 筝箴腟
+
+
+ <Directory /foo>
+
+ IndexOptions HTMLTable
+ IndexOptions SuppressColumnsorting
+
+ </Directory>
+
筝障
+ +
+ IndexOptions HTMLTable SuppressColumnsorting
+
'+' '-' ・莨篁若若坂
+ 鴻с IndexOptions
+ 荐絎 (筝羌c膓障)
+ 絲障綽障
+ ・莨篁若若翫
+ 膓激с喝障у坂c紜羝荐絎
+ 羔サ障罨<箴帥:
+ IndexOptions +ScanHTMLTitles -IconsAreLinks FancyIndexing
+ IndexOptions +SuppressSize
+
筝荳号
+ IndexOptions FancyIndexing +SuppressSize
+ 筝с
+ ・莨篁 FancyIndexing
+ с篁ュ紜羝若若≦鴻
+ 緇膣腥紮障с
≧>散 IndexOptions
+ cц┃絎c
+ 膓帥荐絎羔サ+
-
+ ・莨篁若若ц┃絎
茯: | +cゃ潟鴻罔羣篁荐絎 |
---|---|
罕: | IndexOrderDefault Ascending|Descending
+Name|Date|Size|Description |
: | IndexOrderDefault Ascending Name |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
IndexOrderDefault
cc
+ FancyIndexing
+ ゃ潟鴻激с潟篏泣障
+ сFancyIndexing
+ c筝荀с<ゃц;腓冴障
+ IndexOrderDefault
+ с倶茵腓咲紊с障
IndexOrderDefault
+ 篋ゃ綣違障筝ょ純若劫腓冴
+ Ascending
Descending
с
+ 篋ょ綣違 Name
, Date
,
+ Size
Description
+ 筝ゃ若若сcゃ若絎障
+ 篋ょ若絽吾<ゃ障
cc SuppressColumnSorting
+ ゃ潟鴻激с潟腟水с
+ c筝荀с劫с粋;腓冴с障
+
+ ゃ≪潟ャсc筝荀с鴻蚊障
茯: | cゃ潟鴻 CSS 鴻帥ゃ激若菴遵 |
---|---|
罕: | IndexStyleSheet url-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
IndexStyleSheet
cc
+ ゃ潟壕;腓冴篏睡 CSS <ゃ荐絎障
+
+
+ IndexStyleSheet "/css/style.css"
+
茯: | ゃ潟剛荀с緇水ャ<ゃ |
---|---|
罕: | ReadmeName filename |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_autoindex |
ReadmeName
cc
+ ゃ潟鴻腟篁<ゃ荐絎障
+ filename 水ャ<ゃс
+ 筝荀с茵篏臀後丞茹i障
+ filename 鴻激ャу障翫
+ DocumentRoot
+ 後障鴻障
+ ReadmeName FOOTER.html
+
+ ReadmeName /include/FOOTER.html
+
荅括完障сゃ荐菴違 HeaderName
+ 荀т
Apache HTTP サーバ バージョン 2.3
-説明: | URI をキーにしたコンテンツのキャッシュ |
---|---|
ステータス: | Extension |
モジュール識別子: | cache_module |
ソースファイル: | mod_cache.c |
mod_cache
はローカルのコンテンツやプロキシされた
- コンテンツをキャッシュするために使われる RFC 2616 準拠の
- HTTP コンテンツキャッシュを実装しています。mod_cache
- の動作にはストレージを管理するモジュールが必要です。標準
- Apache 配布には二つストレージ管理モジュールが含まれています:
mod_disk_cache
mod_mem_cache
mod_mem_cache
は次の二つのモードのどちらかで動作する
- ように設定できます: オープンされているファイル記述子をキャッシュするモードか、
- ヒープ上でのオブジェクトの自体をキャッシュをするモードです。
- mod_mem_cache
はローカルで生成されるコンテンツや、
- mod_proxy
が
- ProxyPass
を使って設定されている
- ときの (つまりリバースプロキシ での) バックエンドサーバの
- コンテンツをキャッシュするのに使えます。コンテンツのキャッシュへの保存と取得は URI に基づいたキーが使われます。 - アクセス保護のかけられているコンテンツはキャッシュされません。
-関連モジュール | 関連ディレクティブ |
---|---|
- #
- # Sample Cache Configuration
- #
- LoadModule cache_module modules/mod_cache.so
-
- <IfModule mod_cache.c>
-
- #LoadModule disk_cache_module modules/mod_disk_cache.so
- # If you want to use mod_disk_cache instead of mod_mem_cache,
- # uncomment the line above and comment out the LoadModule line below.
- <IfModule mod_disk_cache.c>
-
- CacheRoot c:/cacheroot
- CacheEnable disk /
- CacheDirLevels 5
- CacheDirLength 3
-
- </IfModule>
-
- LoadModule mem_cache_module modules/mod_mem_cache.so
- <IfModule mod_mem_cache.c>
-
- CacheEnable mem /
- MCacheSize 4096
- MCacheMaxObjectCount 100
- MCacheMinObjectSize 1
- MCacheMaxObjectSize 2048
-
- </IfModule>
-
- </IfModule>
-
説明: | 期日が指定されていないときにドキュメントをキャッシュするデフォルトの期間 |
---|---|
構文: | CacheDefaultExpire seconds |
デフォルト: | CacheDefaultExpire 3600 (1時間) |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
CacheDefaultExpire
ディレクティブは、ドキュメントに
- 有効期限 (expiry) や最終修正時刻 (last-modified) が指定されていない場合の
- デフォルトの時間を指定します。CacheMaxExpire
- ディレクティブで指定された値はこの設定を上書きしません。
- CacheDefaultExpire 86400
-
説明: | 特定の URL をキャッシュしない |
---|---|
構文: | CacheDisable url-string |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
CacheDisable
ディレクティブで
- mod_cache
モジュールが url-string 以下の
- URL をキャッシュしないようにします。
- CacheDisable /local_files
-
説明: | 指定したストレージ管理方式を使ってのキャッシュを有効にする |
---|---|
構文: | CacheEnable cache_type url-string |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
CacheEnable
ディレクティブで mod_cache
- モジュールが url-string 以下の URL をキャッシュするようにします。
- キャッシュストレージ管理方式は cache_type 引数で指定します。
- cache_type mem
で、
- mod_mem_cache
で実装されているメモリを使ったストレージ
- 管理方式を使うように mod_cache
に指示します。
- cache_type disk
で、
- mod_disk_cache
で実装されているディスクを使ったストレージ
- 管理を使うように mod_cache
に指示します。
- cache_type fd
は mod_cache
に
- mod_mem_cache
により実装されているファイル記述子の
- キャッシュを使うように指示します。
(下の例のように) CacheEnable
ディレクティブの
- URL 空間が重複しているときは、該当するストレージ方式を順に試して、
- 実際にリクエストの処理ができると、その方式で処理します。
- ストレージ管理方式が実行される順番は設定ファイル中の
- CacheEnable
の順番により決定されます。
- CacheEnable mem /manual
- CacheEnable fd /images
- CacheEnable disk /
-
説明: | キャッシュされているコンテンツを返さないようにクライアントから -リクエストされても無視する |
---|---|
構文: | CacheIgnoreCacheControl On|Off |
デフォルト: | CacheIgnoreCacheControl Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
Cache-Control: no-cache ヘッダや Pragma: no-store ヘッダのあるリクエストに
- 対しては、通常キャッシュを使いません。CacheIgnoreCacheControl
- ディレクティブを使うと、この動作を上書きできます。
- CacheIgnoreCacheControl
On とすると、
- リクエストに no-cache という値があっても、キャッシュを使ってドキュメントを
- 返すようになります。認証を必要とするドキュメントは決して
- キャッシュされません。
- CacheIgnoreCacheControl On
-
説明: | 指定された HTTP ヘッダをキャッシュに保存しない。 - |
---|---|
構文: | CacheIgnoreHeaders header-string [header-string] ... |
デフォルト: | CacheIgnoreHeaders None |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
RFC 2616 によると、hop-by-hop HTTP ヘッダはキャッシュには保管されません。
- 以下のヘッダは hop-by-hop ヘッダに該当しますので、
- CacheIgnoreHeaders
- の設定に関係なくキャッシュには保管されません:
Connection
Keep-Alive
Proxy-Authenticate
Proxy-Authorization
TE
Trailers
Transfer-Encoding
Upgrade
CacheIgnoreHeaders
で
- キャッシュに保管しない追加の HTTP ヘッダを指定します。
- 例えば、クッキーをキャッシュに保管しないようにした方がよい場合も
- あるでしょう。
CacheIgnoreHeaders
の引数は、
- キャッシュに保管しない HTTP ヘッダを空白区切りにしたリスト形式です。
- キャッシュに保管しないヘッダが hop-by-hop ヘッダだけの場合
- (RFC 2616 準拠の動作のとき) は、
- CacheIgnoreHeaders
を None
- に設定できます。
- CacheIgnoreHeaders Set-Cookie
-
- CacheIgnoreHeaders None
-
Expires
のような適切のキャッシュ管理のために必要な
- ヘッダが CacheIgnoreHeaders
の設定により
- 保管されていないときは、mod_cache の動作は定義されていません。
- 説明: | 応答に Last Modified が無くても気にしないようにする |
---|---|
構文: | CacheIgnoreNoLastMod On|Off |
デフォルト: | CacheIgnoreNoLastMod Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
通常、Last-Modified による最終修正時刻の無いドキュメントはキャッシュ
- されません。(例えば mod_include
による処理のときなどに)
- Last-Modified 時刻が消去されたり、そもそも最初から提供されていない
- 状況があります。CacheIgnoreNoLastMod
- ディレクティブを使うと、Last-Modified 日時が指定されていない
- ドキュメントでもキャッシュするように指定できます。ドキュメントに
- 最終修正時刻 (Last-Modified) 有効期限 (expiry) がない場合は、有効期限の
- 生成に CacheDefaultExpire
が使われます。
- CacheIgnoreNoLastMod On
-
説明: | LastModified の日付に基づいて有効期限 (expiry) -を計算するための重みを指定する - |
---|---|
構文: | CacheLastModifiedFactor float |
デフォルト: | CacheLastModifiedFactor 0.1 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
ドキュメントに Last-Modified の日付が無いけれども有効期限 (expiry)
- の日付があるというときに、有効期限を最終修正時刻からの経過時間として
- 計算するようにできます。有効期限を次の計算式に従って生成するのですが、
- そのときに使われる factor を
- CacheLastModifiedFactor
ディレクティブで指定します。
-
expiry-period = time-since-last-modified-date * factor
- expiry-date = current-date + expiry-period
例えば、ドキュメントが 10 時間前に最後に修正されていて、 - factor が 0.1 であれば、期日は 10*0.1 = 1 時間に - 設定されます。現在時刻が 3:00pm であれば、計算された期日は - 3:00pm + 1hour = 4:00pm になります。
- -期日が CacheMaxExpire
で設定されている値
- より大きくなってしまっている場合は、CacheMaxExpire
- の設定値が優先されます。
- CacheLastModifiedFactor 0.5
-
説明: | ドキュメントをキャッシュする最大時間を秒数で現したもの |
---|---|
構文: | CacheMaxExpire seconds |
デフォルト: | CacheMaxExpire 86400 (一日) |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
CacheMaxExpire
ディレクティブは、
- キャッシュする HTTP ドキュメントを、元のサーバに問い合わせないまま最大何秒
- 保持してもよいかを指定します。つまり、ドキュメントは最大でこの秒数間ぶん古く
- なることになります。この最大値は、(訳注:レスポンス中で)ドキュメントと共に
- ドキュメントの期日が提供されている場合でも適用されます。
- CacheMaxExpire 604800
-
説明: | no-store と指定されているレスポンスのキャッシュを試みる。 |
---|---|
構文: | CacheStoreNoStore On|Off |
デフォルト: | CacheStoreNoStore Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
通常 Cache-Control: no-store ヘッダのついているレスポンスは
- キャッシュされません。CacheStoreNoCache
- ディレクティブでこの挙動を上書きできます。
- CacheStoreNoCache
On で no-store ヘッダのついている
- リソースに対してもキャッシュを試みるようになります。
- ただし認証の求められるリソースは 決して キャッシュされません。
- CacheStoreNoStore On
-
説明: | private と指定されているレスポンスのキャッシュを試みる。 |
---|---|
構文: | CacheStorePrivate On|Off |
デフォルト: | CacheStorePrivate Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
通常 Cache-Control: private ヘッダのついているレスポンスは
- キャッシュされません。CacheStorePrivate
- ディレクティブでこの挙動を上書きできます。
- CacheStorePrivate
On で private ヘッダのついている
- リソースに対してもキャッシュを試みるようになります。
- ただし認証の求められるリソースは 決して キャッシュされません。
- CacheStorePrivate On
-
Apache HTTP 泣若 若吾с 2.3
+茯: | URI 若潟潟潟c激 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | cache_module |
純若鴻<ゃ: | mod_cache.c |
mod_cache
若潟潟潟激
+ 潟潟潟c激ャ篏帥 RFC 2616 羣
+ HTTP 潟潟潟c激ャ絎茖障mod_cache
+ 篏鴻若吾膊∞≪吾ャ若綽荀с罔羣
+ Apache 絽篋ゃ鴻若悟∞≪吾ャ若障障:
mod_disk_cache
mod_mem_cache
mod_mem_cache
罨<篋ゃ≪若<у篏
+ 荐絎с障: 若潟<ゃ荐菴医c激ャ≪若
+ 若筝с吾с篏c激ャ≪若с
+ mod_mem_cache
若х潟潟潟
+ mod_proxy
+ ProxyPass
篏帥c荐絎
+ (ゃ障若鴻 с) 潟泣若
+ 潟潟潟c激ャ篏帥障潟潟潟c激ャ吾篆絖緇 URI 冴ャ若篏帥障 + ≪祉剛茘激潟潟潟c激ャ障
+∫c≪吾ャ若 | ∫ccc |
---|---|
+ #
+ # Sample Cache Configuration
+ #
+ LoadModule cache_module modules/mod_cache.so
+
+ <IfModule mod_cache.c>
+
+ #LoadModule disk_cache_module modules/mod_disk_cache.so
+ # If you want to use mod_disk_cache instead of mod_mem_cache,
+ # uncomment the line above and comment out the LoadModule line below.
+ <IfModule mod_disk_cache.c>
+
+ CacheRoot c:/cacheroot
+ CacheEnable disk /
+ CacheDirLevels 5
+ CacheDirLength 3
+
+ </IfModule>
+
+ LoadModule mem_cache_module modules/mod_mem_cache.so
+ <IfModule mod_mem_cache.c>
+
+ CacheEnable mem /
+ MCacheSize 4096
+ MCacheMaxObjectCount 100
+ MCacheMinObjectSize 1
+ MCacheMaxObjectSize 2048
+
+ </IfModule>
+
+ </IfModule>
+
茯: | ャ絎ャ<潟c激ャ |
---|---|
罕: | CacheDefaultExpire seconds |
: | CacheDefaultExpire 3600 (1) |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
CacheDefaultExpire
ccャ<潟
+ 号 (expiry) 腟篆罩f (last-modified) 絎翫
+ 絎障CacheMaxExpire
+ ccф絎ゃ荐絎筝吾障
+ CacheDefaultExpire 86400
+
茯: | 劫 URL c激ャ |
---|---|
罕: | CacheDisable url-string |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
CacheDisable
cc
+ mod_cache
≪吾ャ若 url-string 篁ヤ
+ URL c激障
+ CacheDisable /local_files
+
茯: | 絎鴻若悟∞劫篏帥cc激ャ鴻 |
---|---|
罕: | CacheEnable cache_type url-string |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
CacheEnable
cc mod_cache
+ ≪吾ャ若 url-string 篁ヤ URL c激ャ障
+ c激ャ鴻若悟∞劫 cache_type 綣違ф絎障
+ cache_type mem
с
+ mod_mem_cache
у茖<≪篏帥c鴻若
+ 膊∞劫篏帥 mod_cache
腓冴障
+ cache_type disk
с
+ mod_disk_cache
у茖c鴻篏帥c鴻若
+ 膊∞篏帥 mod_cache
腓冴障
+ cache_type fd
mod_cache
+ mod_mem_cache
絎茖<ゃ荐菴医
+ c激ャ篏帥腓冴障
(筝箴) CacheEnable
cc
+ URL 腥咲茲荅峨鴻若御劫荅
+ 絎鴻с劫у障
+ 鴻若悟∞劫絎茵荐絎<ゃ筝
+ CacheEnable
羆阪障
+ CacheEnable mem /manual
+ CacheEnable fd /images
+ CacheEnable disk /
+
茯: | c激ャ潟潟潟菴ゃ≪潟 +鴻∴ |
---|---|
罕: | CacheIgnoreCacheControl On|Off |
: | CacheIgnoreCacheControl Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
Cache-Control: no-cache Pragma: no-store 鴻
+ 絲障絽吾c激ャ篏帥障CacheIgnoreCacheControl
+ cc篏帥篏筝吾с障
+ CacheIgnoreCacheControl
On
+ 鴻 no-cache ゃcc激ャ篏帥cャ<潟
+ 菴障茯荐若綽荀ャ<潟羆冴
+ c激ャ障
+ CacheIgnoreCacheControl On
+
茯: | 絎 HTTP c激ャ篆絖 + |
---|---|
罕: | CacheIgnoreHeaders header-string [header-string] ... |
: | CacheIgnoreHeaders None |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
RFC 2616 hop-by-hop HTTP c激ャ篆膊<障
+ 篁ヤ hop-by-hop 荅峨障с
+ CacheIgnoreHeaders
+ 荐絎≫c激ャ篆膊<障:
Connection
Keep-Alive
Proxy-Authenticate
Proxy-Authorization
TE
Trailers
Transfer-Encoding
Upgrade
CacheIgnoreHeaders
+ c激ャ篆膊<菴遵 HTTP 絎障
+ 箴違若c激ャ篆膊<鴻翫
+ с
CacheIgnoreHeaders
綣違
+ c激ャ篆膊< HTTP 腥榊遵阪鴻綵√с
+ c激ャ篆膊< hop-by-hop 翫
+ (RFC 2616 羣篏)
+ CacheIgnoreHeaders
None
+ 荐絎с障
+ CacheIgnoreHeaders Set-Cookie
+
+ CacheIgnoreHeaders None
+
Expires
c激ョ∞綽荀
+ CacheIgnoreHeaders
荐絎
+ 篆膊<mod_cache 篏絎臂障
+ 茯: | 綽膈 Last Modified <羂 |
---|---|
罕: | CacheIgnoreNoLastMod On|Off |
: | CacheIgnoreNoLastMod Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
絽吾Last-Modified 腟篆罩f祉<ャ<潟c激
+ 障(箴 mod_include
)
+ Last-Modified 祉羔サ箴
+ 倶障CacheIgnoreNoLastMod
+ cc篏帥Last-Modified ユ絎
+ ャ<潟сc激ャ絎с障ャ<潟
+ 腟篆罩f (Last-Modified) 号 (expiry) 翫号
+ CacheDefaultExpire
篏帥障
+ CacheIgnoreNoLastMod On
+
茯: | LastModified ヤ冴ャ号 (expiry) +荐膊帥絎 + |
---|---|
罕: | CacheLastModifiedFactor float |
: | CacheLastModifiedFactor 0.1 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
ャ<潟 Last-Modified ヤ<号 (expiry)
+ ヤ号腟篆罩f祉腟
+ 荐膊с障号罨<荐膊綣緇cс
+ 篏帥 factor
+ CacheLastModifiedFactor
ccф絎障
+
expiry-period = time-since-last-modified-date * factor
+ expiry-date = current-date + expiry-period
箴違ャ<潟 10 緇篆罩c + factor 0.1 с違ャ 10*0.1 = 1 + 荐絎障憜祉 3:00pm с違荐膊ャ + 3:00pm + 1hour = 4:00pm 障
+ +ャ CacheMaxExpire
ц┃絎
+ 紊сc障c翫CacheMaxExpire
+ 荐絎ゃ障
+ CacheLastModifiedFactor 0.5
+
茯: | ャ<潟c激ャ紊ф腱違х憗 |
---|---|
罕: | CacheMaxExpire seconds |
: | CacheMaxExpire 86400 (筝) |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
CacheMaxExpire
cc
+ c激ャ HTTP ャ<潟泣若障丈紊т腱
+ 篆絎障ゃ障ャ<潟紊сс腱育吟ゃ
+ 障紊уゃ(荐恰絵:鴻潟剛賢)ャ<潟宴
+ ャ<潟ャ箴翫с障
+ CacheMaxExpire 604800
+
茯: | no-store 絎鴻潟鴻c激ャ荅帥 |
---|---|
罕: | CacheStoreNoStore On|Off |
: | CacheStoreNoStore Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
絽 Cache-Control: no-store ゃ鴻潟鴻
+ c激ャ障CacheStoreNoCache
+ ccс筝吾с障
+ CacheStoreNoCache
On no-store ゃ
+ 純若鴻絲障c激ャ荅帥障
+ 茯荐若羆純若鴻 羆冴 c激ャ障
+ CacheStoreNoStore On
+
茯: | private 絎鴻潟鴻c激ャ荅帥 |
---|---|
罕: | CacheStorePrivate On|Off |
: | CacheStorePrivate Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_cache |
絽 Cache-Control: private ゃ鴻潟鴻
+ c激ャ障CacheStorePrivate
+ ccс筝吾с障
+ CacheStorePrivate
On private ゃ
+ 純若鴻絲障c激ャ荅帥障
+ 茯荐若羆純若鴻 羆冴 c激ャ障
+ CacheStorePrivate On
+
Apache HTTP サーバ バージョン 2.3
-説明: | CGI スクリプトの実行 |
---|---|
ステータス: | Base |
モジュール識別子: | cgi_module |
ソースファイル: | mod_cgi.c |
Mime タイプが application/x-httpd-cgi
- であるか、ハンドラ cgi-script
(Apache 1.1 以降)
- が指定されているファイルは CGI スクリプトとして扱われ、
- サーバにより実行され、その出力がクライアントに返されます。
- ファイルは、AddType
- ディレクティブに指定された 拡張子を名前に含むか、
- ScriptAlias
- ディレクトリに存在することによりこのタイプになります。
サーバが CGI スクリプトを実行するときには、
- DOCUMENT_ROOT
- と呼ばれる変数を環境に追加します。この変数は
- DocumentRoot
- の値を保持します。
Apache で CGI スクリプトを使用するためのイントロダクションは、 - CGI による動的コンテンツ - を参照してください。
- -Unix でマルチスレッドの MPM を使っている場合は、このモジュールの
- 代わりに mod_cgid
を使う必要があります。
- ユーザレベルではこの二つのモジュールは本質的には同一です。
サーバは CGI - 規格 で決められている CGI - 環境変数を設定します。以下のものは、条件付きで設定されます。
- -AcceptPathInfo
ディレクティブが明示的に off
- に設定されている場合は設定されません。デフォルトの、
- AcceptPathInfo
が
- 指定されていないときの振る舞いでは、mod_cgi
はパス情報
- (URI のスクリプトのファイル名の後に続く /more/path/info
) を
- 受け付けますが、コアはサーバはパス情報のあるリクエストに
- 対して 404 NOT FOUND エラーを返します。AcceptPathInfo
- ディレクティブを
- 省略すると、mod_cgi
へのリクエストに対して
- On
を
- 設定したのと同じ効果になります。HostnameLookups
- が on
(デフォルトでは off です)
- で、アクセスしているホストのアドレスの DNS
- の逆引きが実際にホスト名を見つけたときにのみ設定されます。IdentityCheck
- が on
に設定されていて、アクセスしているホストが
- ident プロトコルをサポートしているときにのみ設定されます。
- これは簡単に偽ることができ、クライアントとサーバの間に
- プロキシがあればまったく役に立たないので、
- この変数の値は信用できないということに注意してください。
- CGI スクリプトのデバッグは、正しく動作していないスクリプトの出力 - (標準出力とエラー) - を調べることができないために、難しい状態が続いていました。 - これらの Apache 1.2 以降にある - ディレクティブはより詳細なエラーのログ収集を提供します。
- -設定されているときには、CGI エラーログは適切に動作しないすべての - CGI をログ収集します。それぞれの正しく動作しない CGI - スクリプトは 複数の行にわたる情報がログ収集されます。最初の - 2 行は常に以下の書式です:
- -
- %% [time] request-line
- %% HTTP-status CGI-script-filename
-
エラーが、CGI スクリプトが実行できないというものである場合は、 - ログファイルはさらにもう 2 行書かれます:
- -
- %%error
- error-message
-
そうではなく、エラーが正しくないヘッダ情報を返す結果である場合 - (スクリプトのバグであることがよくあります)、 - 以下の情報がログ収集されます:
- -
- %request
- 受け取ったすべての HTTP リクエストヘッダ
- (もしあれば) POST や PUT の中身
- %response
- CGI スクリプトにより出力されたすべてのヘッダ
- %stdout
- CGI 標準出力
- %stderr
- CGI 標準エラー
-
(スクリプトが標準出力や標準エラーに何も出力しなかった場合は、 - %stdout や %stderr はありません)。
- -説明: | CGI スクリプトのエラーログファイルの場所 |
---|---|
構文: | ScriptLog file-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_cgi , mod_cgid |
ScriptLog
ディレクティブは CGI スクリプトの
- エラーログファイルを設定します。ScriptLog
が
- 設定されていないときは、
- エラーログは作成されません。設定されているときは、CGI
- のエラーはすべて引数として与えられているファイル名にログされます。
- 相対パスで指定されているときは、
- ServerRoot
からの相対パスとして
- 扱われます。
- ScriptLog logs/cgi_log
-
このログは子プロセスが実行されているユーザとしてオープンされます。
- すなわち、User
ディレクティブで指定された
- ユーザです。これは、スクリプトログが書かれるディレクトリがそのユーザで
- 書き込み可能か、スクリプトファイルが手動で作成され、そのユーザで
- 書き込み可能になっている必要があるということです。スクリプトログを
- アクセスログなどのためのログディレクトリに書かれるようにしたときは、
- そのディレクトリを子プロセスを実行しているユーザの権限で
- 書き込み可能にはしないようにしてください。
スクリプトのログ収集は CGI スクリプトを書くときの - デバッグ用の機能として意図されていて、通常のサーバで - 常に使用されるようには意図されていないということに注意してください。 - 速度や効率は最適化されておらず、設計された以外の方法で使用されると - セキュリティの問題があるかもしれません。
- -説明: | スクリプトログに記録される PUT や POST リクエストの内容の上限 |
---|---|
構文: | ScriptLogBuffer bytes |
デフォルト: | ScriptLogBuffer 1024 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_cgi , mod_cgid |
大きな本体を受け取ったときにログファイルがすぐに大きくなりすぎる - 問題を避けるために、ファイルにログ収集される PUT と POST - の本体の大きさは制限されています。デフォルトでは、1024 - バイトまでがログ収集されますが、 - このディレクティブはそれを変更することができます。 -
- -説明: | CGI スクリプトのログファイルの大きさの上限 |
---|---|
構文: | ScriptLogLength bytes |
デフォルト: | ScriptLogLength 10385760 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_cgi , mod_cgid |
ScriptLogLength
は CGI スクリプトのログファイル
- の大きさを制限するために使用することができます。ログファイルは
- CGI のエラー毎に大量の情報 (リクエストのすべてのヘッダ、
- すべての出力)をログしますので、すぐに大きなファイルになります。
- この大きさの制限がないことによる問題を防ぐために、
- このディレクティブを使って CGI のログファイルの
- 最大のファイルサイズを設定することができます。
- ファイルがこの大きさを超えた場合は、それ以上は書き込まれません。
Apache HTTP 泣若 若吾с 2.3
+茯: | CGI 鴻絎茵 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | cgi_module |
純若鴻<ゃ: | mod_cgi.c |
Mime 帥ゃ application/x-httpd-cgi
+ с潟 cgi-script
(Apache 1.1 篁ラ)
+ 絎<ゃ CGI 鴻宴
+ 泣若絎茵阪ゃ≪潟菴障
+ <ゃAddType
+ cc絎 ≦宍絖
+ ScriptAlias
+ c絖帥ゃ障
泣若 CGI 鴻絎茵
+ DOCUMENT_ROOT
+ 若違紊違医菴遵障紊違
+ DocumentRoot
+ ゃ篆障
Apache CGI 鴻篏睡ゃ潟激с潟 + CGI 潟潟潟 + с
+ +Unix с鴻 MPM 篏帥c翫≪吾ャ若
+ 篁c mod_cgid
篏帥綽荀障
+ 若吟с篋ゃ≪吾ャ若莖筝с
泣若 CGI + 荀 ф浦 CGI + 医紊違荐絎障篁ヤ>散篁ц┃絎障
+ +AcceptPathInfo
cc腓榊 off
+ 荐絎翫荐絎障
+ AcceptPathInfo
+ 絎сmod_cgi
号
+ (URI 鴻<ゃ緇膓 /more/path/info
)
+ 篁障潟≪泣若号宴鴻
+ 絲障 404 NOT FOUND 若菴障AcceptPathInfo
+ cc
+ ャmod_cgi
吾鴻絲障
+ On
+ 荐絎号障HostnameLookups
+ on
(с off с)
+ с≪祉鴻鴻≪鴻 DNS
+ 綣絎鴻荀ゃ粋┃絎障IdentityCheck
+ on
荐絎≪祉鴻鴻
+ ident 潟泣若粋┃絎障
+ 膂≦純сゃ≪潟泣若
+ 激違障c鏄鴻腴с
+ 紊違ゃ篆∞с羈
+ CGI 鴻違罩c篏鴻阪 + (罔羣阪) + 茯帥鴻сc倶膓障 + Apache 1.2 篁ラ + cc荅括完若医箴障
+ +荐絎CGI 若違篏鴻 + CGI 医障罩c篏 CGI + 鴻 茲違茵宴医障 + 2 茵絽吾篁ヤ後с:
+ +
+ %% [time] request-line
+ %% HTTP-status CGI-script-filename
+
若CGI 鴻絎茵сс翫 + 違<ゃ 2 茵吾障:
+ +
+ %%error
+ error-message
+
с若罩c宴菴腟с翫 + (鴻違с障) + 篁ヤ宴医障:
+ +
+ %request
+ c鴻 HTTP 鴻
+ () POST PUT 筝荳
+ %response
+ CGI 鴻阪鴻
+ %stdout
+ CGI 罔羣阪
+ %stderr
+ CGI 罔羣
+
(鴻罔羣阪罔羣若篏阪c翫 + %stdout %stderr 障)
+ +茯: | CGI 鴻若違<ゃ贋 |
---|---|
罕: | ScriptLog file-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_cgi , mod_cgid |
ScriptLog
cc CGI 鴻
+ 若違<ゃ荐絎障ScriptLog
+ 荐絎
+ 若違篏障荐絎CGI
+ 若鴻綣違筝<ゃ違障
+ 後障鴻ф絎
+ ServerRoot
後障鴻
+ 宴障
+ ScriptLog logs/cgi_log
+
違絖祉鴻絎茵若吟若潟障
+ User
ccф絎
+ 若吟с鴻違吾c若吟
+ 吾莨若水純鴻<ゃт若吟
+ 吾莨若水純c綽荀с鴻違
+ ≪祉鴻違違c吾
+ c絖祉鴻絎茵若吟罔
+ 吾莨若水純
鴻医 CGI 鴻吾 + 亥罘純潟絽吾泣若 + 絽吾篏睡潟羈 + 綺合荐荐篁ュ号т戎 + 祉ャc馹障
+ +Apache HTTP サーバ バージョン 2.3
-説明: | 外部 CGI デーモンを使った CGI スクリプトの実行 |
---|---|
ステータス: | Base |
モジュール識別子: | cgid_module |
ソースファイル: | mod_cgid.c |
互換性: | Unix のスレッド MPM のみ |
最適化が施されていることと、以下で説明されている追加の ScriptSock
ディレクティブを除いては、
- mod_cgid
は mod_cgi
と同様の
- 動作をします。Apache と CGI に関する詳細は
- mod_cgi
の概要を読んでください。
Unix オペレーティングシステムの中には、マルチスレッドのサーバから
- プロセスを fork するのが非常にコストの高い動作になっているものがあります。
- 理由は、新しいプロセスが親プロセスのスレッドすべてを複製するからです。
- 各 CGI 起動時にこのコストがかかるのを防ぐために、mod_cgid
- は子プロセスを fork して CGI スクリプトを実行するための
- 外部デーモンを実行します。
- 主サーバは unix ドメインソケットを使ってこのデーモンと通信します。
コンパイル時にマルチスレッド MPM が選ばれたときは
- mod_cgi
の代わりに必ずこのモジュールが使用されます。
- ユーザのレベルではこのモジュールの設定と動作は mod_cgi
- とまったく同じです。唯一の例外は ScriptSock
ディレクティブの
- 追加で、このディレクティブは CGI デーモンとの通信用のソケットの名前を
- 指定します。
説明: | CGI デーモンとの通信に使われるソケットの名前 |
---|---|
構文: | ScriptSock file-path |
デフォルト: | ScriptSock logs/cgisock |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_cgid |
このディレクティブは CGI デーモンとの通信に使われるソケットの - 名前を設定します。ソケットは Apache が起動されたユーザ (通常 root) の - パーミッションを用いてオープンされます。CGI スクリプトとの通信の - セキュリティを保つために、ソケットの存在するディレクトリに - 他のユーザが書き込み権限を持っていないようにすることが重要です。
- -
- ScriptSock /var/run/cgid.sock
-
Apache HTTP 泣若 若吾с 2.3
+茯: | 紊 CGI 若≪潟篏帥c CGI 鴻絎茵 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | cgid_module |
純若鴻<ゃ: | mod_cgid.c |
篋: | Unix 鴻 MPM |
純篁ヤц菴遵 ScriptSock
ccゃ
+ mod_cgid
mod_cgi
罕
+ 篏障Apache CGI ≪荅括完
+ mod_cgi
网荀茯с
Unix 若c潟違激鴻筝鴻泣若
+ 祉鴻 fork 絽吾潟鴻蕭篏c障
+ 宴違祉鴻荀祉鴻鴻鴻茲茖純с
+ CGI 莎桁潟鴻蚊mod_cgid
+ 絖祉鴻 fork CGI 鴻絎茵
+ 紊若≪潟絎茵障
+ 筝祉泣若 unix <ゃ潟純宴篏帥c若≪潟篆<障
潟潟ゃ鴻 MPM 吾違
+ mod_cgi
篁c綽≪吾ャ若篏睡障
+ 若吟с≪吾ャ若荐絎篏 mod_cgi
+ 障cс筝箴紊 ScriptSock
cc
+ 菴遵сcc CGI 若≪潟篆∞純宴
+ 絎障
Apache HTTP サーバ バージョン 2.3
-説明: | 分散オーサリングとバージョン管理 -(WebDAV) 機能 |
---|---|
ステータス: | Extension |
モジュール識別子: | dav_module |
ソースファイル: | mod_dav.c |
このモジュールはクラス 1 とクラス 2 の - WebDAV - ('ウェブベースの分散オーサリングとバージョン管理') - 機能を Apache に提供します。 - この HTTP プロトコルの拡張により、リモートのウェブサーバ上にある - リソースやコレクションを - 作成、移動、複製、削除できるようになります。
-mod_dav を有効にするには、httpd.conf
- ファイル中のコンテナに次を加えます:
Dav On
これは DAV ファイルシステムプロバイダを有効にします。DAV
- ファイルシステムプロバイダは mod_dav_fs
- モジュールで実装されています。ですから、このモジュールはコンパイル時に
- サーバに組み込まれているか、あるいは
- LoadModule
- を使用して実行時にロードされている必要があります。
さらに、DAV ロックデータベースの場所が
- DavLockDB
ディレクティブを使って
- httd.conf
ファイルのグローバルセクションに指定されている
- 必要があります。
- DavLockDB /usr/local/apache2/var/DavLock
-
ロックデータベースファイルのあるディレクトリは Apache が実行されている
- User
と Group
に書き込み権限がある必要があります。
<Limit>
- 節を <Location>
- ディレクティブ内部に追加して、DAV が有効な場所への
- アクセスを制限することもできます。DAV クライアントが
- 一度のリクエストで送信できる最大バイト数を指定したいときは、
- LimitXMLRequestBody
- ディレクティブを使用する必要があります。「通常の」
- LimitRequestBody
- ディレクティブは DAV リクエストに対しては効力を持ちません。
- DavLockDB /usr/local/apache2/var/DavLock
-
- <Location /foo>
-
- Dav On
-
- AuthType Basic
- AuthName DAV
- AuthUserFile user.passwd
-
- <LimitExcept GET OPTIONS>
-
- require user admin
-
- </LimitExcept>
-
- </Location>
-
mod_dav
は Greg Stein さんの Apache 1.3 用の mod_dav に
- 由来するものです。そのサイトからより多くの情報を手に入れることができます。
DAV のアクセスメソッドは遠隔クライアントがサーバのファイルを
- 操作することを可能にしますので、 mod_dav
を使用する
- 前に、サーバが安全であることを特に注意して確認しなければなりません。
サーバ上の DAV が使用可能になっている場所はすべて認証で保護してください。
- HTTP 基本認証の使用は推奨できません。少なくとも
- mod_auth_digest
モジュールで提供される HTTP
- ダイジェスト認証を用いるべきです。WebDAV クライアントのほとんどは
- この認証方法に対応しています。代わりに、SSL が
- 有効なコネクションを通した基本認証を使うこともできます。
mod_dav
がファイルを操作できるようにするためには、
- 管理下のディレクトリとファイルとに Apache が実行されている User
と Group
で書き込み可能である必要があります。
- 新しく作成されるファイルもこの User
- と Group
に所有される
- ことになります。この理由から、そのアカウントへのアクセスを制御することは
- 重要です。DAV リポジトリは Apache 専用のものだとみなされています。
- Apache 以外の方法でファイルを修正すること (例えば FTP やファイルシステム
- 用のツールなどを使って) は許可されていません。
mod_dav
はいろいろな種類のサービス拒否攻撃にさらされる
- かもしれません。LimitXMLRequestBody
ディレクティブを使うと
- 大きな DAV リクエストを解析するときに消費されるメモリの量を制限することが
- できます。DavDepthInfinity
ディレクティブは
- PROPFIND
リクエストが巨大リポジトリで大量のメモリを消費するのを
- 防ぐことができます。他のサービス拒否攻撃には単純に使用可能なディスク領域を
- 多くの大きなファイルで埋めてしまうんものがあります。これを直接防ぐ方法は
- Apache にはありませんので、信用できないユーザに DAV アクセスを提供するのは
- 避けた方が良いでしょう。
よくある要求に、mod_dav
を使って動的なファイル
- (PHP スクリプト、CGI スクリプトなど) を操作したいというものがあります。
- これの実現は、GET
リクエストはスクリプトの内容をダウンロードさせる
- 代わりに、スクリプトを常に実行させてしまうので難しくなっています。
- これを回避する方法には、二つの違う URL を同じコンテンツにマップし、
- 一つはスクリプトを実行させ、もう一つはダウンロードさせたり、DAV から
- 操作されたりするように設定するというものがあります。
-Alias /phparea /home/gstein/php_files
-Alias /php-source /home/gstein/php_files
-<Location /php-source>
-
- DAV On
- ForceType text/plain
-
-</Location>
-
この設定により、http://example.com/phparea
を PHP スクリプトの
- 出力をアクセスするために使うことができ、
- http://example.com/php-source
を DAV クライアントによる
- が操作のために使うことができます。
説明: | WebDAV HTTP メソッドを有効にします |
---|---|
構文: | Dav On|Off|provider-name |
デフォルト: | Dav Off |
コンテキスト: | ディレクトリ |
ステータス: | Extension |
モジュール: | mod_dav |
与えられたコンテナで WebDAV HTTP メソッドが使えるようにするには - 次のようにします。
- -
- <Location /foo>
-
- Dav On
-
- </Location>
-
On
という指定は実際には mod_dav_fs
- で提供されているデフォルトのプロバイダ、filesystem
- へのエイリアスになっています。一度あるロケーションで DAV
- を有効にした後は、そのサブロケーションで無効化することはできない
- ということに注意してください。完全な設定例は上記のセクション をご覧下さい。
説明: | PROPFIND, Depth: Infinity リクエストを許可します |
---|---|
構文: | DavDepthInfinity on|off |
デフォルト: | DavDepthInfinity off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
ステータス: | Extension |
モジュール: | mod_dav |
'Depth: Infinity' を含んでいる
- PROPFIND
リクエストを処理できるようにするには、
- DavDepthInfinity
- ディレクティブを使います。このタイプのリクエストは
- denial-of-service アタックとなりうるので、
- デフォルトでは許可されていません。
説明: | サーバが DAV リソースのロックを維持する最小時間です。 - |
---|---|
構文: | DavMinTimeout seconds |
デフォルト: | DavMinTimeout 0 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
ステータス: | Extension |
モジュール: | mod_dav |
クライアントが DAV リソースロックを要求した場合、 - ロックがサーバによって自動的に解除されるまでの時間を - 同時に指定することができます。この値は単なるリクエストであって、 - サーバはこれを無視することもできますし、 - 任意の値をクライアントに通知することもできます。
- -クライアントに戻すロックタイムアウトの最小時間を、
- 秒で、指定するために DavMinTimeout
- ディレクティブを使います。
- マイクロソフトのウェブフォルダのデフォルトでは 120 秒ですが;
- ネットワークの遅延のせいでクライアントがロックを失うのを減らすために、
- DavMinTimeout
を使って
- これをもっと大きな値 (例えば 600 秒) に上書きできます。
- <Location /MSWord>
-
- DavMinTimeout 600
-
- </Location>
-
Apache HTTP 泣若 若吾с 2.3
+茯: | c若泣潟違若吾с括∞ +(WebDAV) 罘 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | dav_module |
純若鴻<ゃ: | mod_dav.c |
≪吾ャ若 1 2 + WebDAV + ('с若鴻c若泣潟違若吾с括∞') + 罘純 Apache 箴障 + HTTP 潟≦宍≪若с泣若筝 + 純若鴻潟激с潟 + 篏腱糸茲茖純ゃс障
+mod_dav 鴻httpd.conf
+ <ゃ筝潟潟罨<障:
Dav On
DAV <ゃ激鴻ゃ鴻障DAV
+ <ゃ激鴻ゃ mod_dav_fs
+ ≪吾ャ若у茖障с≪吾ャ若潟潟ゃ
+ 泣若腟粋昭障
+ LoadModule
+ 篏睡絎茵若綽荀障
DAV 若帥若鴻贋
+ DavLockDB
cc篏帥c
+ httd.conf
<ゃ違若祉激с潟絎
+ 綽荀障
+ DavLockDB /usr/local/apache2/var/DavLock
+
若帥若鴻<ゃc Apache 絎茵
+ User
Group
吾莨若炊┤綽荀障
<Limit>
+ 膀 <Location>
+ cc菴遵DAV 鴻贋吾
+ ≪祉鴻狗с障DAV ゃ≪潟
+ 筝綺鴻ч篆<с紊сゃ違絎
+ LimitXMLRequestBody
+ cc篏睡綽荀障絽吾
+ LimitRequestBody
+ cc DAV 鴻絲障劫<障
+ DavLockDB /usr/local/apache2/var/DavLock
+
+ <Location /foo>
+
+ Dav On
+
+ AuthType Basic
+ AuthName DAV
+ AuthUserFile user.passwd
+
+ <LimitExcept GET OPTIONS>
+
+ require user admin
+
+ </LimitExcept>
+
+ </Location>
+
mod_dav
Greg Stein Apache 1.3 mod_dav
+ 掩ャс泣ゃ紊宴ャс障
DAV ≪祉鴻<純ゃ≪潟泣若<ゃ
+ 篏純障с mod_dav
篏睡
+ 泣若絎с鴻羈腆肴違障
泣若筝 DAV 篏睡純c贋鴻茯荐若т茘激
+ HTTP 堺茯荐若篏睡ィ絅с障絨
+ mod_auth_digest
≪吾ャ若ф箴 HTTP
+ ゃ吾с鴻茯荐若鴻сWebDAV ゃ≪潟祉
+ 茯荐惹号絲上障篁cSSL
+ 鴻潟激с潟堺茯荐若篏帥с障
mod_dav
<ゃ篏с
+ 膊∞筝c<ゃ Apache 絎茵 User
Group
ф吾莨若水純с綽荀障
+ 違鋎<ゃ User
+ Group
+ 障宴≪潟吾≪祉鴻九勝
+ 荀сDAV 吾 Apache 絨帥障
+ Apache 篁ュ号с<ゃ篆罩c (箴 FTP <ゃ激鴻
+ 若篏帥c) 荐怨障
mod_dav
腮蕁泣若号紙
+ 障LimitXMLRequestBody
cc篏帥
+ 紊с DAV 鴻茹f羔莢祉<≪狗
+ с障DavDepthInfinity
cc
+ PROPFIND
鴻綏紊с吾уぇ<≪羔莢祉
+ 蚊с障篁泣若号紙膣篏睡純c鴻
+ 紊紊с<ゃу障障贋・蚊号
+ Apache 障с篆∞с若吟 DAV ≪祉鴻箴
+ 帥鴻с
荀羆mod_dav
篏帥c<ゃ
+ (PHP 鴻CGI 鴻) 篏障
+ 絎憗GET
鴻鴻絎鴻潟若
+ 篁c鴻絽吾絎茵障чcc障
+ 帥号篋ゃ URL 潟潟潟
+ 筝ゃ鴻絎茵筝ゃ潟若DAV
+ 篏荐絎障
+Alias /phparea /home/gstein/php_files
+Alias /php-source /home/gstein/php_files
+<Location /php-source>
+
+ DAV On
+ ForceType text/plain
+
+</Location>
+
荐絎http://example.com/phparea
PHP 鴻
+ 阪≪祉鴻篏帥с
+ http://example.com/php-source
DAV ゃ≪潟
+ 篏篏帥с障
茯: | WebDAV HTTP <純鴻障 |
---|---|
罕: | Dav On|Off|provider-name |
: | Dav Off |
潟潟鴻: | c |
鴻若帥: | Extension |
≪吾ャ若: | mod_dav |
筝潟潟 WebDAV HTTP <純篏帥 + 罨<障
+ +
+ <Location /foo>
+
+ Dav On
+
+ </Location>
+
On
絎絎 mod_dav_fs
+ ф箴ゃfilesystem
+ 吾ゃ≪鴻c障筝綺宴若激с潟 DAV
+ 鴻緇泣宴若激с潟≦劫с
+ 羈絎荐絎箴筝荐祉激с 荀т
茯: | PROPFIND, Depth: Infinity 鴻荐怨障 |
---|---|
罕: | DavDepthInfinity on|off |
: | DavDepthInfinity off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Extension |
≪吾ャ若: | mod_dav |
'Depth: Infinity' с
+ PROPFIND
鴻с
+ DavDepthInfinity
+ cc篏帥障帥ゃ鴻
+ denial-of-service ≪帥с
+ с荐怨障
茯: | 泣若 DAV 純若鴻膓絨с + |
---|---|
罕: | DavMinTimeout seconds |
: | DavMinTimeout 0 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Extension |
≪吾ャ若: | mod_dav |
ゃ≪潟 DAV 純若鴻荀羆翫 + 泣若c茹iゃ障с + 絎с障ゃ鴻сc + 泣若∴с障 + 篁紙ゃゃ≪潟ャс障
+ +ゃ≪潟祉帥ゃ≪絨
+ 腱с絎 DavMinTimeout
+ cc篏帥障
+ ゃ純сс 120 腱с鐚
+ 若綮吟сゃ≪潟紊宴羝
+ DavMinTimeout
篏帥c
+ c紊с (箴 600 腱) 筝吾с障
+ <Location /MSWord>
+
+ DavMinTimeout 600
+
+ </Location>
+
Apache HTTP サーバ バージョン 2.3
-説明: | mod_dav のためのファイルシステムプロバイダ |
---|---|
ステータス: | Extension |
モジュール識別子: | dav_fs_module |
ソースファイル: | mod_dav_fs.c |
このモジュールは mod_dav
- のサービスを必要とします。mod_dav
- のサポートモジュールとして動作し、サーバファイルシステム上に
- 位置するリソースへのアクセスを提供します。このプロバイダの正式な名前は
- filesystem
です。mod_dav
- バックエンドプロバイダは Dav
- ディレクティブを使用して起動されます。
- Dav filesystem
-
filesystem
は mod_dav
- のデフォルトプロバイダになっていますから、代わりに単に
- On
と指定することもできます。
説明: | DAV ロックデータベースの位置 |
---|---|
構文: | DavLockDB file-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_dav_fs |
ロックデータベースへのフルパスを、拡張子を除いた形で
- 指定するには、DavLockDB
- を使います。パスが絶対パスでなければ、ServerRoot
からの相対パスと解釈されます。
- mod_dav_fs
実装では、ユーザロックを
- 追跡するために SDBM データベースを使います。
- DavLockDB logs/DavLock
-
Apache HTTP 泣若 若吾с 2.3
+茯: | mod_dav <ゃ激鴻ゃ |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | dav_fs_module |
純若鴻<ゃ: | mod_dav_fs.c |
≪吾ャ若 mod_dav
+ 泣若鴻綽荀障mod_dav
+ 泣若≪吾ャ若篏泣若<ゃ激鴻筝
+ 篏臀純若鴻吾≪祉鴻箴障ゃ罩e
+ filesystem
сmod_dav
+ 潟ゃ Dav
+ cc篏睡莎桁障
+ Dav filesystem
+
filesystem
mod_dav
+ ゃc障篁c
+ On
絎с障
茯: | DAV 若帥若鴻篏臀 |
---|---|
罕: | DavLockDB file-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_dav_fs |
若帥若鴻吾鴻≦宍絖ゃ綵≪
+ 絎DavLockDB
+ 篏帥障鴻腟九障鴻с違ServerRoot
後障鴻茹i障
+ mod_dav_fs
絎茖с若吟
+ 菴処掘 SDBM 若帥若鴻篏帥障
+ DavLockDB logs/DavLock
+
Apache HTTP サーバ バージョン 2.3
-説明: | mod_dav 用の汎用ロックモジュール |
---|---|
ステータス: | Extension |
モジュール識別子: | dav_lock_module |
ソースファイル: | mod_dav_lock.c |
互換性: | バージョン 2.1 以降 |
このモジュールは mod_dav
のどのバックエンド
- からでも使える汎用ロック API を提供します。
- 使用には最低限 mod_dav
- を必要としますが、これを利用するバックエンドが存在しないと役に立たないので、
- そのような場合はサーバに読み込むべきではありません。
- mod_dav_lock
- を実際に利用するバックエンドモジュールの例としては subversion
- プロバイダモジュールの mod_dav_svn があります。
mod_dav_fs
は特化された専用のバージョンを
- 使うため、この汎用モジュールは必要ないことに注意して
- ください。
mod_dav_lock
を機能させるには、
- 以下で説明されている DavGenericLockDB
を使って
- ロックデータベースの場所を指定するだけです。
ロックを提供している関数へのポインタを取得するためには、
- ap_lookup_provider
API を、引数 dav-lock
,
- generic
, 0
を指定して使う必要が
- あります。
説明: | DAV ロックデータベースの場所 |
---|---|
構文: | DavGenericLockDB file-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
ステータス: | Extension |
モジュール: | mod_dav_lock |
DavGenericLockDB
ディレクティブを
- 使って、拡張子を除いたロックデータベースへのフルパスを
- 指定します。絶対パスでないときは ServerRoot
からの相対パスとして
- 扱われます。mod_dav_lock
の実装ではユーザの
- ロックを追跡するのに SDBM データベースを使います。
- DavGenericLockDB var/DavLock
-
ロックデータベースファイルのあるディレクトリは
- Apache が実行されている User
- と Group
によって
- 書き込み可能でなければなりません。セキュリティ上の理由から、
- 既存のディレクトリのパーミッションを変更するのではなく、
- 専用のディレクトリを作るのが良いでしょう。上の例では、
- Apache は ServerRoot
の下の var/
- ディレクトリに、ファイル名の本体が DavLock
で
- サーバが選択した拡張子を持つファイルを作成します。
Apache HTTP 泣若 若吾с 2.3
+茯: | mod_dav 羆≪吾ャ若 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | dav_lock_module |
純若鴻<ゃ: | mod_dav_lock.c |
篋: | 若吾с 2.1 篁ラ |
≪吾ャ若 mod_dav
潟
+ с篏帥羆 API 箴障
+ 篏睡篏 mod_dav
+ 綽荀障潟絖綵鴻腴с
+ 翫泣若茯粋昭鴻с障
+ mod_dav_lock
+ 絎潟≪吾ャ若箴 subversion
+ ゃ≪吾ャ若 mod_dav_svn 障
mod_dav_fs
劫絨若吾с潟
+ 篏帥羆≪吾ャ若綽荀羈
+
mod_dav_lock
罘純
+ 篁ヤц DavGenericLockDB
篏帥c
+ 若帥若鴻贋絎с
箴∽違吾ゃ潟帥緇
+ ap_lookup_provider
API 綣 dav-lock
,
+ generic
, 0
絎篏帥綽荀
+ 障
茯: | DAV 若帥若鴻贋 |
---|---|
罕: | DavGenericLockDB file-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Extension |
≪吾ャ若: | mod_dav_lock |
DavGenericLockDB
cc
+ 篏帥c≦宍絖ゃ若帥若鴻吾鴻
+ 絎障腟九障鴻с ServerRoot
後障鴻
+ 宴障mod_dav_lock
絎茖с若吟
+ 菴処掘 SDBM 若帥若鴻篏帥障
+ DavGenericLockDB var/DavLock
+
若帥若鴻<ゃc
+ Apache 絎茵 User
+ Group
c
+ 吾莨若水純с違障祉ャd宴
+ √c若激с潟紊眼с
+ 絨c篏с筝箴с
+ Apache ServerRoot
筝 var/
+ c<ゃ篏 DavLock
+ 泣若御≦宍絖ゃ<ゃ篏障
Apache HTTP サーバ バージョン 2.3
-説明: | クライアントへ送られる前にコンテンツを圧縮する |
---|---|
ステータス: | Extension |
モジュール識別子: | deflate_module |
ソースファイル: | mod_deflate.c |
mod_deflate
モジュールは DEFLATE
- 出力フィルタを提供します。これはサーバからの出力を、ネットワークを
- 通してクライアントに送る前に圧縮することを可能にします。
下にせっかちな人向けの簡単な設定例を示します。
- -
- AddOutputFilterByType DEFLATE text/html text/plain text/xml
-
以下の設定はコンテンツをより圧縮しますが、ずっと複雑な設定になります。 - 設定の隅々までよく理解しないで使わないでください。
- -
- <Location />
-
- # Insert filter
- SetOutputFilter DEFLATE
-
- # Netscape 4.x has some problems...
- BrowserMatch ^Mozilla/4 gzip-only-text/html
-
- # Netscape 4.06-4.08 have some more problems
- BrowserMatch ^Mozilla/4\.0[678] no-gzip
-
- # MSIE masquerades as Netscape, but it is fine
- # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
-
- # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
- # the above regex won't work. You can use the following
- # workaround to get the desired effect:
- BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
-
- # Don't compress images
- SetEnvIfNoCase Request_URI \
-
- \.(?:gif|jpe?g|png)$ no-gzip dont-vary
-
-
- # Make sure proxies don't deliver the wrong content
- Header append Vary User-Agent env=!dont-vary
-
- </Location>
-
圧縮機能は DEFLATE
フィルタ
- により実装されています。以下のディレクティブはそのディレクティブのある
- コンテナ中のドキュメントを圧縮するようにします:
- SetOutputFilter DEFLATE
-
よく使われているブラウザでは、すべてのコンテンツに対する
- 圧縮を扱えるわけではありません。ですから、gzip-only-text/html
- ノートを 1
にして、html ファイルに対してのみ
- 圧縮が働くようにした方がよいかもしれません (以下参照)
- この値を 1
以外の値に設定した場合は無視されます。
通常、特定のMIMEタイプについてのみ圧縮したいのであれば、
- AddOutputFilterByType
- ディレクティブを使用します。次に Apache のドキュメントの html
- ファイルのみの圧縮を有効にする例を示します。
- <Directory "/your-server-root/manual">
-
- AddOutputFilterByType DEFLATE text/html
-
- </Directory>
-
全てのファイルタイプでの圧縮に問題を抱えているブラウザに対しては、
- BrowserMatch
- ディレクティブを使用して、特定のブラウザに no-gzip
- ノートをセットし、圧縮が行なわれないようにします。
- no-gzip
と gzip-only-text/html
- を組み合わせることで上手く対処できます。
- この場合、前者が後者をオーバーライドします。
- 上記の設定例の抜粋を
- 次に示しますのでご覧下さい。
- BrowserMatch ^Mozilla/4 gzip-only-text/html
- BrowserMatch ^Mozilla/4\.0[678] no-gzip
- BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
-
まず始めに User-Agent
文字列から Netscape Navigator
- 4.x であるかどうかを調べます。これらのバージョンでは、
- text/html
以外のタイプの圧縮を扱うことができません。
- 4.06, 4.07, 4.08 は html ファイルの伸張にも問題を抱えています。
- ですからこれらに対しては、完全に deflate フィルタをオフにします。
3 番目の BrowserMatch
- ディレクティブで、推測したユーザーエージェントを修正します。
- なぜなら Microsoft Internet Explorer も "Mozilla/4" と特定されますが、
- これらは実際には圧縮を扱うことができるからです。
- User-Agent
ヘッダを "MSIE"
- (\b
は「単語の境界」を意味します) の追加文字で検査して、
- これ以前に設定した制限を再び解除します。
DEFLATE
フィルタは必ず、PHP や SSI といった RESOURCE
- フィルタの後になります。
- DEFLATE フィルタは内部的なサブリクエストを関知しません。
- mod_deflate
モジュールは、gzip 圧縮されたレスポンス
- 本文を inflate/uncompress するフィルタも提供しています。
- この機能を有効にするには、SetOutputFilter
- や AddOutputFilter
を使って、
- INFLATE
フィルタを出力フィルタチェインに挿入します。
- 例えば次のようにします。
- <Location /dav-area>
-
- ProxyPass http://example.com/
- SetOutputFilter INFLATE
-
- </Location>
-
この例では、example.com からの gzip 圧縮された出力を伸長し、 - その他のフィルタがさらにその出力を処理できるようにします。 -
- - -mod_deflate
モジュールは、gzip
- で圧縮されたリクエスト本体を伸張するフィルタも提供しています。
- この機能を有効にするには、SetInputFilter
- か AddInputFilter
を使用して、
- DEFLATE
フィルタを入力フィルタチェインに組み込みます。
- 例えば次のようになります。
- <Location /dav-area>
-
- SetInputFilter DEFLATE
-
- </Location>
-
この設定であれば、Content-Encoding: gzip
- ヘッダを含むリクエストが来ると、本体は自動的に伸張されます。
- gzip リクエスト本体を送信するブラウザはあまりありません。
- しかし、例えば WebDAV
- クライアントの幾つかなど、特別なアプリケーションでリクエストの
- 圧縮を実際にサポートしているものもあります。
リクエスト本体それ自体を評価する場合は、Content-Length
- ヘッダを信用しないでください。Content-Length ヘッダは、
- クライアントから送信されるデータの長さを反映しているのであって、
- 伸張されたデータストリームのバイトカウントではありません。
mod_deflate
モジュールは Vary: Accept-Encoding
- HTTP 応答ヘッダを送信して、適切な Accept-Encoding
- リクエストヘッダを送信するクライアントに対してのみ、
- プロクシサーバがキャッシュした応答を送信するように注意を喚起します。
- このようにして、圧縮を扱うことのできないクライアントに
- 圧縮された内容が送られることのないようにします。
もし特別に何かに依存して除外したい場合、例えば User-Agent
- ヘッダなどに依存している場合、手動で Vary
ヘッダを設定して、
- 追加の制限についてプロクシサーバに注意を行なう必要があります。
- 例えば User-Agent
に依存して DEFLATE
- を追加する典型的な設定では、次のように追加することになります。
- Header append Vary User-Agent
-
リクエストヘッダ以外の情報 (例えば HTTP バージョン)
- に依存して圧縮するかどうか決める場合、
- Vary
ヘッダを *
に設定する必要があります。
- このようにすると、仕様に準拠したプロクシはキャッシュを全く行なわなくなります。
- Header set Vary *
-
説明: | zlib が一度に圧縮する塊の大きさ |
---|---|
構文: | DeflateBufferSize value |
デフォルト: | DeflateBufferSize 8096 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_deflate |
DeflateBufferSize
ディレクティブは
- zlib が一度に圧縮する塊の大きさをバイト単位で指定します。
説明: | 出力に対して行なう圧縮の程度 |
---|---|
構文: | DeflateCompressionLevel value |
デフォルト: | Zlib のデフォルト |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_deflate |
互換性: | This directive is available since Apache 2.0.45 |
DeflateCompressionLevel
ディレクティブは
- 圧縮の程度を設定します。大きな値では、より圧縮が行なわれますが、
- CPU 資源を消費します。
値は 1 (低圧縮) から 9 (高圧縮) です。
- -説明: | ロギング用に圧縮比をメモに追加 |
---|---|
構文: | DeflateFilterNote [type] notename |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_deflate |
互換性: | type is available since Apache 2.0.45 |
DeflateFilterNote
ディレクティブは
- 圧縮比に関するメモがリクエストに付加されることを指定します。
- メモ (note) の名前はディレクティブに指定された値です。
- メモはアクセスログに
- 値を記録し、統計を取る目的にも使えます。
- DeflateFilterNote ratio
-
- LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
- CustomLog logs/deflate_log deflate
-
ログからもっと精密な値を抽出したい場合は、type - 引数を使用して、データタイプをログのメモとして残すように指定できます。 - type は次のうちの一つです。
- -Input
Output
Ratio
出力 / 入力 * 100
) をメモに保存する。
- type 引数を省略した場合は、これがデフォルトとなります。まとめると、次のようにログを取ることになるでしょう。
- -
- DeflateFilterNote Input instream
- DeflateFilterNote Output outstream
- DeflateFilterNote Ratio ratio
-
- LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
- CustomLog logs/deflate_log deflate
-
説明: | zlib が圧縮に使うメモリのレベルを指定 |
---|---|
構文: | DeflateMemLevel value |
デフォルト: | DeflateMemLevel 9 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_deflate |
DeflateMemLevel
ディレクティブは
- zlib が圧縮に使うメモリのレベルを設定します (1 から 9 の間の値)。
- (訳注: 2 を底とする対数の値になります。
- 8 程度が良いでしょう。)
説明: | Zlib の圧縮用ウィンドウの大きさ |
---|---|
構文: | DeflateWindowSize value |
デフォルト: | DeflateWindowSize 15 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_deflate |
DeflateWindowSize
ディレクティブは
- zlib の圧縮用ウィンドウ (訳注: zlib で使用される履歴バッファ)
- の大きさを指定します (1 から 15 の間の値)。
- 一般的に大きなウィンドウサイズを使用すると圧縮率が向上します。
- (訳注: 2 を底とする対数の値になります。
- 8 から 15 にするのが良いでしょう。)
Apache HTTP 泣若 若吾с 2.3
+茯: | ゃ≪潟檎潟潟潟х軒 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | deflate_module |
純若鴻<ゃ: | mod_deflate.c |
mod_deflate
≪吾ャ若 DEFLATE
+ 阪c帥箴障泣若阪若
+ ゃ≪潟х軒純障
筝c<篋阪膂≦荐絎箴腓冴障
+ +
+ AddOutputFilterByType DEFLATE text/html text/plain text/xml
+
篁ヤ荐絎潟潟潟х軒障c茲荐絎障 + 荐絎障с茹cт戎с
+ +
+ <Location />
+
+ # Insert filter
+ SetOutputFilter DEFLATE
+
+ # Netscape 4.x has some problems...
+ BrowserMatch ^Mozilla/4 gzip-only-text/html
+
+ # Netscape 4.06-4.08 have some more problems
+ BrowserMatch ^Mozilla/4\.0[678] no-gzip
+
+ # MSIE masquerades as Netscape, but it is fine
+ # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
+
+ # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
+ # the above regex won't work. You can use the following
+ # workaround to get the desired effect:
+ BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
+
+ # Don't compress images
+ SetEnvIfNoCase Request_URI \
+
+ \.(?:gif|jpe?g|png)$ no-gzip dont-vary
+
+
+ # Make sure proxies don't deliver the wrong content
+ Header append Vary User-Agent env=!dont-vary
+
+ </Location>
+
х軒罘純 DEFLATE
c
+ 絎茖障篁ヤcccc
+ 潟潟筝ャ<潟х軒障:
+ SetOutputFilter DEFLATE
+
鋎帥吟с鴻潟潟潟絲障
+ х軒宴с障сgzip-only-text/html
+ 若 1
html <ゃ絲障
+ х軒鴻障 (篁ヤ)
+ ゃ 1
篁ュ荐絎翫∴障
絽吾劫MIME帥ゃゃ水х軒с違
+ AddOutputFilterByType
+ cc篏睡障罨< Apache ャ<潟 html
+ <ゃ帥х軒鴻箴腓冴障
+ <Directory "/your-server-root/manual">
+
+ AddOutputFilterByType DEFLATE text/html
+
+ </Directory>
+
<ゃ帥ゃсх軒馹宴吟絲障
+ BrowserMatch
+ cc篏睡劫吟 no-gzip
+ 若祉х軒茵障
+ no-gzip
gzip-only-text/html
+ 腟水т鎛上с障
+ 翫緇若若ゃ障
+ 筝荐荐絎箴膕
+ 罨<腓冴障с荀т
+ BrowserMatch ^Mozilla/4 gzip-only-text/html
+ BrowserMatch ^Mozilla/4\.0[678] no-gzip
+ BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
+
障紮 User-Agent
絖 Netscape Navigator
+ 4.x с茯帥鴻障若吾с潟с
+ text/html
篁ュ帥ゃх軒宴с障
+ 4.06, 4.07, 4.08 html <ゃ篌後宍馹宴障
+ с絲障絎 deflate c帥障
3 BrowserMatch
+ ccсィ羝若吟若若吾с潟篆罩c障
+ Microsoft Internet Explorer "Mozilla/4" 劫障
+ 絎х軒宴сс
+ User-Agent
"MSIE"
+ (\b
茯紜潟障) 菴遵絖ф祉
+ 篁ュ荐絎狗活Вゃ障
DEFLATE
c帥綽PHP SSI c RESOURCE
+ c帥緇障
+ DEFLATE c帥泣鴻∝ャ障
+ mod_deflate
≪吾ャ若gzip х軒鴻潟
+ inflate/uncompress c帥箴障
+ 罘純鴻SetOutputFilter
+ AddOutputFilter
篏帥c
+ INFLATE
c帥阪c帥сゃ潟水ャ障
+ 箴井<障
+ <Location /dav-area>
+
+ ProxyPass http://example.com/
+ SetOutputFilter INFLATE
+
+ </Location>
+
箴сexample.com gzip х軒阪篌檎激 + 篁c帥阪с障 +
+ + +mod_deflate
≪吾ャ若gzip
+ ух軒鴻篏篌後宍c帥箴障
+ 罘純鴻SetInputFilter
+ AddInputFilter
篏睡
+ DEFLATE
c帥ュc帥сゃ潟腟粋昭帥障
+ 箴井<障
+ <Location /dav-area>
+
+ SetInputFilter DEFLATE
+
+ </Location>
+
荐絎с違Content-Encoding: gzip
+ 鴻ャ篏篌後宍障
+ gzip 鴻篏篆<吟障障
+ 箴 WebDAV
+ ゃ≪潟綛障ゃ劫ャ≪宴若激с潟с鴻
+ х軒絎泣若障
鴻篏篏荅箴<翫Content-Length
+ 篆∞сContent-Length
+ ゃ≪潟篆<若帥激сc
+ 篌後宍若帥鴻若ゃ潟с障
mod_deflate
≪吾ャ若 Vary: Accept-Encoding
+ HTTP 綽膈篆< Accept-Encoding
+ 鴻篆<ゃ≪潟絲障帥
+ 激泣若c激ャ綽膈篆<羈莎激障
+ х軒宴сゃ≪潟
+ х軒絎鴻障
劫ャ篏箴絖ゅ翫箴 User-Agent
+ 箴絖翫 Vary
荐絎
+ 菴遵狗ゃ激泣若羈茵綽荀障
+ 箴 User-Agent
箴絖 DEFLATE
+ 菴遵後荐絎с罨<菴遵障
+ Header append Vary User-Agent
+
鴻篁ュ (箴 HTTP 若吾с)
+ 箴絖х軒羆冴翫
+ Vary
*
荐絎綽荀障
+ 篁罕羣激c激ャ頫障
+ Header set Vary *
+
茯: | zlib 筝綺х軒紂紊с |
---|---|
罕: | DeflateBufferSize value |
: | DeflateBufferSize 8096 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_deflate |
DeflateBufferSize
cc
+ zlib 筝綺х軒紂紊сゃ篏ф絎障
茯: | 阪絲障茵х軒腮綺 |
---|---|
罕: | DeflateCompressionLevel value |
: | Zlib |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_deflate |
篋: | This directive is available since Apache 2.0.45 |
DeflateCompressionLevel
cc
+ х軒腮綺荐絎障紊сゃсх軒茵障
+ CPU 莖羣羔莢祉障
ゃ 1 (篏х軒) 9 (蕭х軒) с
+ +茯: | 潟亥х軒罸<≪菴遵 |
---|---|
罕: | DeflateFilterNote [type] notename |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_deflate |
篋: | type is available since Apache 2.0.45 |
DeflateFilterNote
cc
+ х軒罸≪<≪鴻篁絎障
+ < (note) cc絎ゃс
+ <≪≪祉鴻
+ ゃ荐蚊腟沿篏帥障
+ DeflateFilterNote ratio
+
+ LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
+ CustomLog logs/deflate_log deflate
+
違c膕上ゃ遵冴翫type + 綣違篏睡若帥帥ゃ違<≪罧絎с障 + type 罨<<筝ゃс
+ +Input
Output
Ratio
阪 / ュ * 100
) <≪篆絖
+ type 綣違ャ翫障障罨<違с
+ +
+ DeflateFilterNote Input instream
+ DeflateFilterNote Output outstream
+ DeflateFilterNote Ratio ratio
+
+ LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
+ CustomLog logs/deflate_log deflate
+
Apache HTTP サーバ バージョン 2.3
-説明: | 「最後のスラッシュ」のリダイレクトと、ディレクトリの -インデックスファイルを扱う機能を提供する |
---|---|
ステータス: | Base |
モジュール識別子: | dir_module |
ソースファイル: | mod_dir.c |
ディレクトリインデックスは、次の二つのうちどちらかが利用されます:
- -index.html
というファイル名を使います。このファイル名は、
- DirectoryIndex
ディレクティブで
- 指定することができます。この機能は mod_dir
- モジュールで提供されます。mod_autoindex
- モジュールにより提供されます。自動的なインデックス生成機能を削除 (もしくは交換) - できるように、この二つの機能は分離されています。
- -なお http://servername/foo/dirname
という URL
- へのリクエストがあった際に、dirname
- というディレクトリがあれば、「最後にスラッシュをつけた形」の URL
- へのリダイレクトを送出します。
- ディレクトリへのアクセスはスラッシュで終わっている必要があり、
- mod_dir
は、http://servername/foo/dirname/
- へのリダイレクトを送出することになります。
説明: | クライアントがディレクトリをリクエストしたときに調べる -リソースのリスト |
---|---|
構文: | DirectoryIndex
- local-url [local-url] ... |
デフォルト: | DirectoryIndex index.html |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_dir |
- クライアントが、ディレクトリ名の最後に「/」
- を指定してディレクトリインデックスを要求する場合に探すリソースのリストを
- DirectoryIndex
ディレクティブで設定します。
- Local-url
- は、リクエストされたディレクトリに対応する、サーバ上のドキュメントの
- (% エンコードされた) URL で、普通はディレクトリ中のファイルの名前です。
- 複数の URL が設定された場合には、最初に見つかったものを返します。
- それらが見つからず、Indexes
- オプションがセットされている場合、ディレクトリのリストを生成します。
-
- DirectoryIndex index.html
-
http://myserver/docs/
へのアクセスがあり、
- http://myserver/docs/index.html
- が存在すれば、この URL が返されます。
- もし存在しなければ、ディレクトリのリストが返されます。
注: ドキュメントが同じディレクトリ内に存在するは必要ありません。 -
- -
- DirectoryIndex index.html index.txt /cgi-bin/index.pl
-
とした場合、index.html
と index.txt
- のどちらもディレクトリ内に存在しない場合、CGI スクリプト
- /cgi-bin/index.pl
が実行されます。
説明: | パス末尾のスラッシュでリダイレクトするかどうかのオンオフをトグルさせる |
---|---|
構文: | DirectorySlash On|Off |
デフォルト: | DirectorySlash On |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Base |
モジュール: | mod_dir |
互換性: | 2.0.51 以降 |
要求のあった URL がディレクトリを指すかどうかを、
- mod_dir
が調整するべきかどうかを
- DirectorySlash
- ディレクティブで設定します。
典型的には、ユーザが末尾のスラッシュ無しでリソースへのリクエストを発行し、
- そして、そのリソースがディレクトリを指していた場合、mod_dir
- は、末尾にスラッシュを付加した上で同じリソースにリダイレクトさせます。
- この挙動には幾つか理由があります:
mod_autoindex
が期待通りに動く。mod_autoindex
- の生成するリンクはパスを出力しませんので、スラッシュがない場合は間違ったパスを
- 指してしまうことになります。DirectoryIndex
は、
- 末尾にスラッシュがついているリクエストについてのみ評価される。とはいえ、もしこういった効果を望まない、かつ、 - 上記のような理由が当てはまらない場合は、リダイレクトを次のようにしてオフにできます:
- -
- # see security warning below!
- <Location /some/path>
-
- DirectorySlash Off
- SetHandler some-handler
-
- </Location>
-
末尾のスラッシュでのリダイレクトをオフにすると、結果的に情報漏洩を
- 招くことになるかもしれません。
- mod_autoindex
が有効 (Options +Indexes
) で、
- DirectoryIndex
が有効なリソース (例えば
- index.html
) を指していて、また、要求のあった URL に特別な
- ハンドラが設定されていない場合を考えてみてください。
- この場合末尾にスラッシュのついているリクエストに対しては index.html
- ファイルが返されます。しかしスラッシュのないリクエストに対しては、
- ディレクトリの内容一覧を返してしまいます。
Apache HTTP 泣若 若吾с 2.3
+茯: | 緇鴻激ャゃc +ゃ潟鴻<ゃ宴罘純箴 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | dir_module |
純若鴻<ゃ: | mod_dir.c |
cゃ潟鴻罨<篋ゃ<<障:
+ +index.html
<ゃ篏帥障<ゃ
+ DirectoryIndex
cc
+ 絎с障罘純 mod_dir
+ ≪吾ャ若ф箴障mod_autoindex
+ ≪吾ャ若箴障ゃ潟合罘純 (篋ゆ) + с篋ゃ罘純≪障
+ + http://servername/foo/dirname
URL
+ 吾鴻cdirname
+ c違緇鴻激ャゃ綵≪ URL
+ 吾ゃ冴障
+ c吾≪祉鴻鴻激ャхc綽荀
+ mod_dir
http://servername/foo/dirname/
+ 吾ゃ冴障
茯: | ゃ≪潟c鴻茯帥鴻 +純若鴻鴻 |
---|---|
罕: | DirectoryIndex
+ local-url [local-url] ... |
: | DirectoryIndex index.html |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_dir |
+ ゃ≪潟c緇/
+ 絎cゃ潟鴻荀羆翫「純若鴻鴻
+ DirectoryIndex
ccц┃絎障
+ Local-url
+ 鴻c絲上泣若筝ャ<潟
+ (% 潟潟若) URL сc筝<ゃс
+ 茲違 URL 荐絎翫荀ゃc菴障
+ 荀ゃIndexes
+ 激с潟祉翫c鴻障
+
+ DirectoryIndex index.html
+
http://myserver/docs/
吾≪祉鴻
+ http://myserver/docs/index.html
+ 絖違 URL 菴障
+ 絖違c鴻菴障
羈: ャ<潟c絖綽荀障 +
+ +
+ DirectoryIndex index.html index.txt /cgi-bin/index.pl
+
翫index.html
index.txt
+ <c絖翫CGI 鴻
+ /cgi-bin/index.pl
絎茵障
茯: | 号絨障鴻激ャсゃ潟違 |
---|---|
罕: | DirectorySlash On|Off |
: | DirectorySlash On |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Base |
≪吾ャ若: | mod_dir |
篋: | 2.0.51 篁ラ |
荀羆c URL c
+ mod_dir
茯炊眼鴻
+ DirectorySlash
+ ccц┃絎障
後若吟絨障鴻激ョ<с純若鴻吾鴻肴
+ 純若鴻c翫mod_dir
+ 絨障鴻激ャ篁筝у純若鴻ゃ障
+ 綛障ゃ宴障:
mod_autoindex
緇mod_autoindex
+ 潟鴻阪障с鴻激ャ翫c鴻
+ 障障DirectoryIndex
+ 絨障鴻激ャゃ鴻ゃ荅箴<c号障ゃ + 筝荐宴綵障翫ゃ罨<с障:
+ +
+ # see security warning below!
+ <Location /some/path>
+
+ DirectorySlash Off
+ SetHandler some-handler
+
+ </Location>
+
絨障鴻激ャсゃ腟掩闆
+ 障
+ mod_autoindex
(Options +Indexes
) с
+ DirectoryIndex
鴻純若 (箴
+ index.html
) 障荀羆c URL 劫ャ
+ 潟荐絎翫帥
+ 翫絨障鴻激ャゃ鴻絲障 index.html
+ <ゃ菴障鴻激ャ鴻絲障
+ c絎剛荀с菴障障
Apache HTTP サーバ バージョン 2.3
-説明: | URI をキーにしたコンテンツキャッシュストレージ管理 |
---|---|
ステータス: | Extension |
モジュール識別子: | disk_cache_module |
ソースファイル: | mod_disk_cache.c |
mod_disk_cache
はディスクを使用したストレージ
- 管理機構を実装しています。主に
- mod_cache
と組み合わせて使われます。
コンテンツのキャッシュへの保存と取得は URI に基づいたキーが使われます。 - アクセス保護のかけられているコンテンツはキャッシュされません。
- -キャッシュの大きさを最大レベルで維持するために
- htcacheclean
を使うことができます。
mod_disk_cache
は
- mod_cache
を必要とします
説明: | サブディレクトリ名の文字数 |
---|---|
構文: | CacheDirLength length |
デフォルト: | CacheDirLength 2 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_disk_cache |
CacheDirLength
ディレクティブはキャッシュ
- 階層の各サブディレクトリの文字数を設定します。
CacheDirLevels
*
- CacheDirLength
の
- 結果は 20 以内でなければなりません。
- CacheDirLength 4
-
説明: | キャッシュのサブディレクトリの深さの数 |
---|---|
構文: | CacheDirLevels levels |
デフォルト: | CacheDirLevels 3 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_disk_cache |
CacheDirLevels
ディレクティブはキャッシュの
- サブディレクトリの深さを設定します。キャッシュデータは CacheRoot
ディレクトリから
- このディレクトリの深さ分下のディレクトリに保存されます。
CacheDirLevels
*
- CacheDirLength
の
- 結果は 20 以内でなければなりません。
- CacheDirLevels 5
-
説明: | キャッシュに保管されるドキュメントの最大の (バイトでの) サイズ |
---|---|
構文: | CacheMaxFileSize bytes |
デフォルト: | CacheMaxFileSize 1000000 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_disk_cache |
CacheMaxFileSize
ディレクティブは、ドキュメントを
- キャッシュするかどうかを判定する、最大のサイズをバイト数で設定します。
- CacheMaxFileSize 64000
-
説明: | キャッシュに保管されるドキュメントの最小限の (バイトでの) 大きさ |
---|---|
構文: | CacheMinFileSize bytes |
デフォルト: | CacheMinFileSize 1 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_disk_cache |
CacheMinFileSize
ディレクティブは、ドキュメントを
- キャッシュするかどうかを判定する、最小のサイズをバイト数で設定します。
- CacheMinFileSize 64
-
説明: | キャッシュファイルが保管されるルートディレクトリ |
---|---|
構文: | CacheRoot directory |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_disk_cache |
CacheRoot
ディレクティブはキャッシュファイルを
- 保管するためのディスク上のディレクトリを指定します。mod_disk_cache
モジュールが Apache サーバにロードされて
- いるか、組み込まれていれば、このディレクティブは必ず
- 定義しなければなりません。
- CacheRoot
の値を指定しなければ、
- 設定ファイルの処理でエラーになります。CacheDirLevels
ディレクティブと CacheDirLength
ディレクティブが
- 指定されたルートディレクトリ下のディレクトリ構成を定義します。
- CacheRoot c:/cacheroot
-
Apache HTTP 泣若 若吾с 2.3
+茯: | URI 若潟潟潟c激ャ鴻若悟∞ |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | disk_cache_module |
純若鴻<ゃ: | mod_disk_cache.c |
mod_disk_cache
c鴻篏睡鴻若
+ 膊∞罘罕絎茖障筝祉
+ mod_cache
腟水篏帥障
潟潟潟c激ャ吾篆絖緇 URI 冴ャ若篏帥障 + ≪祉剛茘激潟潟潟c激ャ障
+ +c激ャ紊с紊сх境
+ htcacheclean
篏帥с障
mod_disk_cache
+ mod_cache
綽荀障
茯: | 泣c絖 |
---|---|
罕: | CacheDirLength length |
: | CacheDirLength 2 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_disk_cache |
CacheDirLength
ccc激
+ 絮ゃ泣c絖違荐絎障
CacheDirLevels
*
+ CacheDirLength
+ 腟 20 篁ュс違障
+ CacheDirLength 4
+
茯: | c激ャ泣c羞宴 |
---|---|
罕: | CacheDirLevels levels |
: | CacheDirLevels 3 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_disk_cache |
CacheDirLevels
ccc激ャ
+ 泣c羞宴荐絎障c激ャ若帥 CacheRoot
c
+ c羞宴筝c篆絖障
CacheDirLevels
*
+ CacheDirLength
+ 腟 20 篁ュс違障
+ CacheDirLevels 5
+
茯: | c激ャ篆膊<ャ<潟紊с (ゃс) 泣ゃ |
---|---|
罕: | CacheMaxFileSize bytes |
: | CacheMaxFileSize 1000000 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_disk_cache |
CacheMaxFileSize
ccャ<潟
+ c激ャゅ紊с泣ゃ冴ゃ違ц┃絎障
+ CacheMaxFileSize 64000
+
茯: | c激ャ篆膊<ャ<潟絨 (ゃс) 紊с |
---|---|
罕: | CacheMinFileSize bytes |
: | CacheMinFileSize 1 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_disk_cache |
CacheMinFileSize
ccャ<潟
+ c激ャゅ絨泣ゃ冴ゃ違ц┃絎障
+ CacheMinFileSize 64
+
茯: | c激ャ<ゃ篆膊<若c |
---|---|
罕: | CacheRoot directory |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_disk_cache |
CacheRoot
ccc激ャ<ゃ
+ 篆膊<c鴻筝c絎障mod_disk_cache
≪吾ャ若 Apache 泣若若
+ 腟粋昭障違cc綽
+ 絎臂違障
+ CacheRoot
ゃ絎違
+ 荐絎<ゃс若障CacheDirLevels
cc CacheDirLength
cc
+ 絎若c筝c罕絎臂障
+ CacheRoot c:/cacheroot
+
Apache HTTP サーバ バージョン 2.3
-説明: | 望むようにすべての I/O をエラーログにダンプする |
---|---|
ステータス: | Extension |
モジュール識別子: | dumpio_module |
ソースファイル: | mod_dumpio.c |
mod_dumpio
を使うと、Apache が受け取ったすべての入力と
- Apache により送られたすべての出力との、両方もしくはどちらか一方を、
- エラーログファイルにログ収集 (訳注: ダンプ dump)
- できます。
データのロギングは、SSL 復号化の直後 (入力) と SSL - 暗号化の直前 (出力) に行なわれます。ご想像の通り、 - このモジュールはとてつもないデータ量を出力しますので、 - 問題をデバッグしているときにのみ使用するようにしてください。
-このモジュールを有効にするには、モジュールがコンパイルされていて、 - 実行する Apache の設定でサーバに組み込まれている必要があります。 - ロギング機能は、以下のディレクティブを使って有効にしたり - 無効にしたりできます。
-Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻 I/O 若違潟 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | dumpio_module |
純若鴻<ゃ: | mod_dumpio.c |
mod_dumpio
篏帥Apache c鴻ュ
+ Apache 鴻阪筝≧鴻<筝鴻
+ 若違<ゃ医 (荐恰絵: 潟 dump)
+ с障
若帥潟違SSL 緇垸翫 (ュ) SSL + 垸翫 (阪) 茵障喝 + ≪吾ャ若ゃ若翠阪障с + 馹違推戎
+≪吾ャ若鴻≪吾ャ若潟潟ゃ + 絎茵 Apache 荐絎с泣若腟粋昭障綽荀障 + 潟井純篁ヤcc篏帥c鴻 + ≦鴻с障
+Apache HTTP サーバ バージョン 2.3
-説明: | プロトコルモジュールの概要を示すための単純なエコーサーバ - |
---|---|
ステータス: | Experimental |
モジュール識別子: | echo_module |
ソースファイル: | mod_echo.c |
互換性: | Apache 2.0 以降 |
本モジュールはコンセプトを伝えるためのプロトコルモジュールの - 実装例となっています。単純なエコーサーバを提供します。 - Telnet で接続し、文字列を送信すると、エコーを返します。
-Apache HTTP 泣若 若吾с 2.3
+茯: | 潟≪吾ャ若网荀腓冴膣潟若泣若 + |
---|---|
鴻若帥: | Experimental |
≪吾ャ若茘ュ: | echo_module |
純若鴻<ゃ: | mod_echo.c |
篋: | Apache 2.0 篁ラ |
≪吾ャ若潟潟祉篌潟≪吾ャ若 + 絎茖箴c障膣潟若泣若箴障 + Telnet ф・膓絖篆<潟若菴障
+Apache HTTP サーバ バージョン 2.3
-説明: | CGI スクリプト及び SSI -ページに渡される環境変数を変更する機能を提供する |
---|---|
ステータス: | Base |
モジュール識別子: | env_module |
ソースファイル: | mod_env.c |
このモジュールにより CGI スクリプトと SSI
- ページに適用される環境変数を制御することができるようになります。
- 環境変数は httpd
プロセスを起動したシェルから渡されます。また、
- 設定ファイルで環境変数を設定したり、削除したりすることができます。
-
説明: | シェルからの環境変数を渡す |
---|---|
構文: | PassEnv env-variable [env-variable]
-... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_env |
httpd
プロセスを起動したシェルの環境から CGI スクリプトと
- SSI ページに渡す環境変数を一つ以上指定します。
- PassEnv LD_LIBRARY_PATH
-
Apache HTTP 泣若 若吾с 2.3
+茯: | CGI 鴻 SSI +若吾羝<医紊違紊眼罘純箴 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | env_module |
純若鴻<ゃ: | mod_env.c |
≪吾ャ若 CGI 鴻 SSI
+ 若吾医紊違九勝с障
+ 医紊違 httpd
祉鴻莎桁激с羝<障障
+ 荐絎<ゃх医紊違荐絎ゃс障
+
茯: | 激с医紊違羝< |
---|---|
罕: | PassEnv env-variable [env-variable]
+... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_env |
httpd
祉鴻莎桁激с医 CGI 鴻
+ SSI 若吾羝<医紊違筝や札筝絎障
+ PassEnv LD_LIBRARY_PATH
+
Apache HTTP サーバ バージョン 2.3
-説明: | ユーザの指定した基準に基づいた Expires と
-Cache-Control HTTP ヘッダの生成 |
---|---|
ステータス: | Extension |
モジュール識別子: | expires_module |
ソースファイル: | mod_expires.c |
このモジュールはサーバ応答の Expires
HTTP ヘッダ
- と Cache-Control
ヘッダの max-age
ディレクティブの
- 設定を制御します。元のファイルが作成された時刻または
- クライアントのアクセス時刻のどちらかに基づいて期限切れ日を
- 設定することができます。
これらのヘッダはクライアントに文書の - 有効性と継続性を指示します。文書がキャッシュされた場合には、 - 指定時刻に達するまでは、元の場所から取得する代わりに - キャッシュされているものを使うことができます。その後は、 - キャッシュにあるコピーは期限切れ (expired) で無効であるとされ、 - 元の場所から新しいものを取得する必要があります。
- -max-age
以外 (RFC
- 2616 section 14.9 参照) の Cache-Control
のディレクティブを
- 操作するには Header
ディレクティブを
- 使うことができます。
ExpiresDefault
ディレクティブと
- ExpiresByType
ディレクティブは
- 以下のより読み易い構文を使って定義することができます:
- ExpiresDefault "<base> [plus] {<num>
- <type>}*"
- ExpiresByType type/encoding "<base> [plus]
- {<num> <type>}*"
-
<base> は以下のどれかです:
- -access
now
('access
' と等価)modification
plus
キーワードは省略可能です。<num>
- は (atoi()
が受け付ける) 整数値、
- <type> は以下のどれかです:
years
months
weeks
days
hours
minutes
seconds
例えば、以下のディレクティブはどれもデフォルトで文書がアクセスの 1 ヶ月後に - 期限が切れるようにするために使えます:
- -
- ExpiresDefault "access plus 1 month"
- ExpiresDefault "access plus 4 weeks"
- ExpiresDefault "access plus 30 days"
-
期限切れ時刻はいくつか - '<num> <type>' 節を追加することでより細かく - 制御することができます:
- -
- ExpiresByType text/html "access plus 1 month 15
- days 2 hours"
- ExpiresByType image/gif "modification plus 5 hours 3
- minutes"
-
修正時刻に基づいた設定を使用している場合、Expires ヘッダは - ディスクのファイル以外のコンテンツには追加されないことに注意 - してください。そのようなコンテンツには修正時刻は存在しないからです。
-説明: | Expires ヘッダの生成を有効にする |
---|---|
構文: | ExpiresActive On|Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Extension |
モジュール: | mod_expires |
このディレクティブは対応するドキュメントの領域で
- Expires
と Cache-Control
ヘッダを
- 有効にするか無効にするかを決めます。
- (例えば、.htaccess
ファイルではそのディレクトリの
- 文書のみに適用されるということです。) Off
に
- 設定された場合は対応領域でそれらのヘッダは
- 生成されません (.htaccess
がサーバ設定ファイルの設定を
- 上書きする、というような下位レベルでの上書きがされていなければ)。
- On
に設定されていれば、ヘッダは ExpiresByType
ディレクティブと
- ExpiresDefault
ディレクティブ
- の基準に従って文書にヘッダを追加します (各ディレクティブ参照)。
このディレクティブは Expires
と
- Cache-Control
ヘッダの存在を
- 保証するわけではないことに注意してください。基準が満たされて
- いない場合はヘッダは追加されず、結果としてこのディレクティブが
- 指定されていなかったかのようにさえ見えることになります。
説明: | MIME タイプによって設定される Expires ヘッダの値 |
---|---|
構文: | ExpiresByType MIME-type
-<code>seconds |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Extension |
モジュール: | mod_expires |
このディレクティブは指定されたタイプのドキュメント
- (例えば text/html
)
- に対して生成される Expires
ヘッダと Cache-Control
- ヘッダの max-age
ディレクティブの値を定義します。
- 二つ目の引数は期限切れの日時を生成するための基準時刻に追加される
- 秒数を設定します。Cache-Control:
- max-age
は期限切れの時刻からリクエスト時刻を引いたものを秒で
- 表すことで生成されます。
基準時刻はファイルの最終修正時刻か、クライアントのドキュメントへの
- アクセス時刻です。どちらを使うべきかは <code>
- によって指定します。M
は基準時刻として
- ファイルの最終修正時刻をという意味で、A
はクライアントの
- アクセス時刻を使うという意味になります。
効果には微妙な違いがあります。M
が使用された場合は、
- すべてのキャッシュにある現在のドキュメントキャッシュは同時に期限が
- 切れます。これは同じ URL に毎週常に置かれる報せのようなものには
- 非常に有効です。A
が使用された場合は、期限切れの
- 時間は各クライアントよって異なります。これはあまり変更されない
- 画像ファイルなど、特に関連するドキュメント群がすべて同じ画像を
- 参照するとき (すなわち画像が比較的短い期間内に繰り返し
- アクセスされるとき) に有効です。
- # enable expirations
- ExpiresActive On
- # expire GIF images after a month in the client's cache
- ExpiresByType image/gif A2592000
- # HTML documents are good for a week from the
- # time they were changed
- ExpiresByType text/html M604800
-
このディレクティブは ExpiresActive On
が指定されている
- ときのみ有効であることに注意してください。これは、
- 指定された MIME タイプに対してのみ ExpiresDefault
ディレクティブで
- 設定された期限切れ期日を上書きします。
この文書の前の方で説明されている代替構文を - 使って期限切れ期日の計算方法を指定することもできます。
- -説明: | 期限切れ期日を計算するデフォルトアルゴリズム |
---|---|
構文: | ExpiresDefault <code>seconds |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Extension |
モジュール: | mod_expires |
このディレクティブは対応する範囲のすべてのドキュメントに対して
- デフォルトの期限切れ期日の計算アルゴリズムを設定します。ExpiresByType
ディレクティブによって
- タイプ毎に上書きすることができます。引数の構文はそのディレクティブの
- 説明を参照してください。また、代替構文も
- 参照してください。
Apache HTTP 泣若 若吾с 2.3
+茯: | 若吟絎堺冴ャ Expires
+Cache-Control HTTP |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | expires_module |
純若鴻<ゃ: | mod_expires.c |
≪吾ャ若泣若綽膈 Expires
HTTP
+ Cache-Control
max-age
cc
+ 荐絎九勝障<ゃ篏祉障
+ ゃ≪潟≪祉号祉<冴ャャ
+ 荐絎с障
ゃ≪潟吾 + 号с膓膓с腓冴障吾c激ャ翫 + 絎祉障с贋緇篁c + c激ャ篏帥с障緇 + c激ャ潟若 (expired) х≦鴻с + 贋違緇綽荀障
+ +max-age
篁ュ (RFC
+ 2616 section 14.9 ) Cache-Control
cc
+ 篏 Header
cc
+ 篏帥с障
ExpiresDefault
cc
+ ExpiresByType
cc
+ 篁ヤ茯炊罕篏帥c絎臂с障:
+ ExpiresDefault "<base> [plus] {<num>
+ <type>}*"
+ ExpiresByType type/encoding "<base> [plus]
+ {<num> <type>}*"
+
<base> 篁ヤс:
+ +access
now
('access
' 膈箴)modification
plus
若若ュ純с<num>
+ (atoi()
篁) 贋医ゃ
+ <type> 篁ヤс:
years
months
weeks
days
hours
minutes
seconds
箴違篁ヤccф吾≪祉鴻 1 倶緇 + 篏帥障:
+ +
+ ExpiresDefault "access plus 1 month"
+ ExpiresDefault "access plus 4 weeks"
+ ExpiresDefault "access plus 30 days"
+
祉ゃ + '<num> <type>' 膀菴遵с膣違 + 九勝с障:
+ +
+ ExpiresByType text/html "access plus 1 month 15
+ days 2 hours"
+ ExpiresByType image/gif "modification plus 5 hours 3
+ minutes"
+
篆罩f祉冴ャ荐絎篏睡翫Expires + c鴻<ゃ篁ュ潟潟潟菴遵羈 + 潟潟潟篆罩f祉絖с
+茯: | Expires 鴻 |
---|---|
罕: | ExpiresActive On|Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Extension |
≪吾ャ若: | mod_expires |
cc絲上ャ<潟
+ Expires
Cache-Control
+ 鴻≦鴻羆冴障
+ (箴違.htaccess
<ゃсc
+ 吾帥с) Off
+ 荐絎翫絲上с
+ 障 (.htaccess
泣若荐絎<ゃ荐絎
+ 筝吾筝篏с筝吾)
+ On
荐絎違 ExpiresByType
cc
+ ExpiresDefault
cc
+ 堺緇c吾菴遵障 (cc)
cc Expires
+ Cache-Control
絖
+ 篆荐若с羈堺羣
+ 翫菴遵腟cc
+ 絎c荀障
茯: | MIME 帥ゃc荐絎 Expires |
---|---|
罕: | ExpiresByType MIME-type
+<code>seconds |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Extension |
≪吾ャ若: | mod_expires |
cc絎帥ゃャ<潟
+ (箴 text/html
)
+ 絲障 Expires
Cache-Control
+ max-age
ccゃ絎臂障
+ 篋ょ綣違ユ堺祉菴遵
+ 腱違荐絎障Cache-Control:
+ max-age
祉鴻祉綣腱
+ 茵х障
堺祉<ゃ腟篆罩f祉ゃ≪潟ャ<潟吾
+ ≪祉号祉с<篏帥鴻 <code>
+ c絎障M
堺祉
+ <ゃ腟篆罩f祉潟сA
ゃ≪潟
+ ≪祉号祉篏帥潟障
号緇絋障M
篏睡翫
+ 鴻c激ャ憜ャ<潟c激ャ
+ 障 URL 罸怨幻臀宴
+ 絽吾鴻сA
篏睡翫
+ ゃ≪潟c違障障紊眼
+ 糸<ゃ鴻∫cャ<潟臂ゃ鴻糸
+ с (糸罸莠膵違菴
+ ≪祉鴻) 鴻с
+ # enable expirations
+ ExpiresActive On
+ # expire GIF images after a month in the client's cache
+ ExpiresByType image/gif A2592000
+ # HTML documents are good for a week from the
+ # time they were changed
+ ExpiresByType text/html M604800
+
cc ExpiresActive On
絎
+ 炊鴻с羈
+ 絎 MIME 帥ゃ絲障 ExpiresDefault
cc
+ 荐絎ャ筝吾障
吾鴻ц篁f炊 + 篏帥cャ荐膊号絎с障
+ +茯: | ャ荐膊≪眼冴 |
---|---|
罕: | ExpiresDefault <code>seconds |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Indexes |
鴻若帥: | Extension |
≪吾ャ若: | mod_expires |
cc絲上膀蚊鴻ャ<潟絲障
+ ャ荐膊≪眼冴荐絎障ExpiresByType
ccc
+ 帥ゃ罸筝吾с障綣違罕cc
+ 茯с障篁f炊
+ с
Apache HTTP サーバ バージョン 2.3
-説明: | レスポンスのボディをクライアントに送る前に外部プログラムで処理する |
---|---|
ステータス: | Extension |
モジュール識別子: | ext_filter_module |
ソースファイル: | mod_ext_filter.c |
mod_ext_filter
では フィルタ
- の慣れ親しんだ単純なプログラミングモデルが提供されます。このモジュールを
- 使えば、標準入力から読み込んで、標準出力に書き出すプログラム
- (すなわち Unix 形式のフィルタコマンド) を Apache のフィルタにすることが
- できます。このフィルタの機構は、Apache API 向けに書かれた Apache
- サーバプロセス内で実行される専用のフィルタよりもずっと遅いですが、
- 以下のような利点もあります。
性能の問題により実運用に適さないとしても、フィルタのプロトタイプ用の
- 環境としては mod_ext_filter
は使えます。
- # mod_ext_filter directive to define a filter
- # to HTML-ize text/c files using the external
- # program /usr/bin/enscript, with the type of
- # the result set to text/html
- ExtFilterDefine c-to-html mode=output \
-
- intype=text/c outtype=text/html \
- cmd="/usr/bin/enscript --color -W html -Ec -o - -"
-
-
- <Directory "/export/home/trawick/apacheinst/htdocs/c">
-
- # core directive to cause the new filter to
- # be run on output
- SetOutputFilter c-to-html
-
- # mod_mime directive to set the type of .c
- # files to text/c
- AddType text/c .c
-
- # mod_ext_filter directive to set the debug
- # level just high enough to see a log message
- # per request showing the configuration in force
- ExtFilterOptions DebugLevel=1
-
- </Directory>
-
注: この gzip の例はデモ用です。実用的な実装は
- mod_deflate
を参照してください。
- # mod_ext_filter directive to define the external filter
- ExtFilterDefine gzip mode=output cmd=/bin/gzip
-
- <Location /gzipped>
-
- # core directive to cause the gzip filter to be
- # run on output
- SetOutputFilter gzip
-
- # mod_header directive to add
- # "Content-Encoding: gzip" header field
- Header set Content-Encoding gzip
-
- </Location>
-
- # mod_ext_filter directive to define a filter
- # which runs everything through cat; cat doesn't
- # modify anything; it just introduces extra pathlength
- # and consumes more resources
- ExtFilterDefine slowdown mode=output cmd=/bin/cat \
-
- preservescontentlength
-
-
- <Location />
-
- # core directive to cause the slowdown filter to
- # be run several times on output
- #
- SetOutputFilter slowdown;slowdown;slowdown
-
- </Location>
-
- # mod_ext_filter directive to define a filter which
- # replaces text in the response
- #
- ExtFilterDefine fixtext mode=output intype=text/html \
-
- cmd="/bin/sed s/verdana/arial/g"
-
-
- <Location />
-
- # core directive to cause the fixtext filter to
- # be run on output
- SetOutputFilter fixtext
-
- </Location>
-
- # Trace the data read and written by mod_deflate
- # for a particular client (IP 192.168.1.31)
- # experiencing compression problems.
- # This filter will trace what goes into mod_deflate.
- ExtFilterDefine tracebefore \
-
- cmd="/bin/tracefilter.pl /tmp/tracebefore" \
- EnableEnv=trace_this_client
-
-
- # This filter will trace what goes after mod_deflate.
- # Note that without the ftype parameter, the default
- # filter type of AP_FTYPE_RESOURCE would cause the
- # filter to be placed *before* mod_deflate in the filter
- # chain. Giving it a numeric value slightly higher than
- # AP_FTYPE_CONTENT_SET will ensure that it is placed
- # after mod_deflate.
- ExtFilterDefine traceafter \
-
- cmd="/bin/tracefilter.pl /tmp/traceafter" \
- EnableEnv=trace_this_client ftype=21
-
-
- <Directory /usr/local/docs>
-
- SetEnvIf Remote_Addr 192.168.1.31 trace_this_client
- SetOutputFilter tracebefore;deflate;traceafter
-
- </Directory>
-
- #!/usr/local/bin/perl -w
- use strict;
-
- open(SAVE, ">$ARGV[0]")
-
- or die "can't open $ARGV[0]: $?";
-
-
- while (<STDIN>) {
-
- print SAVE $_;
- print $_;
-
- }
-
- close(SAVE);
-
説明: | 外部フィルタを定義 |
---|---|
構文: | ExtFilterDefine filtername parameters |
コンテキスト: | サーバ設定ファイル |
ステータス: | Extension |
モジュール: | mod_ext_filter |
ExtFilterDefine
は、実行するプログラムや
- 引数など、外部フィルタの特性を定義します。
filtername は定義するフィルタの名前を指定します。
- この名前は後で SetOutputFilter
- ディレクティブで指定できます。名前は登録されるすべてのフィルタで
- 一意でなくてはなりません。現時点では、フィルタの登録 API からは
- エラーは報告されません。ですから、重複する名前を使ってしまったときでも
- ユーザにはそのことは報告されません。
続くパラメータの順番は関係無く、それらは実行する外部コマンドと、
- 他の特性を定義します。cmd=
だけが必須のパラメータです。
- 指定可能なパラメータは:
cmd=cmdline
cmd=
キーワードは実行する外部コマンドを指定します。
- プログラム名の後に引数がある場合は、コマンド行は引用符で囲む
- 必要があります (例えば、cmd="/bin/mypgm
- arg1 arg2"
のように)。プログラムは
- シェル経由でなく、直接実行されますので、通常のシェル用の
- エスケープは必要ありません。プログラムの引数は空白で区切られます。
- プログラムの引数の一部となる必要のある空白はバックスペースでエスケープ
- できます。引数の一部になるバックスラッシュはバックスラッシュで
- エスケープする必要があります。標準の CGI 環境変数に加えて、
- 環境変数 DOCUMENT_URI, DOCUMENT_PATH_INFO, and
- QUERY_STRING_UNESCAPED がプログラムのために設定されます。mode=mode
mode=output
(デフォルト)
- を使います。リクエストを処理するフィルタには mode=input
- を使います。mode=input
は Apache 2.1 からの新しい機能です。intype=imt
intype=
が指定されていれば、フィルタは指定されていない
- ドキュメントには適用されなくなります。outtype=imt
PreservesContentLength
PreservesContentLength
キーワードはフィルタが
- content length (訳注: コンテントの長さ)
- を変更しないということを指定します。ほとんどのフィルタは
- content length を変更するため、これはデフォルトではありません。
- フィルタが長さを変えないときは、このキーワードを指定すると
- よいでしょう。ftype=filtertype
disableenv=env
enableenv=env
説明: | mod_ext_filter のオプションを設定 |
---|---|
構文: | ExtFilterOptions option [option] ... |
デフォルト: | ExtFilterOptions DebugLevel=0 NoLogStderr |
コンテキスト: | ディレクトリ |
ステータス: | Extension |
モジュール: | mod_ext_filter |
ExtFilterOptions
ディレクティブは
- mod_ext_filter
の特別な処理用のオプションを
- 指定します。Option には以下のどれかを指定します。
DebugLevel=n
DebugLevel
で mod_ext_filter
- の生成するデバッグメッセージのレベルを設定できます。
- デフォルトでは、デバッグメッセージは生成されません。
- これは DebugLevel=0
と設定するのと同じです。
- 数字が大きくなればなるほど、より多くのデバッグメッセージが
- 生成され、サーバの性能は落ちます。数値の実際の意味は
- mod_ext_filter.c
の先頭近くの DBGLVL_ 定数の
- 定義で説明されています。
-
- 注: デバッグメッセージを Apache のエラーログに
- 保存するようにするためには、core のディレクティブ
- LogLevel
- を使う必要があります。
LogStderr | NoLogStderr
LogStderr
キーワードは外部フィルタプログラムにより
- 標準エラー (訳注: stderr) に書かれたメッセージを
- Apache のエラーログに保存するようにします。NoLogStderr
は
- 逆に保存しないようにします。
- ExtFilterOptions LogStderr DebugLevel=0
-
この例では、フィルタの標準出力に書かれたメッセージは
- Apache のエラーログに保存されます。mod_ext_filter
からは
- デバッグメッセージは生成されません。
Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻潟鴻cゃ≪潟紊違у |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | ext_filter_module |
純若鴻<ゃ: | mod_ext_filter.c |
mod_ext_filter
с c
+ c荀膣違潟違≪箴障≪吾ャ若
+ 篏帥違罔羣ュ茯粋昭с罔羣阪吾冴違
+ ( Unix 綵√c帥潟潟) Apache c帥
+ с障c帥罘罕Apache API 吾 Apache
+ 泣若祉劫у茵絨c帥cс
+ 篁ヤ鴻障
ц純馹絎c帥帥ゃ
+ 医 mod_ext_filter
篏帥障
+ # mod_ext_filter directive to define a filter
+ # to HTML-ize text/c files using the external
+ # program /usr/bin/enscript, with the type of
+ # the result set to text/html
+ ExtFilterDefine c-to-html mode=output \
+
+ intype=text/c outtype=text/html \
+ cmd="/usr/bin/enscript --color -W html -Ec -o - -"
+
+
+ <Directory "/export/home/trawick/apacheinst/htdocs/c">
+
+ # core directive to cause the new filter to
+ # be run on output
+ SetOutputFilter c-to-html
+
+ # mod_mime directive to set the type of .c
+ # files to text/c
+ AddType text/c .c
+
+ # mod_ext_filter directive to set the debug
+ # level just high enough to see a log message
+ # per request showing the configuration in force
+ ExtFilterOptions DebugLevel=1
+
+ </Directory>
+
羈: gzip 箴∝с絎絎茖
+ mod_deflate
с
+ # mod_ext_filter directive to define the external filter
+ ExtFilterDefine gzip mode=output cmd=/bin/gzip
+
+ <Location /gzipped>
+
+ # core directive to cause the gzip filter to be
+ # run on output
+ SetOutputFilter gzip
+
+ # mod_header directive to add
+ # "Content-Encoding: gzip" header field
+ Header set Content-Encoding gzip
+
+ </Location>
+
+ # mod_ext_filter directive to define a filter
+ # which runs everything through cat; cat doesn't
+ # modify anything; it just introduces extra pathlength
+ # and consumes more resources
+ ExtFilterDefine slowdown mode=output cmd=/bin/cat \
+
+ preservescontentlength
+
+
+ <Location />
+
+ # core directive to cause the slowdown filter to
+ # be run several times on output
+ #
+ SetOutputFilter slowdown;slowdown;slowdown
+
+ </Location>
+
+ # mod_ext_filter directive to define a filter which
+ # replaces text in the response
+ #
+ ExtFilterDefine fixtext mode=output intype=text/html \
+
+ cmd="/bin/sed s/verdana/arial/g"
+
+
+ <Location />
+
+ # core directive to cause the fixtext filter to
+ # be run on output
+ SetOutputFilter fixtext
+
+ </Location>
+
+ # Trace the data read and written by mod_deflate
+ # for a particular client (IP 192.168.1.31)
+ # experiencing compression problems.
+ # This filter will trace what goes into mod_deflate.
+ ExtFilterDefine tracebefore \
+
+ cmd="/bin/tracefilter.pl /tmp/tracebefore" \
+ EnableEnv=trace_this_client
+
+
+ # This filter will trace what goes after mod_deflate.
+ # Note that without the ftype parameter, the default
+ # filter type of AP_FTYPE_RESOURCE would cause the
+ # filter to be placed *before* mod_deflate in the filter
+ # chain. Giving it a numeric value slightly higher than
+ # AP_FTYPE_CONTENT_SET will ensure that it is placed
+ # after mod_deflate.
+ ExtFilterDefine traceafter \
+
+ cmd="/bin/tracefilter.pl /tmp/traceafter" \
+ EnableEnv=trace_this_client ftype=21
+
+
+ <Directory /usr/local/docs>
+
+ SetEnvIf Remote_Addr 192.168.1.31 trace_this_client
+ SetOutputFilter tracebefore;deflate;traceafter
+
+ </Directory>
+
+ #!/usr/local/bin/perl -w
+ use strict;
+
+ open(SAVE, ">$ARGV[0]")
+
+ or die "can't open $ARGV[0]: $?";
+
+
+ while (<STDIN>) {
+
+ print SAVE $_;
+ print $_;
+
+ }
+
+ close(SAVE);
+
茯: | 紊c帥絎臂 |
---|---|
罕: | ExtFilterDefine filtername parameters |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Extension |
≪吾ャ若: | mod_ext_filter |
ExtFilterDefine
絎茵違
+ 綣違紊c帥号с絎臂障
filtername 絎臂c帥絎障
+ 緇 SetOutputFilter
+ ccф絎с障脂蚊鴻c帥
+ 筝с障憝鴻сc帥脂 API
+ 若怨障с茲篏帥c障cс
+ 若吟怨障
膓<若帥≫<絎茵紊潟潟
+ 篁号с絎臂障cmd=
綽<若帥с
+ 絎純<若帥:
cmd=cmdline
cmd=
若若絎茵紊潟潟絎障
+ 違緇綣違翫潟潟茵綣膃у蚊
+ 綽荀障 (箴cmd="/bin/mypgm
+ arg1 arg2"
)違
+ 激с腟宴с贋・絎茵障с絽吾激с
+ 鴻宴若綽荀障違綣違腥榊純у阪障
+ 違綣違筝綽荀腥榊純鴻若鴻с鴻宴若
+ с障綣違筝鴻激ャ鴻激ャ
+ 鴻宴若綽荀障罔羣 CGI 医紊違
+ 医紊 DOCUMENT_URI, DOCUMENT_PATH_INFO, and
+ QUERY_STRING_UNESCAPED 違荐絎障mode=mode
mode=output
()
+ 篏帥障鴻c帥 mode=input
+ 篏帥障mode=input
Apache 2.1 違罘純сintype=imt
intype=
絎違c帥絎
+ ャ<潟障outtype=imt
PreservesContentLength
PreservesContentLength
若若c帥
+ content length (荐恰絵: 潟潟潟激)
+ 紊眼絎障祉c帥
+ content length 紊眼с障
+ c帥激紊若若絎
+ сftype=filtertype
disableenv=env
enableenv=env
茯: | mod_ext_filter 激с潟荐絎 |
---|---|
罕: | ExtFilterOptions option [option] ... |
: | ExtFilterOptions DebugLevel=0 NoLogStderr |
潟潟鴻: | c |
鴻若帥: | Extension |
≪吾ャ若: | mod_ext_filter |
ExtFilterOptions
cc
+ mod_ext_filter
劫ャ激с潟
+ 絎障Option 篁ヤ絎障
DebugLevel=n
DebugLevel
mod_ext_filter
+ 違<祉若吾荐絎с障
+ с違<祉若吾障
+ DebugLevel=0
荐絎с
+ 医紊с違祉紊違<祉若吾
+ 泣若ц純純<障医ゃ絎潟
+ mod_ext_filter.c
菴 DBGLVL_ 絎違
+ 絎臂ц障
+
+ 羈: 違<祉若吾 Apache 若違
+ 篆絖core cc
+ LogLevel
+ 篏帥綽荀障
LogStderr | NoLogStderr
LogStderr
若若紊c帥違
+ 罔羣 (荐恰絵: stderr) 吾<祉若吾
+ Apache 若違篆絖障NoLogStderr
+ 篆絖障
+ ExtFilterOptions LogStderr DebugLevel=0
+
箴сc帥罔羣阪吾<祉若吾
+ Apache 若違篆絖障mod_ext_filter
+ 違<祉若吾障
Apache HTTP サーバ バージョン 2.3
-説明: | HTTP リクエストのヘッダと応答のヘッダのカスタマイズ |
---|---|
ステータス: | Extension |
モジュール識別子: | headers_module |
ソースファイル: | mod_headers.c |
互換性: | RequestHeader
-は Apache 2.0 以降のみで使用可能 |
このモジュールは HTTP のリクエストヘッダと応答ヘッダを制御し、 - 変更するためのディレクティブを提供します。ヘッダを追加したり、 - 置き換えたり、削除したりすることができます。
-mod_header
のディレクティブはサーバ設定のほぼどこにでも
- 書くことができ、影響する範囲を設定用セクションで囲むことで限定する
- ことができます。
処理の順番は重要で、設定ファイル中の順番と、設定用セクション内の位置との両方に - 影響されます。以下の二つのヘッダは順番が逆になると - 違う結果になります:
- -
- RequestHeader append MirrorID "mirror 12"
- RequestHeader unset MirrorID
-
この順番の場合は、MirrorID
ヘッダは設定されません。
- 逆になっていると、MirrorID ヘッダは "mirror 12" に設定されます。
mod_headers
では、リクエストの早期か後期かの
- どちらで適用するかを選べます。通常は後期モードで、
- コンテンツ生成が実行される直前にリクエストヘッダがセットされ、
- レスポンスとして送出される直前にレスポンスヘッダがセットされます。
- 運用中のサーバでは必ず後期モードを使ってください。
早期モードは開発者向けのテスト/デバッグ用に設計されています。
- early
キーワード指定されたディレクティブによって、
- リクエスト処理の開始地点になります。
- つまり、異なるリクエストを試したりテストケースをセットアップするのに
- 活用できる一方で、レスポンスを生成する前に他のモジュールによって
- ヘッダが書き換えられてしまうかもしれないということを意味します。
early ディレクティブではリクエストパスの設定が解決される前に
- 処理されるので、メインサーバかバーチャルホストコンテキストでのみ、
- 早期ヘッダをセットできます。early ディレクティブはリクエストパスに
- 依存することはできませんので、<Directory>
や
- <Location>
といったコンテキスト内では使用
- できません。
- Header echo ^TS
-
MyHeader
を応答に追加します。このヘッダはクライアントが
- サーバの負荷を直観的に知るためや、クライアント-サーバ間の
- ボトルネックを調べるために使うことができます。
-
-
- Header add MyHeader "%D %t"
-
上記の設定では、以下のようなヘッダが応答に追加されることになります:
- -
- MyHeader: D=3775428 t=991424704447256
-
- Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request."
-
以下のようなヘッダが応答に追加されることになります
- -
- MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request.
-
MyHeader
を応答に
- 付けます。これは、クライアントの要求に応えてヘッダを作成するときに
- 役に立ちます。この例では mod_setenvif
モジュールが必要なことに
- 注意してください。
-
-
- SetEnvIf MyRequestHeader value HAVE_MyRequestHeader
- Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
-
もし HTTP リクエストに MyRequestHeader: value
ヘッダが
- あると、応答には以下のようなヘッダが付加されます。
- MyHeader: D=3775428 t=991424704447256 mytext
-
説明: | HTTP 応答ヘッダの設定 |
---|---|
構文: | Header [condition] set|append|add|unset|echo
-header [value] [early|env=[!]variable] |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Extension |
モジュール: | mod_headers |
このディレクティブは HTTP 応答ヘッダを置換、追加、削除できます。 - ヘッダはコンテントハンドラや出力フィルタが実行された直後に実行され、 - 出て行くヘッダを変更できるようになっています。
- -オプションの condition は onsuccess
か
- always
のどちらかを指定できます。これは内部ヘッダテーブルのどれを
- 操作するかを決定します。onsuccess
は 2xx
- ステータスコードの、always
は全てのステータスコード
- (2xx
を含む) の意味になります。
- あるモジュールでセットされるヘッダをアンセットしたい場合は特に、
- どのテーブルが影響を受けるかを実際に試したほうがよいでしょう。
行なう処理は二番目のの引数で決まります。 - この引数には次の値を指定できます:
- -set
append
add
append
の方を
- 使う方が良いでしょう。unset
echo
この引数の後にはヘッダ名 (header) が続きます。
- ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。
- set
, append
, add
,
- unset
では大文字小文字は
- 区別されません。echo の header 名は大文字小文字を区別し、
- 正規表現を指定することもできます。
add
, append
,
- set
では value を三つ目の
- 引数として指定します。value に空白がある場合は二重引用符で
- 囲む必要があります。value は文字のみからなる文字列、
- フォーマット指示子を含む文字列、もしくは両方からなる文字列を指定できます。
- value は以下のフォーマット指示子をサポートします:
フォーマット | 解説 |
---|---|
%% |
- パーセント記号 |
%t |
- リクエストを受け取った時刻を、
- Universal Coordinated Time での始まりの時刻 (Jan. 1, 1970) から経過した
- 時間をマイクロ秒として現したもの。値の最初には
- t= が付加されます。 |
%D |
- リクエストを受け取った時刻と、ヘッダを送り出した
- 時間との差。これは、リクエストが存在していた期間を現します。
- 値の最初には D= が付加されます。 |
%{FOOBAR}e |
- 環境変数
- FOOBAR の値です。 |
%{FOOBAR}s |
- mod_ssl が有効な場合、
- SSL 環境変数 FOOBAR
- の内容 |
%s
フォーマット指定子は 2.1 以降でのみ利用できます。
- SSLOptions +StdEnvVars
を有効にすることによるオーバーヘッドを
- 避けるため、%e
の代わりとして使えます。
- 他の理由などがあって、どうしても SSLOptions +StdEnvVars
- を有効にしなければならない場合は、%e
のほうが
- %s
よりも処理効率は良いです。
Header
ディレクティブには追加の引数を持たせることが
- できて、どういったアクションが行われたかの条件を指定したり、
- 早期処理 を指定する early
キーワードを
- 指定できます。
- env=...
引数で指定された 環境変数 が存在する (もしくは env=!...
- が指定されていて環境変数が存在しない) 場合は、Header
- ディレクティブで指定された動作が行なわれます。そうでない場合は、
- ディレクティブはそのリクエストには何もしません。
早期処理モードの場合以外では、
- Header
- ディレクティブは応答がネットワークに送られる直前に
- 処理されます。これは、ヘッダフィルタにより追加されるヘッダを
- 除き、ほとんどのヘッダを設定したり上書きしたりすることが
- 可能、ということです。
説明: | HTTP リクエストヘッダの設定 |
---|---|
構文: | RequestHeader set|append|add|unset header
-[value] [early|env=[!]variable] |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Extension |
モジュール: | mod_headers |
このディレクティブは HTTP リクエストヘッダを置換、追加、削除できます。 - ヘッダはコンテントハンドラが実行される直前に実行され、 - 入って来るヘッダを変更することが可能になっています。 - 行なう処理は第 1 引数により決まります。これには以下の値を指定 - することができます:
- -set
append
add
append
の方を
- 使う方が良いでしょう。unset
この引数の後にはヘッダ名 (header) が続きます。
- ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。
- 大文字小文字は区別されません。add
,
- append
, set
の場合は、value が三つ目の
- 引数として指定されます。value に空白がある場合は二重引用符で
- 囲む必要があります。unset の場合は、value は指定しません。
- value は文字列、フォーマット指定子、あるいは、その混合です。
- 使うことのできるフォーマット指定子は、Header
と同じですので、
- 詳細はそちらをご覧ください。
RequestHeader
ディレクティブは、
- どういった条件下でアクションを行うかを指定する追加引数
- あるいは、早期処理 を指定する early
- キーワードを設定することができます。
- env=...
の引数で設定されている
- 環境変数 が存在している
- (あるいは env=!...
で指定された環境変数が
- 存在しない) 場合、RequestHeader
ディレクティブは
- 有効になります。それ以外の場合、ディレクティブは効力を持ちません。
early モードでない場合に限り、
- RequestHeader
ディレクティブは
- fixup フェーズでリクエストがハンドラに扱われる直前に
- 処理されます。これにより、ブラウザや Apache の入力フィルタにより
- 生成されたヘッダを上書きしたり修正したりできるようになっています。
Apache HTTP 泣若 若吾с 2.3
+茯: | HTTP 鴻綽膈鴻帥ゃ |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | headers_module |
純若鴻<ゃ: | mod_headers.c |
篋: | RequestHeader
+ Apache 2.0 篁ラ帥т戎 |
≪吾ャ若 HTTP 鴻綽膈九勝 + 紊眼cc箴障菴遵 + 臀ゃс障
+mod_header
cc泣若荐絎祉若с
+ 吾с綵演帥膀蚊荐絎祉激су蚊ч絎
+ с障
荀с荐絎<ゃ筝荐絎祉激с篏臀筝≧鴻 + 綵演帥障篁ヤ篋ゃ + 腟障:
+ +
+ RequestHeader append MirrorID "mirror 12"
+ RequestHeader unset MirrorID
+
翫MirrorID
荐絎障
+ cMirrorID "mirror 12" 荐絎障
mod_headers
с鴻緇
+ <ч吾鴻障絽吾緇≪若с
+ 潟潟潟絎茵翫鴻祉
+ 鴻潟鴻冴翫鴻潟鴻祉障
+ 筝泣若с綽緇≪若篏帥c
≪若肴鴻/亥荐荐障
+ early
若若絎ccc
+ 鴻紮亥鴻障
+ ゃ障違鴻荅鴻宴若鴻祉≪
+ 羇紫с筝鴻с鴻潟鴻篁≪吾ャ若c
+ 吾障潟障
early ccс鴻鴻荐絎茹f浦
+ с<ゃ潟泣若若c鴻潟潟鴻с帥
+ 祉с障early cc鴻鴻
+ 箴絖с障с<Directory>
+ <Location>
c潟潟鴻с篏睡
+ с障
+ Header echo ^TS
+
MyHeader
綽膈菴遵障ゃ≪潟
+ 泣若莢激頑Τャゃ≪潟-泣若
+ 茯帥鴻篏帥с障
+
+
+ Header add MyHeader "%D %t"
+
筝荐荐絎с篁ヤ綽膈菴遵障:
+ +
+ MyHeader: D=3775428 t=991424704447256
+
+ Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request."
+
篁ヤ綽膈菴遵障
+ +
+ MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request.
+
MyHeader
綽膈
+ 篁障ゃ≪潟荀羆綽篏
+ 綵鴻腴<障箴с mod_setenvif
≪吾ャ若綽荀
+ 羈
+
+
+ SetEnvIf MyRequestHeader value HAVE_MyRequestHeader
+ Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader
+
HTTP 鴻 MyRequestHeader: value
+ 綽膈篁ヤ篁障
+ MyHeader: D=3775428 t=991424704447256 mytext
+
茯: | HTTP 綽膈荐絎 |
---|---|
罕: | Header [condition] set|append|add|unset|echo
+header [value] [early|env=[!]variable] |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Extension |
≪吾ャ若: | mod_headers |
cc HTTP 綽膈臀菴遵ゃс障 + 潟潟潟潟阪c帥絎茵翫絎茵 + 冴茵紊眼сc障
+ +激с潟 condition onsuccess
+ always
<絎с障若
+ 篏羆阪障onsuccess
2xx
+ 鴻若帥鴻潟若always
鴻若帥鴻潟若
+ (2xx
) 潟障
+ ≪吾ャ若с祉≪潟祉翫鴻
+ 若綵演帥絎荅祉с
茵篋綣違ф浦障障 + 綣違罨<ゃ絎с障:
+ +set
append
add
append
鴻
+ 篏帥鴻сunset
echo
綣違緇 (header) 膓障
+ 緇潟潟с障<罕障
+ set
, append
, add
,
+ unset
с紊ф絖絨絖
+ 阪ャ障echo header 紊ф絖絨絖阪ャ
+ 罩h頫憗絎с障
add
, append
,
+ set
с value 筝ょ
+ 綣違絎障value 腥榊純翫篋綣膃
+ 蚊綽荀障value 絖帥絖
+ 若腓阪絖筝≧鴻絖絎с障
+ value 篁ヤ若腓阪泣若障:
若 | 茹h |
---|---|
%% |
+ 若祉潟荐 |
%t |
+ 鴻c祉
+ Universal Coordinated Time с紮障 (Jan. 1, 1970) 腟
+ ゃ腱憗ゃ
+ t= 篁障 |
%D |
+ 鴻c祉冴
+ 綏鴻絖憗障
+ ゃ D= 篁障 |
%{FOOBAR}e |
+ 医紊
+ FOOBAR ゃс |
%{FOOBAR}s |
+ mod_ssl 鴻翫
+ SSL 医紊 FOOBAR
+ 絎 |
%s
若絎絖 2.1 篁ラс水с障
+ SSLOptions +StdEnvVars
鴻若若
+ 帥%e
篁c篏帥障
+ 篁宴c SSLOptions +StdEnvVars
+ 鴻違翫%e
祉
+ %s
合с
Header
cc菴遵綣違
+ сc≪激с潟茵>散絎
+ 絎 early
若若
+ 絎с障
+ env=...
綣違ф絎 医紊 絖 ( env=!...
+ 絎医紊違絖) 翫Header
+ ccф絎篏茵障с翫
+ cc鴻篏障
茯: | HTTP 鴻荐絎 |
---|---|
罕: | RequestHeader set|append|add|unset header
+[value] [early|env=[!]variable] |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Extension |
≪吾ャ若: | mod_headers |
cc HTTP 鴻臀菴遵ゃс障 + 潟潟潟潟絎茵翫絎茵 + ャcャ紊眼純c障 + 茵膃 1 綣違羆冴障障篁ヤゃ絎 + с障:
+ +set
append
add
append
鴻
+ 篏帥鴻сunset
綣違緇 (header) 膓障
+ 緇潟潟с障<罕障
+ 紊ф絖絨絖阪ャ障add
,
+ append
, set
翫value 筝ょ
+ 綣違絎障value 腥榊純翫篋綣膃
+ 蚊綽荀障unset 翫value 絎障
+ value 絖若絎絖羞桁с
+ 篏帥с若絎絖Header
сс
+ 荅括完<荀с
RequestHeader
cc
+ c>散筝с≪激с潟茵絎菴遵綣
+ 絎 early
+ 若若荐絎с障
+ env=...
綣違ц┃絎
+ 医紊 絖
+ ( env=!...
ф絎医紊違
+ 絖) 翫RequestHeader
cc
+ 鴻障篁ュ翫cc劫<障
early ≪若с翫
+ RequestHeader
cc
+ fixup с若冴с鴻潟宴翫
+ 障吟 Apache ュc帥
+ 筝吾篆罩cсc障
Apache HTTP サーバ バージョン 2.3
-説明: | サーバがパースする html ドキュメント (Server Side Includes) |
---|---|
ステータス: | Base |
モジュール識別子: | include_module |
ソースファイル: | mod_include.c |
互換性: | Apache 2.0 から出力フィルタとして実装されました。 |
このモジュールはファイルがクライアントに送られる前に処理するフィルタを - 提供します。処理の内容は要素と呼ばれる特別な形式の SGML コメントにより - 制御されます。これらの要素は条件分岐や、他のファイルや - プログラムの出力の取り込み、環境変数の設定や表示を行なうことが - できます。
-Options
AcceptPathInfo
Server Side Includes は INCLUDES
- フィルタ により実装されています。
- Server-side include のディレクティブを含むドキュメントの拡張子が
- .shtml の場合、以下のディレクティブでは Apache がそれらを
- パースして、その結果できるドキュメントに text/html
の
- MIME タイプを割り当てます:
- AddType text/html .shtml
- AddOutputFilter INCLUDES .shtml
-
以下のディレクティブは shtml ファイルのあるディレクトリで指定されている
- 必要があります (通常は <Directory>
セクションで指定しますが、
- AllowOverride
Options
- が設定されていると、.htaccess
ファイルに書くこともできます):
- Options +Includes
-
互換性を保つために、server-parsed
- ハンドラ も INCLUDES フィルタを
- 有効にします。MIME タイプ text/x-server-parsed-html
や
- text/x-server-parsed-html3
のドキュメントに対しても
- Apache は INCLUDES フィルタを有効にします (出力されるものは
- MIME タイプ text/html
になります)。
詳しい情報は Tutorial on Server Side Includes.
-SSI で処理されるファイルはデフォルトでは PATH_INFO
- (後続のパス名情報)
- 付きのリクエストを受け入れなくなりました。AcceptPathInfo
ディレクティブで
- PATH_INFO
付きのリクエストを受け入れるようにサーバを
- 設定できます。
ドキュメントは、SGML のコメントとして特別なコマンドが埋め込まれた - HTML ドキュメントとしてパースされます。コマンドの構文は次のように - なっています:
- -
- <!--#element attribute=value
- attribute=value ... -->
-
値 (訳注: value) は二重引用符で囲むのが一般的ですが、
- シングルクオート (') とバッククオート (`) も使用できます。
- 多くのコマンドは属性-値 (訳注: attribute-value) の組を一つだけ指定できます。
- コメントの終わり (-->
)
- の前には、SSI の句の一部だと解釈されないようにするために空白を
- 入れてください。最初の <!--#
はまとめて一つの
- 句で、空白をふくんではいけないこと注意してください。
要素 (訳注: element) を以下の表に示します。
- -要素 | 説明 |
---|---|
config |
- configure output formats |
echo |
- print variables |
exec |
- execute external programs |
fsize |
- print size of a file |
flastmod |
- print last modification time of a file |
include |
- include a file |
printenv |
- print all available variables |
set |
- set a value of a variable |
SSI 要素は mod_include
以外のモジュールで
- 定義されることもあります。実際、
- exec
要素は
- mod_cgi
で提供されていて、このモジュールが
- ロードされる場合にのみ利用可能となります。
次のコマンドは解析の様々な側面を制御します。属性は次の通りです。
- -echomsg
(Apache 2.1 以降)echo
- 要素が未定義の変数をエコーしようとした際に、
- クライアントに送られるメッセージになります。
- SSIUndefinedEcho
- ディレクティブを上書きします。errmsg
SSIErrorMsg
- ディレクティブを上書きします。sizefmt
bytes
か、Kb や Mb を優先的に使用する
- abbrec
(例えば 1024 バイトは "1K" と表示されます)
- です。timefmt
strftime(3)
ライブラリルーチンが
- 日時をプリントする際に用いられます。このコマンドは以下で定義されている include
- 変数 を表示します。変数が設定されていない場合は SSIUndefinedEcho
ディレクティブで
- 決定される結果となります。日付はその時点での timefmt
に従って
- 表示されます。属性は次の通りです。
var
encoding
変数を出力する前に、変数中の特別文字をどのようにエンコードするかを
- 指定します。none
に設定されていると、エンコードは行なわれません。
- url
に設定されていると、URL エンコード (%-エンコードとも
- 呼ばれています。これはリンク等の URL の使用に適切です) が
- 行なわれます。echo
要素の開始時は、デフォルトは
- entity
に設定されています。これはエンティティエンコード
- (段落やテキストなどのブロックレベルの HTML エレメントのコンテキストに
- 適しています) を行ないます。これは encoding
属性
- を加えることで変更できます。変更は次の encoding
属性か、
- 要素の終了まで効力を持ちます。
encoding
属性はエンコードの変更をしたい var
- の前に ある必要があることに注意してください。
- また、ISO-8859-1 エンコーディングで
- 定義されている特別な文字だけがエンコードされます。
- 別の文字のエンコーディングの場合は、このエンコーディングは
- 望みの結果にならないかもしれません。
exec
コマンドは指定されたシェルコマンドや CGI スクリプトを
- 実行します。mod_cgi
がサーバに組み込まれているいなければ
- なりません。Option
- IncludesNOEXEC
はこのコマンドを無効にします。
- 使用可能な属性は次の通りです。
cgi
値は (%-エンコードされた) URL を指定します。パスが
- スラッシュ (/) で始まらないときは、ドキュメントからの
- 相対パスとして扱われます。このパスで参照されているドキュメントは
- サーバが CGI スクリプトとして扱っていなくても CGI スクリプトとして
- 起動されます。ただし、スクリプトのあるディレクトリでは
- (ScriptAlias
- や Option
ExecCGI
- によって) CGI スクリプトの使用が許可されている必要があります。
CGI スクリプトには、クライアントからの元々のリクエストの
- PATH_INFO
とクエリー文字列 (QUERY_STRING
) が渡されます。
- これらは URL パスとして特定できないものです。
- スクリプトは標準 CGI 環境に加えて、include 変数を
- 使用することができます。
- <!--#exec cgi="/cgi-bin/example.cgi" -->
-
スクリプトが、出力の代わりに Location:
ヘッダを返すと、
- HTML のアンカー (訳注:リンク) に変換されます。
exec cgi
よりも、
- include virtual
- の方を使うようにしてください。特に、CGI への追加の引数を
- クエリー文字列を使って渡すことは exec cgi
は
- できませんが、include virtual
は以下のようにして
- 可能です。
- <!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
-
cmd
サーバは指定された文字列を /bin/sh
を使って
- 実行します。コマンドは通常の CGI 変数に加えて include 変数も使うことができます。
ほとんどの場合、#include
- virtual
を使う方が #exec cgi
や #exec
- cmd
を使うよりも良いです。前者 (#include virtual
)
- は標準の Apache のサブリクエスト機構を使ってファイルやスクリプトの
- 出力を取り込みます。
- こちらの方がよくテストされメンテナンスされた方法です。
さらに、Win32 のようないくつかのプラットフォームや、suexec を使っている unix では、
- exec
ディレクティブのコマンドに
- 引数を渡したり、コマンドに空白を入れることはできません。
- ですから、以下のものは unix の suexec でない設定では動作しますが、
- Win32 や suexec を使っている unix では期待した結果にはなりません:
- <!--#exec cmd="perl /path/to/perlscript arg1 arg2" -->
-
このコマンドは指定されたファイルの大きさを sizefmt
の
- 書式指定に基づいて出力します。属性は次の通りです。
file
virtual
このコマンドは指定されたファイルの最終修正時刻を
- timefmt
書式指定に従って表示します。
- 指定可能な属性は fsize
コマンドと同じです。
このコマンドは別の文書やファイルのテキストを解析しているファイルに
- 挿入します。挿入されるファイルはアクセス制御の管理下にあります。
- 解析しているファイルの存在するディレクトリに
- Option IncludesNOEXEC
- が設定されている場合、text MIME タイプ (text/plain
,
- text/html
等) のドキュメントのみインクルードが行なわれます。
- その他の場合は、クエリー文字列も含め、コマンドで指定された
- 完全な URL を使って普通に CGI スクリプトが呼び出されます。
属性が文書の位置を指定します。include コマンドに与えられたそれぞれの - 属性に対して挿入作業が行なわれます。有効な属性は次の通りです。
- -file
../
を含んでいたり、絶対パスを指定したりはできません。
- ですから、ドキュメントルートの外にあるファイルや、ディレクトリ構造で
- 上位にあるファイルを挿入することはできません。
- 常にこの属性よりは、virtual
属性を使うようにしてください。
- virtual
値は解析されているドキュメントからの (% エンコードされた) URL - です。URL にはスキームやホスト名を含めることはできません。パスと、 - もしあればクエリー文字列を指定できるだけです。スラッシュ (/) から - 始まらない場合は、ドキュメントからの相対パスとして扱われます。
- -URL は属性から作られ、その URL をクライアントがアクセスしたときに - 出力される内容が解析後の出力に含められます。ですから、挿入される - ファイルは入れ子構造にすることができます。
- -指定された URL が CGI プログラムであった場合は、 - プログラムが実行され、その出力が解析しているファイル中の - ディレクティブがあった位置に挿入されます。CGI の url に - クエリー URL を入れることもできます。
- -
- <!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
-
HTML ドキュメントに CGI プログラムの出力を含める方法としては、
- include virtual
の方が exec cgi
よりも
- 好ましい方法です。
これは、存在するすべての変数とその値を表示します。Apache 1.3.12 から、
- 特別な文字は出力される前にエンティティエンコード (詳細は echo
要素を参照)
- されるようになりました。属性はありません。
- <!--#printenv -->
-
これは変数の値を設定します。属性は次の通りです。
- -var
value
- <!--#set var="category" value="help" -->
-
標準 CGI 環境の変数に加えて、echo
コマンドや、
- if
や elif
, それにドキュメントから呼び出される
- すべてのプログラムから使用できる変数があります。
DATE_GMT
DATE_LOCAL
DOCUMENT_NAME
DOCUMENT_URI
LAST_MODIFIED
QUERY_STRING_UNESCAPED
&
- といった特殊文字にはバックスラッシュが直前に置かれます)。変数置換はたいていの場合 SSI ディレクティブの引数として妥当な場所にある
- 引用符で囲まれた文字列中で行なわれます。これに該当するものには、
- config
,
- exec
, flastmod
, fsize
,
- include
, echo
, set
の
- 各ディレクティブと、条件分岐用のオペレータへの引数があります。
- ドル記号はバックスラッシュを使うことで使うことができます:
- <!--#if expr="$a = \$test" -->
-
変数名としてみなされる文字列の中で変数への参照を置換する必要があるときは、 - シェルでの変数置換のように、中括弧で括ることで区別することができます:
- -
- <!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" -->
-
この例では、REMOTE_HOST
が
- "X
" で REQUEST_METHOD
が
- "Y
" のときに変数 Zed
を "X_Y
"
- に設定します。
以下の例では、DOCUMENT_URI
が /foo/file.html
- のときに "in foo" を、/bar/file.html
のときに "in bar" を、
- どちらでもないときには "in neither" を表示します。
- <!--#if expr='"$DOCUMENT_URI" = "/foo/file.html"' -->
-
- in foo
-
- <!--#elif expr='"$DOCUMENT_URI" = "/bar/file.html"' -->
-
- in bar
-
- <!--#else -->
-
- in neither
-
- <!--#endif -->
-
基本的なフローコントロール要素は次の通りです。
- -
- <!--#if expr="test_condition" -->
- <!--#elif expr="test_condition" -->
- <!--#else -->
- <!--#endif -->
-
if
要素はプログラミング言語の
- if 文と同じように動作します。条件が評価され、結果が真であれば次の
- elif
か else
か endif
- 要素までの文字列が出力に挿入されます。
elif
や else
文は test_condition
- が偽のときにテキストを出力に挿入するために使われます。
- これらの要素はあってもなくても構いません。
endif
要素は if
- 要素を終了させます。この要素は必須です。
test_condition は以下のどれかです:
- -string
string1 = string2
- string1 == string2
- string1 != string2
string1 と string2 を比較します。
- string2 が /string/
- という形式であれば、正規表現として比較されます。正規表現は
- PCRE エンジンで実装されていて、
- perl 5 と同じ構文を使用します。
- ==
は単に =
の別名で、まったく同じ動作を
- します。
正のマッチング (=
または ==
) の場合は、
- 正規表現でグループ分けされたパーツをキャプチャすることができます。
- キャプチャされた部分は特殊変数 $1
.. $9
- に格納されます。
- <!--#if expr="$QUERY_STRING = /^sid=([a-zA-Z0-9]+)/" -->
-
- <!--#set var="session" value="$1" -->
-
- <!--#endif -->
-
string1 < string2
- string1 <= string2
- string1 > string2
- string1 >= string2
strcmp(3)
を使用)
- ことに注意してください。ですから、文字列 "100" は "20"
- よりも小さいことになります。( test_condition )
! test_condition
test_condition1 &&
- test_condition2
test_condition1 ||
- test_condition2
"=" と "!=" の方が "&&" より - きつく束縛します。"!" の束縛が一番きつくなっています。 - ですから以下の二つは等価です:
- -
- <!--#if expr="$a = test1 && $b = test2" -->
- <!--#if expr="($a = test1) && ($b = test2)" -->
-
真偽値オペレータ &&
と ||
- は同じ優先度です。
- これらのオペレータで一方により強い優先度をつけたい場合には、
- 括弧を使う必要があります。
変数やオペレータとして認識されないものはすべて文字列として
- 扱われます。文字列は引用符で囲むこともできます: 'string'
- のように。引用符で囲まれていない文字列には空白 (スペースとタブ)
- を含めることはできません。それらは変数などの句を分離するために
- 使われているからです。複数の文字列が続いているときは、
- 空白を間に入れて一つにくっつけられます。ですから、
string1 string2
は string1 string2
になります。
-
- また、
-
- 'string1 string2'
は string1 string2
- になります。
式がもっと複雑になり、処理の速度低下が顕著になった場合は、 - 評価ルールに従って最適化してみると良いでしょう。
-&&
と ||
)
- は、出来る限り短絡評価されます。つまり結果として上記のルールは、
- mod_include
が左の評価式を評価します。
- 左側で結果を十分決定できる場合は、評価はそこで停止します。
- そうでない場合は右側を評価して、左と右の両方から結果を計算します。$1
.. $9
)
- を埋めるために、実際に評価する必要があるからです。特定の式がどのように扱われるかを知りたい場合は、
- -DDEBUG_INCLUDE
コンパイラオプションを付けて
- mod_include
をリコンパイルすると良いでしょう。
- これにより、全てのパースされた式に対して、字句解析情報、
- パースツリーと、
- それがどのようにクライアントに送られた出力まで評価されたかを
- 挿入します。
説明: | include 要素を終了させる文字列 |
---|---|
構文: | SSIEndTag tag |
デフォルト: | SSIEndTag "-->" |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_include |
互換性: | 2.0.30 以降で利用可能 |
このディレクティブは mod_include
が探す、
- include 要素の終了を示す文字列を変更します。
- SSIEndTag "%>"
-
SSIStartTag
説明: | SSI のエラーがあったときに表示されるエラーメッセージ |
---|---|
構文: | SSIErrorMsg message |
デフォルト: | SSIErrorMsg "[an error occurred while processing this
-directive]" |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | All |
ステータス: | Base |
モジュール: | mod_include |
互換性: | バージョン 2.0.30 以降で使用可能 |
SSIErrorMsg
ディレクティブは mod_include
- がエラーが起こったときに表示するメッセージを変更します。プロダクションサーバでは
- メッセージがユーザに表示されないようにするために
- デフォルトエラーメッセージを "<!-- Error -->"
- に変えるというようなことを考えるかもしれません。
このディレクティブは <!--#config
- errmsg=message -->
要素と同じ効果になります。
- SSIErrorMsg "<!-- Error -->"
-
説明: | include 要素を開始する文字列 |
---|---|
構文: | SSIStartTag tag |
デフォルト: | SSIStartTag "<!--#" |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_include |
互換性: | バージョン 2.0.30 以降で使用可能 |
このディレクティブは mod_include
が探す、include
- 要素の開始を示す文字列を変更します。
二つのサーバで (もしかすると別々の段階で) ファイルの出力を解析していて、 - それぞれに違うコマンドを処理させたい、 - というようなときにこのオプションを使います。
- -
- SSIStartTag "<%"
- SSIEndTag "%>"
-
上の例のように対応する
- SSIEndTag
を併せて使うと、
- 下に示す例のように SSI ディレクティブを使えます:
- <%printenv %>
-
SSIEndTag
説明: | 日付けを現す文字列の書式を設定する |
---|---|
構文: | SSITimeFormat formatstring |
デフォルト: | SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z" |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | All |
ステータス: | Base |
モジュール: | mod_include |
互換性: | 2.0.30 以降で使用可能 |
このディレクティブは DATE
環境変数を echo して日付を現す文字列が
- 表示されるときの書式を変更します。formatstring は
- C 標準ライブラリの strftime(3)
と同じ形式です。
このディレクティブは <!--#config
- timefmt=formatstring -->
要素と同じ効果になります。
- SSITimeFormat "%R, %B %d, %Y"
-
上のディレクティブでは、日付は "22:26, June 14, 2002" という - 形式で表示されます。
- -説明: | 未定義の変数が echo されたときに表示される文字列 |
---|---|
構文: | SSIUndefinedEcho string |
デフォルト: | SSIUndefinedEcho "(none)" |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | All |
ステータス: | Base |
モジュール: | mod_include |
互換性: | 2.0.34 以降で利用可能 |
このディレクティブは変数が定義されていないにも関わらず
- "echo" されたときに mod_include
- が表示する文字列を変更します。
- SSIUndefinedEcho "<!-- undef -->"
-
説明: | 実行ビットが設定されたファイルの SSI ディレクティブを -解析する |
---|---|
構文: | XBitHack on|off|full |
デフォルト: | XBitHack off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Options |
ステータス: | Base |
モジュール: | mod_include |
XBitHack
ディレクティブは通常の HTML
- ドキュメントの解析を制御します。このディレクティブは MIME タイプ
- text/html
と関連付けられているファイルにのみ影響します。
- XBitHack
は以下の値をとることができます。
off
on
text/html
- ファイルは全てサーバで解析する html ドキュメントとして扱われます。full
on
と同様ですが、グループ実行ビットもテストします。
- もしそれが設定されていれば、返されるファイルの Last-modified
の
- 日付をファイルの最終修正時刻にします。それが設定されていないときは、
- last-modified の日付は送られません。このビットを設定すると、
- クライアントやプロキシがリクエストをキャッシュできるようになります。
-
- #include
- するかもしれないものや、各アクセスに対して違う出力を生成する
- (もしくは後のリクエストで変わるかもしれないもの)
- すべての SSI スクリプトに対してグループ実行ビットが
- 設定されていないことを確認できない場合は、full は使わない方が良い
- でしょう。Apache HTTP 泣若 若吾с 2.3
+茯: | 泣若若鴻 html ャ<潟 (Server Side Includes) |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | include_module |
純若鴻<ゃ: | mod_include.c |
篋: | Apache 2.0 阪c帥絎茖障 |
≪吾ャ若<ゃゃ≪潟c帥 + 箴障絎鴻荀膣若違劫ャ綵√ SGML 潟<潟 + 九勝障荀膣>散絏篁<ゃ + 違阪莨若帥医紊違荐絎茵腓冴茵 + с障
+Options
AcceptPathInfo
Server Side Includes INCLUDES
+ c 絎茖障
+ Server-side include ccャ<潟≦宍絖
+ .shtml 翫篁ヤccс Apache
+ 若鴻腟сャ<潟 text/html
+ MIME 帥ゃ蚊綵障:
+ AddType text/html .shtml
+ AddOutputFilter INCLUDES .shtml
+
篁ヤcc shtml <ゃcф絎
+ 綽荀障 (絽吾 <Directory>
祉激с潟ф絎障
+ AllowOverride
Options
+ 荐絎.htaccess
<ゃ吾с障):
+ Options +Includes
+
篋с篆ゃserver-parsed
+ 潟 INCLUDES c帥
+ 鴻障MIME 帥ゃ text/x-server-parsed-html
+ text/x-server-parsed-html3
ャ<潟絲障
+ Apache INCLUDES c帥鴻障 (阪
+ MIME 帥ゃ text/html
障)
SSI у<ゃс PATH_INFO
+ (緇膓劫)
+ 篁鴻ャ障AcceptPathInfo
cc
+ PATH_INFO
篁鴻ャ泣若
+ 荐絎с障
ャ<潟SGML 潟<潟劫ャ潟潟莨若障 + HTML ャ<潟若鴻障潟潟罕罨< + c障:
+ +
+ <!--#element attribute=value
+ attribute=value ... -->
+
(荐恰絵: value) 篋綣膃у蚊筝с
+ 激潟違若 (') 若 (`) 篏睡с障
+ 紊潟潟絮- (荐恰絵: attribute-value) 腟筝ゃ絎с障
+ 潟<潟腟 (-->
)
+ SSI ャ筝茹i腥榊純
+ ャ <!--#
障筝
+ ャс腥榊純泣с羈
荀膣 (荐恰絵: element) 篁ヤ茵腓冴障
+ +荀膣 | 茯 |
---|---|
config |
+ configure output formats |
echo |
+ print variables |
exec |
+ execute external programs |
fsize |
+ print size of a file |
flastmod |
+ print last modification time of a file |
include |
+ include a file |
printenv |
+ print all available variables |
set |
+ set a value of a variable |
SSI 荀膣 mod_include
篁ュ≪吾ャ若
+ 絎臂障絎
+ exec
荀膣
+ mod_cgi
ф箴≪吾ャ若
+ 若翫水純障
罨<潟潟茹f罕顔≪九勝障絮с罨<с
+ +echomsg
(Apache 2.1 篁ラ)echo
+ 荀膣絎臂紊違潟若
+ ゃ≪潟<祉若吾障
+ SSIUndefinedEcho
+ cc筝吾障errmsg
SSIErrorMsg
+ cc筝吾障sizefmt
bytes
Kb Mb 篏睡
+ abbrec
(箴 1024 ゃ "1K" 茵腓冴障)
+ сtimefmt
strftime(3)
ゃ若潟
+ ユ潟障潟潟篁ヤу臂 include
+ 紊 茵腓冴障紊違荐絎翫 SSIUndefinedEcho
cc
+ 羆阪腟障ヤ鴻с timefmt
緇c
+ 茵腓冴障絮с罨<с
var
encoding
紊違阪紊遺賢劫ユ絖潟潟若
+ 絎障none
荐絎潟潟若茵障
+ url
荐絎URL 潟潟若 (%-潟潟若
+ 若違障潟膈 URL 篏睡с)
+ 茵障echo
荀膣紮
+ entity
荐絎障潟cc潟潟若
+ (罧笈純鴻 HTML <潟潟潟鴻
+ 障) 茵障 encoding
絮
+ у眼с障紊眼罨< encoding
絮с
+ 荀膣腟篋障у劫<障
encoding
絮с潟潟若紊眼 var
+ 綽荀羈
+ 障ISO-8859-1 潟潟若c潟違
+ 絎臂劫ャ絖潟潟若障
+ ャ絖潟潟若c潟違翫潟潟若c潟違
+ 帥腟障
exec
潟潟絎激с潟潟 CGI 鴻
+ 絎茵障mod_cgi
泣若腟粋昭障
+ 障Option
+ IncludesNOEXEC
潟潟≦鴻障
+ 篏睡純絮с罨<с
cgi
ゃ (%-潟潟若) URL 絎障鴻
+ 鴻激 (/) у障ャ<潟
+ 後障鴻宴障鴻усャ<潟
+ 泣若 CGI 鴻宴c CGI 鴻
+ 莎桁障鴻cс
+ (ScriptAlias
+ Option
ExecCGI
+ c) CGI 鴻篏睡荐怨綽荀障
CGI 鴻ゃ≪潟鴻
+ PATH_INFO
惹絖 (QUERY_STRING
) 羝<障
+ URL 鴻劫сс
+ 鴻罔羣 CGI 医include 紊違
+ 篏睡с障
+ <!--#exec cgi="/cgi-bin/example.cgi" -->
+
鴻阪篁c Location:
菴
+ HTML ≪潟 (荐恰絵鐚潟) 紊障
exec cgi
+ include virtual
+ 鴻篏帥鴻CGI 吾菴遵綣違
+ 惹絖篏帥c羝< exec cgi
+ с障include virtual
篁ヤ
+ 純с
+ <!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
+
cmd
泣若絎絖 /bin/sh
篏帥c
+ 絎茵障潟潟絽吾 CGI 紊違 include 紊篏帥с障
祉翫#include
+ virtual
篏帥鴻 #exec cgi
#exec
+ cmd
篏帥с (#include virtual
)
+ 罔羣 Apache 泣鴻罘罕篏帥c<ゃ鴻
+ 阪莨若帥障
+ <鴻鴻<潟潟鴻号с
Win32 ゃ若suexec 篏帥c unix с
+ exec
cc潟潟
+ 綣違羝<潟潟腥榊純ャс障
+ с篁ヤ unix suexec с荐絎с篏障
+ Win32 suexec 篏帥c unix с緇腟障:
+ <!--#exec cmd="perl /path/to/perlscript arg1 arg2" -->
+
潟潟絎<ゃ紊с sizefmt
+ 後絎冴ャ阪障絮с罨<с
file
virtual
潟潟絎<ゃ腟篆罩f祉
+ timefmt
後絎緇c茵腓冴障
+ 絎純絮с fsize
潟潟с
潟潟ャ吾<ゃ鴻茹f<ゃ
+ 水ャ障水ャ<ゃ≪祉劫九勝膊∞筝障
+ 茹f<ゃ絖c
+ Option IncludesNOEXEC
+ 荐絎翫text MIME 帥ゃ (text/plain
,
+ text/html
膈) ャ<潟帥ゃ潟若茵障
+ 篁翫惹絖潟潟ф絎
+ 絎 URL 篏帥c CGI 鴻若喝冴障
絮с吾篏臀絎障include 潟潟筝 + 絮с絲障水ヤ罐茵障鴻絮с罨<с
+ +file
../
с腟九障鴻絎с障
+ сャ<潟若紊<ゃc罕
+ 筝篏<ゃ水ャс障
+ 絽吾絮сvirtual
絮с篏帥
+ virtual
ゃ茹fャ<潟 (% 潟潟若) URL + сURL 鴻若鴻с障鴻 + 違惹絖絎сс鴻激 (/) + 紮障翫ャ<潟後障鴻宴障
+ +URL 絮с篏 URL ゃ≪潟≪祉鴻 + 阪絎鴻茹f緇阪障с水ャ + <ゃャ絖罕с障
+ +絎 URL CGI 違сc翫 + 違絎茵阪茹f<ゃ筝 + ccc篏臀水ャ障CGI url + URL ャс障
+ +
+ <!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
+
HTML ャ<潟 CGI 違阪号
+ include virtual
鴻 exec cgi
+ 絅純障号с
絖鴻紊違ゃ茵腓冴障Apache 1.3.12
+ 劫ャ絖阪潟cc潟潟若 (荅括完 echo
荀膣)
+ 障絮с障
+ <!--#printenv -->
+
紊違ゃ荐絎障絮с罨<с
+ +var
value
+ <!--#set var="category" value="help" -->
+
罔羣 CGI 医紊違echo
潟潟
+ if
elif
, ャ<潟若喝冴
+ 鴻違篏睡с紊違障
DATE_GMT
DATE_LOCAL
DOCUMENT_NAME
DOCUMENT_URI
LAST_MODIFIED
QUERY_STRING_UNESCAPED
&
+ c号絖鴻激ャ翫臀障)紊亥舟翫 SSI cc綣違絋ュ贋
+ 綣膃у蚊障絖筝ц障荅峨
+ config
,
+ exec
, flastmod
, fsize
,
+ include
, echo
, set
+ cc>散絏若帥吾綣違障
+ 荐垩鴻激ャ篏帥т戎с障:
+ <!--#if expr="$a = \$test" -->
+
紊医帥絖筝у違吾с臀綽荀 + 激сс紊亥舟筝綣сфу阪ャс障:
+ +
+ <!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" -->
+
箴сREMOTE_HOST
+ "X
" REQUEST_METHOD
+ "Y
" 紊 Zed
"X_Y
"
+ 荐絎障
篁ヤ箴сDOCUMENT_URI
/foo/file.html
+ "in foo" /bar/file.html
"in bar"
+ <с "in neither" 茵腓冴障
+ <!--#if expr='"$DOCUMENT_URI" = "/foo/file.html"' -->
+
+ in foo
+
+ <!--#elif expr='"$DOCUMENT_URI" = "/bar/file.html"' -->
+
+ in bar
+
+ <!--#else -->
+
+ in neither
+
+ <!--#endif -->
+
堺若潟潟若荀膣罨<с
+ +
+ <!--#if expr="test_condition" -->
+ <!--#elif expr="test_condition" -->
+ <!--#else -->
+ <!--#endif -->
+
if
荀膣違潟域茯
+ if 篏障>散荅箴<腟с井<
+ elif
else
endif
+ 荀膣障с絖阪水ャ障
elif
else
test_condition
+ 純鴻阪水ャ篏帥障
+ 荀膣c罕障
endif
荀膣 if
+ 荀膣腟篋障荀膣綽с
test_condition 篁ヤс:
+ +string
string1 = string2
+ string1 == string2
+ string1 != string2
string1 string2 罸莠障
+ string2 /string/
+ 綵√с違罩h頫憗罸莠障罩h頫憗
+ PCRE 潟吾潟у茖
+ perl 5 罕篏睡障
+ ==
=
ュс障c篏
+ 障
罩c潟 (=
障 ==
) 翫
+ 罩h頫憗с違若若ccс障
+ cc号紊 $1
.. $9
+ 主障
+ <!--#if expr="$QUERY_STRING = /^sid=([a-zA-Z0-9]+)/" -->
+
+ <!--#set var="session" value="$1" -->
+
+ <!--#endif -->
+
string1 < string2
+ string1 <= string2
+ string1 > string2
+ string1 >= string2
strcmp(3)
篏睡)
+ 羈с絖 "100" "20"
+ 絨障( test_condition )
! test_condition
test_condition1 &&
+ test_condition2
test_condition1 ||
+ test_condition2
"=" "!=" 鴻 "&&" + ゃ膰障"!" 膰筝ゃc障 + с篁ヤ篋ゃ膈箴<с:
+ +
+ <!--#if expr="$a = test1 && $b = test2" -->
+ <!--#if expr="($a = test1) && ($b = test2)" -->
+
遵ゃ若 &&
||
+ 綺с
+ 若帥т鴻綣激綺ゃ翫
+ 綣с篏帥綽荀障
紊違若帥茯茘鴻絖
+ 宴障絖綣膃у蚊с障: 'string'
+ 綣膃у蚊障絖腥榊 (鴻若鴻帥)
+ с障紊違ャ≪
+ 篏帥с茲違絖膓
+ 腥榊純ャ筝ゃcゃ障с
string1 string2
string1 string2
障
+
+ 障
+
+ 'string1 string2'
string1 string2
+ 障
綣c茲綺篏筝蕁c翫 + 荅箴<若緇c帥с
+&&
||
)
+ 堺ャ腟∴箴<障ゃ障腟筝荐若
+ mod_include
綏荅箴≦荅箴<障
+ 綏眼х羆阪с翫荅箴<у罩≪障
+ с翫勀眼荅箴<綏劻筝≧鴻腟荐膊障$1
.. $9
)
+ 絎荅箴<綽荀с劫綣宴ャ翫
+ -DDEBUG_INCLUDE
潟潟ゃ激с潟篁
+ mod_include
潟潟ゃс
+ 若鴻綣絲障絖ヨВ宴
+ 若鴻若
+ ゃ≪潟阪障ц箴<
+ 水ャ障
茯: | include 荀膣腟篋絖 |
---|---|
罕: | SSIEndTag tag |
: | SSIEndTag "-->" |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_include |
篋: | 2.0.30 篁ラу |
cc mod_include
「
+ include 荀膣腟篋腓冴絖紊眼障
+ SSIEndTag "%>"
+
SSIStartTag
茯: | SSI 若c茵腓冴若<祉若 |
---|---|
罕: | SSIErrorMsg message |
: | SSIErrorMsg "[an error occurred while processing this
+directive]" |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Base |
≪吾ャ若: | mod_include |
篋: | 若吾с 2.0.30 篁ラт戎 |
SSIErrorMsg
cc mod_include
+ 若莎激c茵腓冴<祉若吾紊眼障激с潟泣若с
+ <祉若吾若吟茵腓冴
+ 若<祉若吾 "<!-- Error -->"
+ 紊障
cc <!--#config
+ errmsg=message -->
荀膣号障
+ SSIErrorMsg "<!-- Error -->"
+
茯: | include 荀膣紮絖 |
---|---|
罕: | SSIStartTag tag |
: | SSIStartTag "<!--#" |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_include |
篋: | 若吾с 2.0.30 篁ラт戎 |
cc mod_include
「include
+ 荀膣紮腓冴絖紊眼障
篋ゃ泣若 (ャ罧級) <ゃ阪茹f + 潟潟 + 激с潟篏帥障
+ +
+ SSIStartTag "<%"
+ SSIEndTag "%>"
+
筝箴絲上
+ SSIEndTag
篏泣篏帥
+ 筝腓冴箴 SSI cc篏帥障:
+ <%printenv %>
+
SSIEndTag
茯: | ヤ憗絖後荐絎 |
---|---|
罕: | SSITimeFormat formatstring |
: | SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z" |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Base |
≪吾ャ若: | mod_include |
篋: | 2.0.30 篁ラт戎 |
cc DATE
医紊違 echo ヤ憗絖
+ 茵腓冴後紊眼障formatstring
+ C 罔羣ゃ strftime(3)
綵√с
cc <!--#config
+ timefmt=formatstring -->
荀膣号障
+ SSITimeFormat "%R, %B %d, %Y"
+
筝ccсヤ "22:26, June 14, 2002" + 綵√ц;腓冴障
+ +茯: | 絎臂紊違 echo 茵腓冴絖 |
---|---|
罕: | SSIUndefinedEcho string |
: | SSIUndefinedEcho "(none)" |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Base |
≪吾ャ若: | mod_include |
篋: | 2.0.34 篁ラу |
cc紊違絎臂≪
+ "echo" mod_include
+ 茵腓冴絖紊眼障
+ SSIUndefinedEcho "<!-- undef -->"
+
茯: | 絎茵荐絎<ゃ SSI cc +茹f |
---|---|
罕: | XBitHack on|off|full |
: | XBitHack off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Options |
鴻若帥: | Base |
≪吾ャ若: | mod_include |
XBitHack
cc絽吾 HTML
+ ャ<潟茹f九勝障cc MIME 帥ゃ
+ text/html
∫d<ゃ水襲帥障
+ XBitHack
篁ヤゃс障
off
on
text/html
+ <ゃ泣若цВ html ャ<潟宴障full
on
罕с違若絎茵鴻障
+ 荐絎違菴<ゃ Last-modified
+ ヤ<ゃ腟篆罩f祉障荐絎
+ last-modified ヤ障荐絎
+ ゃ≪潟激鴻c激ャс障
+
+ #include
+ ≪祉鴻絲障阪
+ (緇鴻у)
+ 鴻 SSI 鴻絲障違若絎茵
+ 荐絎腆肴с翫full 篏帥鴻
+ сApache HTTP サーバ バージョン 2.3
-説明: | サーバの設定の包括的な概観を提供する |
---|---|
ステータス: | Extension |
モジュール識別子: | info_module |
ソースファイル: | mod_info.c |
mod_info
を設定するには、以下を httpd.conf
- ファイルに加えます。
- <Location /server-info>
-
- SetHandler server-info
-
- </Location>
-
<Location>
- の中で mod_access
を使って、サーバ設定情報への
- アクセスを制限したいと思うかもしれません :
- <Location /server-info>
-
- SetHandler server-info
- Order deny,allow
- Deny from all
- Allow from yourcompany.com
-
- </Location>
-
一旦設定すると、http://your.host.example.com/server-info
- にアクセスすることでサーバの情報を得られるようになります。
一旦 mod_info
がサーバに読み込まれると、
- 提供しているハンドラ機能はディレクトリ毎の設定ファイル (例えば
- .htaccess) を含む すべての設定ファイルで有効になります。
- このモジュールを有効にするときはセキュリティの問題を考慮する必要が
- あるでしょう。
特に、このモジュールはシステムパス、ユーザ名/パスワード、 - データベース名など、他の Apache モジュールの設定ディレクティブから - セキュリティ上微妙な情報を漏らす可能性があります。 - ですから、このモジュールはきちんとアクセス制御された環境でのみ、 - 注意して使ってください。
- -設定情報へのアクセスを制限するために、mod_authz_host
を
- 使うのが良いでしょう。
- <Location /server-info>
-
- SetHandler server-info
- Order allow,deny
- # Allow access from server itself
- Allow from 127.0.0.1
- # Additionally, allow access from local workstation
- Allow from 192.168.1.17
-
- </Location>
-
デフォルトでは、サーバ情報はすべての有効なモジュールと、 - 各モジュールについて、モジュールが理解するディレクティブ、 - 実装している、フック、現時点での設定の関連するディレクティブに - なっています。
- -server-info
リクエストへクエリーを追加することで、
- 設定情報の他の表示形式を選ぶことができます。例えば、
- http://your.host.example.com/server-info?config
は
- すべての設定ディレクティブを表示します。
?<module-name>
?config
?hooks
?list
?server
mod_info
は、元の設定ファイルを読むのではなく、
- 既にパースされた設定を読み込むことで情報を提供します。従って、
- パース済みの設定情報の木が生成される方法による制限がいくつかあります:
ServerRoot
,
- LoadModule
,
- LoadFile
があります。Include
,
- <IfModule>
,
- <IfDefine>
,
- のような設定ファイル自身を制御するディレクティブは表示されません。
- そのディレクティブの中にあり、有効になっているディレクティブは
- 表示されます。.htaccess
ファイルの設定ディレクティブは表示されません
- (永久的なサーバ設定の一部ではないからです)。<Directory>
- のようなコンテナディレクティブは普通に表示されますが、
- mod_info
は閉じタグの </Directory>
などの数を知ることはできません。mod_perl
のようなサードパーティモジュール
- のディレクティブは表示されないかもしれません。説明: | server-info ハンドラにより表示されるモジュールの情報に -追加の情報を付け加える |
---|---|
構文: | AddModuleInfo module-name string |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_info |
互換性: | Apache 1.3 以降 |
これは、string の内容がモジュール module-name - の追加情報 として HTML - として解釈され、表示されるようにします。例:
- -
- AddModuleInfo mod_deflate.c 'See <a \
-
- href="http://www.apache.org/docs/trunk/mod/mod_deflate.html">\
- http://www.apache.org/docs/trunk/mod/mod_deflate.html</a>'
-
-
Apache HTTP 泣若 若吾с 2.3
+茯: | 泣若荐絎网荀潟箴 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | info_module |
純若鴻<ゃ: | mod_info.c |
mod_info
荐絎篁ヤ httpd.conf
+ <ゃ障
+ <Location /server-info>
+
+ SetHandler server-info
+
+ </Location>
+
<Location>
+ 筝 mod_access
篏帥c泣若荐絎宴吾
+ ≪祉鴻狗障 :
+ <Location /server-info>
+
+ SetHandler server-info
+ Order deny,allow
+ Deny from all
+ Allow from yourcompany.com
+
+ </Location>
+
筝荐絎http://your.host.example.com/server-info
+ ≪祉鴻с泣若宴緇障
筝 mod_info
泣若茯粋昭障
+ 箴潟罘純c罸荐絎<ゃ (箴
+ .htaccess) 鴻荐絎<ゃф鴻障
+ ≪吾ャ若鴻祉ャc馹綽荀
+ с
鴻≪吾ャ若激鴻鴻若九/鴻若 + 若帥若劫篁 Apache ≪吾ャ若荐絎cc + 祉ャd緇絋宴羲醇с障 + с≪吾ャ若<≪祉劫九勝医 + 羈篏帥c
+ +荐絎宴吾≪祉鴻狗mod_authz_host
+ 篏帥с
+ <Location /server-info>
+
+ SetHandler server-info
+ Order allow,deny
+ # Allow access from server itself
+ Allow from 127.0.0.1
+ # Additionally, allow access from local workstation
+ Allow from 192.168.1.17
+
+ </Location>
+
с泣若宴鴻鴻≪吾ャ若 + ≪吾ャ若ゃ≪吾ャ若茹ccc + 絎茖憝鴻с荐絎∫ccc + c障
+ +server-info
鴻吾若菴遵с
+ 荐絎宴篁茵腓阪就綣吾吟с障箴違
+ http://your.host.example.com/server-info?config
+ 鴻荐絎cc茵腓冴障
?<module-name>
?config
?hooks
?list
?server
mod_info
荐絎<ゃ茯с
+ ≪若鴻荐絎茯粋昭ф宴箴障緇c
+ 若号帥荐絎宴号狗ゃ障:
ServerRoot
,
+ LoadModule
,
+ LoadFile
障Include
,
+ <IfModule>
,
+ <IfDefine>
,
+ 荐絎<ゃ荳九勝cc茵腓冴障
+ cc筝鴻ccc
+ 茵腓冴障.htaccess
<ゃ荐絎cc茵腓冴障
+ (羂娯泣若荐絎筝сс)<Directory>
+ 潟潟cc茵腓冴障
+ mod_info
帥違 </Directory>
違ャс障mod_perl
泣若若c≪吾ャ若
+ cc茵腓冴障茯: | server-info 潟茵腓冴≪吾ャ若宴 +菴遵宴篁 |
---|---|
罕: | AddModuleInfo module-name string |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_info |
篋: | Apache 1.3 篁ラ |
string 絎鴻≪吾ャ若 module-name + 菴遵 HTML + 茹i茵腓冴障箴:
+ +
+ AddModuleInfo mod_deflate.c 'See <a \
+
+ href="http://www.apache.org/docs/trunk/mod/mod_deflate.html">\
+ http://www.apache.org/docs/trunk/mod/mod_deflate.html</a>'
+
+
Apache HTTP サーバ バージョン 2.3
-説明: | サーバへのリクエストのロギング |
---|---|
ステータス: | Base |
モジュール識別子: | log_config_module |
ソースファイル: | mod_log_config.c |
- このモジュールはクライアントのリクエストを柔軟にログ収集する機能を - 提供します。ログはカスタマイズ可能な書式で書かれ、ファイルに直接 - 書いたり、外部プログラムに渡したりすることができます。個々のリクエストを - 特徴に応じてログに書いたり書かなかったりできるように、条件による - ログ収集も提供されています。
- -このモジュールは三つのディレクティブ提供します:
- ログファイルを作成するための TransferLog
,
- 新しい書式を 定義する LogFormat
,
- ログファイルと 書式を一度に定義する CustomLog
です。
- 各リクエストが複数回ログ収集されるようにするために
- TransferLog
ディレクティブと
- CustomLog
- ディレクティブは複数回使用することができます。
LogFormat
ディレクティブと
- CustomLog
- ディレクティブの書式を指定する引数は文字列です。この文字列を使ってそれぞれの
- リクエストがログファイルにログ収集されます。その文字列には
- ログファイルにそのまま
- 書かれる文字列や、それぞれ改行とタブを表す C 言語
- 形式の制御文字 "\n" と "\t"
- とを含めることができます。そのまま出力させたい引用符とバックスラッシュは
- バックスラッシュでエスケープする必要があります。
リクエストの特徴そのものは "%
"
- ディレクティブを書式の文字列に書くことで
- ログ収集されます。"%"
- ディレクティブはログファイル中では以下のような
- 値で置換されます:
フォーマット文字列 | -説明 | ||||||
---|---|---|---|---|---|---|---|
%% |
- パーセント記号 | ||||||
%a |
- リモート IP アドレス | ||||||
%A |
- ローカル IP アドレス | ||||||
%B |
- レスポンスのバイト数。HTTP ヘッダは除く。 | ||||||
%b |
- レスポンスのバイト数。HTTP ヘッダは除く。CLF 書式。
- すなわち、1 バイトも送られなかったときは 0 ではなく、
- '- ' になる | ||||||
%{Foobar}C |
- サーバに送られたリクエスト中のクッキー Foobar の値 | ||||||
%D |
- リクエストを処理するのにかかった時間、マイクロ秒単位 | ||||||
%{FOOBAR}e |
- 環境変数 FOOBAR の内容 | ||||||
%f |
- ファイル名 | ||||||
%h |
- リモートホスト | ||||||
%H |
- リクエストプロトコル | ||||||
%{Foobar}i |
- サーバに送られたリクエストの Foobar:
- ヘッダの内容 | ||||||
%l |
- (identd からもし提供されていれば) リモートログ名。
- これは mod_ident がサーバに存在して、
- IdentityCheck
- ディレクティブが On に設定されていない限り、
- - になります。 | ||||||
%m |
- リクエストメソッド | ||||||
%{Foobar}n |
- 他のモジュールからのメモ Foobar の内容 | ||||||
%{Foobar}o |
- 応答の Foobar: ヘッダの内容 | ||||||
%p |
- リクエストを扱っているサーバの正式なポート | ||||||
%P |
- リクエストを扱った子プロセスのプロセス ID | ||||||
%{format}P |
- リクエストを扱ったワーカーのプロセス ID かスレッド ID。
- format として有効な値は pid , tid ,
- hextid です。hextid を使うには
- APR 1.2.0 以降が必要です。
- | ||||||
%q |
- 問い合せ文字列 (存在する場合は前に ? が追加される。
- そうでない場合は空文字列) | ||||||
%r |
- リクエストの最初の行 | ||||||
%s |
- ステータス。内部でリダイレクトされたリクエストは、元々の
- リクエストのステータス --- 最後のステータスは %>s
- | ||||||
%t |
- リクエストを受付けた時刻。 - CLF の時刻の書式 (標準の英語の書式) | ||||||
%{format}t |
- format で与えられた書式による時刻。format は
- strftime (3) の
- 書式である必要がある。(地域化されている可能性がある) | ||||||
%T |
- リクエストを扱うのにかかった時間、秒単位 | ||||||
%u |
- リモートユーザ (認証によるもの。ステータス (%s ) が
- 401 のときは意味がないものである可能性がある)
- | ||||||
%U |
- リクエストされた URL パス。クエリ文字列は含まない | ||||||
%v |
- リクエストを扱っているサーバの正式な ServerName | ||||||
%V |
- UseCanonicalName の設定によるサーバ名 | ||||||
%X |
- 応答が完了したときの接続ステータス:
-
-
(このディレクティブは Apache
- 1.3 の後期のバージョンでは | ||||||
%I |
- リクエストとヘッダを含む、受け取ったバイト数。
- 0 にはならない。
- これを使用するためには mod_logio が必要 | ||||||
%O |
- ヘッダを含む、送信したバイト数。0 にはならない。
- これを使用するためには mod_logio が必要 |
特定の要素は "%" の直後に HTTP ステータスコードをカンマ区切りで
- 指定することで、表示を制限することができます。例えば
- "%400,501{User-agent}i"
では、
- 400 と 500 番エラーでのみ User-agent
をログします。
- 他のステータスコードでは "-"
という文字列が
- ログされます。ステータスコードのリストは "!
"
- で否定を指定することができます :
- "%!200,304,302{Referer}i"
は、指定された
- 3 つのコードのどれにも該当しないリクエスト全てで
- Referer
をログします。
修飾子 "<" と ">" は内部リダイレクトされたリクエストのログに
- 元のリクエストか最終的なリクエストのどちらを使用するかを
- 指定するために使います。デフォルトでは、%
ディレクティブの
- %s, %U, %T, %D, %r
は元のリクエストを、他は最終的なリクエストを
- 使用します。例えば、リクエストの最終ステータスを記録するには
- %>s
を、内部的に認証されていないリソースへリダイレクトされた
- リクエストで元のリクエストで認証されたユーザを記録するためには
- %<u
を使うことができます。
セキュリティ上の理由により 2.0.46 より、
- %r
, %i
, %o
に入っている、
- 印字不可能な文字と他の特別な文字は、\xhh
- という形式の文字列でエスケープされるようになりました。hh は
- そのままのバイトの値の 16 進での値です。この規則の例外には、
- バックスラッシュを使ってエスケープされる "
と \
と、
- C 形式の表記法が使われる空白文字 (\n
, \t
など)
- があります。2.0.46 以前のバージョンではエスケープ処理は行われませんので、
- 生ログファイルを扱う際に注意が必要です。
httpd 2.0 では 1.3 とは異なり、%b
と %B
- フォーマット文字列はクライアントに送信されたバイト数そのものではなく、
- HTTP レスポンスのバイト数です (これらは異なるもので、たとえば、
- コネクションが途中で破棄された場合や、SSL 使用時に一致しません) 。
- mod_logio
で提供されている %O
- フォーマット文字列で、ネットワーク経由で実際に転送されたバイト数を
- 記録できます。
よく使われるフォーマット文字列は:
- -"%h %l %u %t \"%r\" %>s %b"
"%v %h %l %u %t \"%r\" %>s %b"
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
- \"%{User-agent}i\""
"%{Referer}i -> %U"
"%{User-agent}i"
ログファイルが保存されているディレクトリがサーバを起動した以外のユーザで - 書き込み可能なときにセキュリティの問題が発生する理由の詳細はセキュリティのこつ - を参照してください。
-説明: | ディスクに書き出す前にメモリにログエントリをバッファする |
---|---|
構文: | BufferedLogs On|Off |
デフォルト: | BufferedLogs Off |
コンテキスト: | サーバ設定ファイル |
ステータス: | Base |
モジュール: | mod_log_config |
互換性: | 2.0.41 以降 |
BufferedLogs
ディレクティブを使うと
- mod_log_config
の挙動が変化して、
- 複数のログを書き出す際に、それぞれのリクエスト処理後毎に
- 書き出すのではなく、いったんメモリに蓄えてから、
- まとめてディスクに書き出すようになります。
- この結果ディスクアクセスがより効率的になり、
- 高いパフォーマンスの得られるシステムもあるでしょう。
- このディレクティブはサーバ全体で一度だけ設定できます;
- バーチャルホストごとに設定することはできません。
説明: | クッキングのロギングのためのファイル名を設定する |
---|---|
構文: | CookieLog filename |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_log_config |
互換性: | このディレクティブは非推奨 |
CookieLog
- ディレクティブはクッキーのロギングのためのファイル名を
- 設定します。filename は ServerRoot
- からの相対パスです。このディレクティブは mod_cookies
との互換性のためだけに
- 存在し、使用は推奨されていません。
説明: | ログファイルの名前と書式を設定する |
---|---|
構文: | CustomLog file|pipe
-format|nickname
-[env=[!]environment-variable] |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_log_config |
CustomLog
ディレクティブはサーバへのリクエストを
- ログ収集するために使われます。ログの書式が指定され、
- 環境変数を使ってロギングが条件に応じて行なわれるようにすることもできます。
ログが書かれる場所を指定する最初の引数は以下の二つの形式の値を - とることができます:
- -ServerRoot
- からの相対パスで表されるファイル名。|
" と、その後に標準入力からログの
- 情報を受けとるプログラムへのパスが続いたもの。
-
- もしプログラムが使用された場合、
- httpd
が起動されたユーザとして実行されます。これはサーバが
- root によって起動された場合は root になります。プログラムが
- 安全であるように留意してください。
Unix でないプラットフォームでファイルのパスを入力しているときは、 - 使用しているプラットフォームがバックスラッシュの使用を許可していた - として、通常のスラッシュだけを使うように気をつけてください。 - 一般的に、設定ファイル中では常に普通のスラッシュのみを使うようにする - 方が良いです。
-二つめの引数はログファイルに何が書かれるかを指定します。
- 前にある LogFormat
ディレクティブにより
- 定義された nickname か、ログの書式
- のところで説明されている、明示的な format 文字列の
- どちらかを指定することができます。
例えば、以下の二つのディレクティブ群は全く同じ効果をもたらします:
- -
- # CustomLog with format nickname
- LogFormat "%h %l %u %t \"%r\" %>s %b" common
- CustomLog logs/access_log common
-
- # CustomLog with explicit format string
- CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"
-
三つ目の引数は省略可能で、サーバの環境にある変数があるかないかに
- 応じてリクエストをログ収集するかどうかを制御するために使うことができます。
- 指定された環境変数がリクエストに対して
- 設定されていた場合 ('env=!name
' 文が使われたときは
- 設定されていない場合)、リクエストがログ収集されます。
環境変数は mod_setenvif
モジュールと
- mod_rewrite
モジュールの両方もしくは
- 片方を用いてリクエストごとに設定することができます。
- 例えば、サーバにあるすべての GIF 画像へのリクエストを別のログファイル
- には記録したいけれど、メインログには記録したくない、というときは
- 以下のものを使うことができます:
- SetEnvIf Request_URI \.gif$ gif-image
- CustomLog gif-requests.log common env=gif-image
- CustomLog nongif-requests.log common env=!gif-image
-
古い RefererIgnore ディレクティブと同じ挙動をさせたい場合は、 - 次のようにします:
- -
- SetEnvIf Referer example\.com localreferer
- CustomLog referer.log referer env=!localreferer
-
説明: | ログファイルで使用する書式を設定する |
---|---|
構文: | LogFormat format|nickname
-[nickname] |
デフォルト: | LogFormat "%h %l %u %t \"%r\" %>s %b" |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_log_config |
このディレクティブはアクセスログファイルの書式を指定します。
- -LogFormat
ディレクティブは二つの形式のどちらかを
- とることができます。最初の形式では一つの引数のみが指定され、
- 続く TransferLog
- で指定されたログで使われるログの書式を設定します。この単独の引数では
- 上のカスタムログ書式で説明されているように
- format を明示的に指定することができます。
- もしくは、下で説明されているように前に LogFormat
- ディレクティブで定義されたログの書式を nicknameを使って
- 参照することもできます。
LogFormat
ディレクティブの二つめの形式は
- format に nickname を与えます。
- フォーマット文字列全体を再び書くかわりに、
- この nickname を続きの LogFormat
ディレクティブや
- CustomLog
ディレクティブで使うことができます。
- Nickname を定義する LogFormat
ディレクティブは
- 他には何もしません -- すなわち、ニックネームを定義
- するだけで、実際に書式を適用してデフォルトにするということは行ないません。
- ですから、これは続く TransferLog
- ディレクティブには影響を与えません。
- さらに、LogFormat
ディレクティブは既存の nickname を
- 使って別の nickname を定義することはできません。Nickname には
- パーセント記号 (%
) が含まれていてはいけないことにも注意
- してください。
- LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
-
説明: | ログファイルの位置を指定 |
---|---|
構文: | TransferLog file|pipe |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_log_config |
このディレクティブは、ログ書式を直接指定できないことと、
- 条件付きロギングが無いことを除くと、CustomLog
と全く同じ引数と効果があります。
- 直接ログ書式を指定する代わりに、ログの書式はそこまでで一番最後に指定された
- ニックネームを定義しない
- LogFormat
ディレクティブ
- で定義されたものを使います。
- もし他の書式が全く指定されていないときは Common Log Format
- が使われます。
- LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
- TransferLog logs/access_log
-
Apache HTTP 泣若 若吾с 2.3
+茯: | 泣若吾鴻潟 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | log_config_module |
純若鴻<ゃ: | mod_log_config.c |
+ ≪吾ャ若ゃ≪潟鴻荵医罘純 + 箴障違鴻帥ゃ阪純後ф吾<ゃ贋・ + 吾紊違羝<с障鴻 + 劫彰綽違吾吾cс>散 + 医箴障
+ +≪吾ャ若筝ゃcc箴障:
+ 違<ゃ篏 TransferLog
,
+ 違後 絎臂 LogFormat
,
+ 違<ゃ 後筝綺絎臂 CustomLog
с
+ 鴻茲医医
+ TransferLog
cc
+ CustomLog
+ cc茲医篏睡с障
LogFormat
cc
+ CustomLog
+ cc後絎綣違絖с絖篏帥c
+ 鴻違<ゃ医障絖
+ 違<ゃ障
+ 吾絖壕帥茵 C 荐茯
+ 綵√九勝絖 "\n" "\t"
+ с障障上阪綣膃鴻激ャ
+ 鴻激ャс鴻宴若綽荀障
鴻劫彰 "%
"
+ cc後絖吾
+ 医障"%"
+ cc違<ゃ筝с篁ヤ
+ ゃх舟障:
若絖 | +茯 | ||||||
---|---|---|---|---|---|---|---|
%% |
+ 若祉潟荐 | ||||||
%a |
+ ≪若 IP ≪ | ||||||
%A |
+ 若 IP ≪ | ||||||
%B |
+ 鴻潟鴻ゃ違HTTP ゃ | ||||||
%b |
+ 鴻潟鴻ゃ違HTTP ゃCLF 後
+ 1 ゃc 0 с
+ '- ' | ||||||
%{Foobar}C |
+ 泣若鴻筝 Foobar | ||||||
%D |
+ 鴻cゃ腱篏 | ||||||
%{FOOBAR}e |
+ 医紊 FOOBAR 絎 | ||||||
%f |
+ <ゃ | ||||||
%h |
+ ≪若鴻 | ||||||
%H |
+ 鴻潟 | ||||||
%{Foobar}i |
+ 泣若鴻 Foobar:
+ 絎 | ||||||
%l |
+ (identd 箴) ≪若医
+ mod_ident 泣若絖
+ IdentityCheck
+ cc On 荐絎
+ - 障 | ||||||
%m |
+ 鴻<純 | ||||||
%{Foobar}n |
+ 篁≪吾ャ若< Foobar 絎 | ||||||
%{Foobar}o |
+ 綽膈 Foobar: 絎 | ||||||
%p |
+ 鴻宴c泣若罩e若 | ||||||
%P |
+ 鴻宴c絖祉鴻祉 ID | ||||||
%{format}P |
+ 鴻宴c若若祉 ID 鴻 ID
+ format 鴻ゃ pid , tid ,
+ hextid сhextid 篏帥
+ APR 1.2.0 篁ラ綽荀с
+ | ||||||
%q |
+ 絖 (絖翫 ? 菴遵
+ с翫腥堺絖) | ||||||
%r |
+ 鴻茵 | ||||||
%s |
+ 鴻若帥鴻сゃ鴻
+ 鴻鴻若帥 --- 緇鴻若帥鴻 %>s
+ | ||||||
%t |
+ 鴻篁祉 + CLF 祉後 (罔羣沿後) | ||||||
%{format}t |
+ format т後祉format
+ strftime (3)
+ 後с綽荀(医醇с) | ||||||
%T |
+ 鴻宴c腱篏 | ||||||
%u |
+ ≪若若 (茯荐若鴻若帥 (%s )
+ 401 潟с醇с)
+ | ||||||
%U |
+ 鴻 URL 鴻絖障 | ||||||
%v |
+ 鴻宴c泣若罩e ServerName | ||||||
%V |
+ UseCanonicalName 荐絎泣若 | ||||||
%X |
+ 綽膈絎篋・膓鴻若帥:
+
+
(cc Apache
+ 1.3 緇若吾с潟с | ||||||
%I |
+ 鴻cゃ違
+ 0
+ 篏睡 mod_logio 綽荀 | ||||||
%O |
+ 篆<ゃ違0
+ 篏睡 mod_logio 綽荀 |
劫荀膣 "%" 翫 HTTP 鴻若帥鴻潟若潟阪
+ 絎с茵腓冴狗с障箴
+ "%400,501{User-agent}i"
с
+ 400 500 若с User-agent
違障
+ 篁鴻若帥鴻潟若с "-"
絖
+ 違障鴻若帥鴻潟若鴻 "!
"
+ у絎絎с障 :
+ "%!200,304,302{Referer}i"
絎
+ 3 ゃ潟若荅峨鴻
+ Referer
違障
篆蕋上 "<" ">" ゃ鴻違
+ 鴻腟鴻<篏睡
+ 絎篏帥障с%
cc
+ %s, %U, %T, %D, %r
鴻篁腟鴻
+ 篏睡障箴違鴻腟鴻若帥鴻荐蚊
+ %>s
茯荐若純若鴻吾ゃ
+ 鴻у鴻ц荐若若吟荐蚊
+ %<u
篏帥с障
祉ャd宴 2.0.46
+ %r
, %i
, %o
ャc
+ 医筝純絖篁劫ャ絖\xhh
+ 綵√絖с鴻宴若障hh
+ 障障ゃゃ 16 蚊сゃс荀箴紊
+ 鴻激ャ篏帥c鴻宴若 "
\
+ C 綵√茵荐羈篏帥腥榊醇絖 (\n
, \t
)
+ 障2.0.46 篁ュ若吾с潟с鴻宴若茵障с
+ 違<ゃ宴羈綽荀с
httpd 2.0 с 1.3 違%b
%B
+ 若絖ゃ≪潟篆<ゃ違с
+ HTTP 鴻潟鴻ゃ違с (違с違
+ 潟激с潟筝х贋翫SSL 篏睡筝眼障)
+ mod_logio
ф箴 %O
+ 若絖с若腟宴у荵∫ゃ違
+ 荐蚊с障
鋎帥若絖:
+ +"%h %l %u %t \"%r\" %>s %b"
"%v %h %l %u %t \"%r\" %>s %b"
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
+ \"%{User-agent}i\""
"%{Referer}i -> %U"
"%{User-agent}i"
茯: | c鴻吾冴<≪違潟< |
---|---|
罕: | BufferedLogs On|Off |
: | BufferedLogs Off |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Base |
≪吾ャ若: | mod_log_config |
篋: | 2.0.41 篁ラ |
BufferedLogs
cc篏帥
+ mod_log_config
紊
+ 茲違違吾冴鴻緇罸
+ 吾冴сc<≪
+ 障c鴻吾冴障
+ 腟c鴻≪祉鴻合
+ 蕭若潟鴻緇激鴻с
+ cc泣若篏т綺荐絎с障;
+ 若c鴻荐絎с障
茯: | 潟違潟違<ゃ荐絎 |
---|---|
罕: | CookieLog filename |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_log_config |
篋: | ccィ絅 |
CookieLog
+ cc若潟違<ゃ
+ 荐絎障filename ServerRoot
+ 後障鴻сcc mod_cookies
篋с
+ 絖篏睡ィ絅障
茯: | 違<ゃ後荐絎 |
---|---|
罕: | CustomLog file|pipe
+format|nickname
+[env=[!]environment-variable] |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_log_config |
CustomLog
cc泣若吾鴻
+ 医篏帥障違後絎
+ 医紊違篏帥c潟違>散綽茵с障
違吾贋絎綣違篁ヤ篋ゃ綵√ゃ + с障:
+ +ServerRoot
+ 後障鴻ц;<ゃ|
" 緇罔羣ュ違
+ 宴違吾鴻膓
+
+ 違篏睡翫
+ httpd
莎桁若吟絎茵障泣若
+ root c莎桁翫 root 障違
+ 絎с
Unix с若с<ゃ鴻ュ + 篏睡若鴻激ャ篏睡荐怨 + 絽吾鴻激ャ篏帥羂ゃ + 筝荐絎<ゃ筝с絽吾鴻激ャ帥篏帥 + 鴻с
+篋ゃ綣違違<ゃ篏吾絎障
+ LogFormat
cc
+ 絎臂 nickname 違後
+ ц腓榊 format 絖
+ <絎с障
箴違篁ヤ篋ゃcc臂ゃ号障:
+ +
+ # CustomLog with format nickname
+ LogFormat "%h %l %u %t \"%r\" %>s %b" common
+ CustomLog logs/access_log common
+
+ # CustomLog with explicit format string
+ CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"
+
筝ょ綣違ュ純с泣若医紊違
+ 綽鴻医九勝篏帥с障
+ 絎医紊鴻絲障
+ 荐絎翫 ('env=!name
' 篏帥
+ 荐絎翫)鴻医障
医紊違 mod_setenvif
≪吾ャ若
+ mod_rewrite
≪吾ャ若筝≧鴻
+ 鴻鴻荐絎с障
+ 箴違泣若鴻 GIF 糸吾鴻ャ違<ゃ
+ 荐蚊<ゃ潟違荐蚊
+ 篁ヤ篏帥с障:
+ SetEnvIf Request_URI \.gif$ gif-image
+ CustomLog gif-requests.log common env=gif-image
+ CustomLog nongif-requests.log common env=!gif-image
+
ゃ RefererIgnore cc翫 + 罨<障:
+ +
+ SetEnvIf Referer example\.com localreferer
+ CustomLog referer.log referer env=!localreferer
+
茯: | 違<ゃт戎後荐絎 |
---|---|
罕: | LogFormat format|nickname
+[nickname] |
: | LogFormat "%h %l %u %t \"%r\" %>s %b" |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_log_config |
cc≪祉鴻違<ゃ後絎障
+ +LogFormat
cc篋ゃ綵√<
+ с障綵√с筝ゃ綣違帥絎
+ 膓 TransferLog
+ ф絎違т戎違後荐絎障綣違с
+ 筝鴻帥井後ц
+ format 腓榊絎с障
+ 筝ц LogFormat
+ ccу臂違後 nickname篏帥c
+ сс障
LogFormat
cc篋ゃ綵√
+ format nickname 筝障
+ 若絖篏恰吾
+ nickname 膓 LogFormat
cc
+ CustomLog
ccт戎с障
+ Nickname 絎臂 LogFormat
cc
+ 篁篏障 -- <若絎臂
+ с絎後茵障
+ с膓 TransferLog
+ cc綵演帥筝障
+ LogFormat
cc√ nickname
+ 篏帥cャ nickname 絎臂с障Nickname
+ 若祉潟荐 (%
) 障羈
+
+ LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
+
茯: | 違<ゃ篏臀絎 |
---|---|
罕: | TransferLog file|pipe |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_log_config |
cc井後贋・絎с
+ >散篁潟違<ゃCustomLog
綣違号障
+ 贋・井後絎篁c違後障ст緇絎
+ 若絎臂
+ LogFormat
cc
+ у臂篏帥障
+ 篁後絎 Common Log Format
+ 篏帥障
+ LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
+ TransferLog logs/access_log
+
Apache HTTP サーバ バージョン 2.3
-説明: | サーバに送られたリクエストの forensic ロギング |
---|---|
ステータス: | Extension |
モジュール識別子: | log_forensic_module |
ソースファイル: | mod_log_forensic.c |
互換性: | mod_unique_id はバージョン 2.1 からは必須では
-なくなった |
このモジュールはクライアントリクエストの forensic ロギングを - 行ないます。ログ収集はリクエストの処理の前と後に行なわれますので、 - forensic ログは各リクエストに対して二行ログ収集します。 - Forensic ロガーは非常に厳密です。これは以下のことを意味します:
- -CoreDumpDirectory
ディレクティブの設定に依ります)。Forensic ログの出力を検査するためには、
- 配布物の support ディレクトリにある check_forensic
- スクリプトが役に立つでしょう。
各リクエストは2回ログ収集されます。最初はリクエストが処理される - 前 (つまり、ヘッダを受け取った後) です。2度目のログは - リクエストが処理された後、通常のログ収集と同じときに - 行なわれます。
- -各リクエストを識別するために、リクエストには
- 一意なリクエスト ID が割り当てられます。この forensic ID は
- フォーマット文字列 %{forensic-id}n
を使うことで
- 通常の transfer ログにログ収集することもできます。
- mod_unique_id
を使っている場合は、それが生成する
- ID が使われます。
最初の行は forensic ID、リクエスト行と受け取ったすべてのヘッダを
- パイプ文字 (|
) で分離してログ収集します。
- 例えば以下のようになります (実際はすべて同じ行になります):
- +yQtJf8CoAB4AAFNXBIEAAAAA|GET /manual/de/images/down.gif
- HTTP/1.1|Host:localhost%3a8080|User-Agent:Mozilla/5.0 (X11;
- U; Linux i686; en-US; rv%3a1.6) Gecko/20040216
- Firefox/0.8|Accept:image/png, etc...
-
最初のプラス文字がこのログは最初のログであることを示します。 - 二番目の行はマイナス文字と ID のみです:
- -
- -yQtJf8CoAB4AAFNXBIEAAAAA
-
check_forensic
スクリプトは引数としてログファイルの名前を
- 取ります。+
/-
の ID の組を調べ、完了していない
- リクエストがある場合は警告を発します。
ログファイルが保存されるディレクトリがサーバを起動したユーザ - 以外で書き込み可能になっているときにセキュリティが破られる可能性が - あることについての詳細はセキュリティのこつを - 参照してください。
-説明: | Forensic ログのファイル名を設定する |
---|---|
構文: | ForensicLog filename|pipe |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_log_forensic |
ForensicLog
ディレクティブは forensic 解析のための
- サーバへのリクエストをログ収集に使います。
- 各ログエントリには、普通の CustomLog
ディレクティブを使ってリクエストと関連付けることの
- できる
- 一意な ID が割り当てられます。mod_log_forensic
は
- forensic-id
というトークンを作成し、フォーマット文字列
- %{forensic-id}n
を使うことでそのトークンを transfer ログに
- 追加することができます。
引数はログが書き出される位置を指定し、以下の 2種類の値のどちらかを - 取ることができます:
- -ServerRoot
からの
- 相対ファイル名|
" と、その後にログ情報を標準入力から
- 受け取るプログラム。プログラム名は ServerRoot
からの相対パスとしても
- 指定できます。
-
- プログラムを使う場合、そのプログラムは httpd
を起動したユーザで
- 実行されます。つまり、サーバが root で実行された場合は root で
- 実行されるということです。プログラムが安全であるか、より権限の少ない
- ユーザに切り替えるようになっていることを確かめてください。
Unix 以外のプラットフォームでファイル名を入力するときは、 - プラットフォームがバックスラッシュの使用を許可している場合でも、 - スラッシュのみが使われるように気をつけてください。 - 普通は設定ファイルすべてにおいて、スラッシュの方を使用するように - してください。
-Apache HTTP 泣若 若吾с 2.3
+茯: | 泣若鴻 forensic 潟 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | log_forensic_module |
純若鴻<ゃ: | mod_log_forensic.c |
篋: | mod_unique_id 若吾с 2.1 綽с
+c |
≪吾ャ若ゃ≪潟鴻 forensic 潟違 + 茵障医鴻緇茵障с + forensic 違鴻絲障篋茵医障 + Forensic 若絽吾ウ絲с篁ヤ潟障:
+ +CoreDumpDirectory
cc荐絎箴障)Forensic 違阪罎祉
+ 絽 support c check_forensic
+ 鴻綵鴻腴ゃс
鴻2医障鴻 + (ゃ障c緇) с2綺違 + 鴻緇絽吾医 + 茵障
+ +鴻茘ャ鴻
+ 筝鴻 ID 蚊綵障 forensic ID
+ 若絖 %{forensic-id}n
篏帥
+ 絽吾 transfer 違医с障
+ mod_unique_id
篏帥c翫
+ ID 篏帥障
茵 forensic ID鴻茵c鴻
+ ゃ絖 (|
) у≪医障
+ 箴遺札筝障 (絎鴻茵障):
+ +yQtJf8CoAB4AAFNXBIEAAAAA|GET /manual/de/images/down.gif
+ HTTP/1.1|Host:localhost%3a8080|User-Agent:Mozilla/5.0 (X11;
+ U; Linux i686; en-US; rv%3a1.6) Gecko/20040216
+ Firefox/0.8|Accept:image/png, etc...
+
号絖違違с腓冴障 + 篋茵ゃ号絖 ID 帥с:
+ +
+ -yQtJf8CoAB4AAFNXBIEAAAAA
+
check_forensic
鴻綣違違<ゃ
+ 障+
/-
ID 腟茯帥鴻絎篋
+ 鴻翫茘冴障
茯: | Forensic 違<ゃ荐絎 |
---|---|
罕: | ForensicLog filename|pipe |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_log_forensic |
ForensicLog
cc forensic 茹f
+ 泣若吾鴻医篏帥障
+ 違潟 CustomLog
cc篏帥c鴻∫d
+ с
+ 筝 ID 蚊綵障mod_log_forensic
+ forensic-id
若潟篏若絖
+ %{forensic-id}n
篏帥с若潟 transfer 違
+ 菴遵с障
綣違違吾冴篏臀絎篁ヤ 2腮蕁ゃ< + с障:
+ +ServerRoot
+ 後障<ゃ|
" 緇井宴罔羣ュ
+ 違違 ServerRoot
後障鴻
+ 絎с障
+
+ 違篏帥翫違 httpd
莎桁若吟
+ 絎茵障ゃ障泣若 root у茵翫 root
+ 絎茵с違絎с罔絨
+ 若吟帥c腆冴
Unix 篁ュ若с<ゃュ + 若鴻激ャ篏睡荐怨翫с + 鴻激ャ帥篏帥羂ゃ + 荐絎<ゃ鴻鴻激ャ鴻篏睡 +
+Apache HTTP サーバ バージョン 2.3
-説明: | リクエスト毎に入力バイト数と出力バイト数とをロギング |
---|---|
ステータス: | Extension |
モジュール識別子: | logio_module |
ソースファイル: | mod_logio.c |
このモジュールはリクエストごとに受け取ったバイト数と - 送信したバイト数のロギングを行なう機能を提供します。 - 記録される数字はリクエストのヘッダとレスポンスの本体を - 反映した、実際にネットワークで受け取ったバイト値です。 - 入力では SSL/TLS の前に、出力では SSL/TLS の後に数えるので、 - 数字は暗号による変化も正しく反映したものになります。
- -このモジュールの使用には mod_log_config
モジュールが
- 必要です。
このモジュールは新しいロギング用ディレクティブを加えます。
- リクエスト自身の特徴はフォーマット文字列に、以下の様に置換される
- "%
" ディレクティブを
- 入れることでログ収集されます:
フォーマット文字列 | -説明 |
---|---|
%...I |
- リクエストとヘッダを含む、受け取ったバイト数。 - 0 にはならない。 |
%...O |
- ヘッダを含む、送信したバイト数。0 にはならない。 |
通常、この機能は以下の様に使用されます:
- -"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
- \"%{User-agent}i\" %I %O"
Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻罸ュゃ違阪ゃ違潟 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | logio_module |
純若鴻<ゃ: | mod_logio.c |
≪吾ャ若鴻cゃ違 + 篆<ゃ違潟違茵罘純箴障 + 荐蚊医鴻鴻潟鴻篏 + 絎若уcゃゃс + ュс SSL/TLS 阪с SSL/TLS 緇違с + 医垩紊罩c障
+ +≪吾ャ若篏睡 mod_log_config
≪吾ャ若
+ 綽荀с
≪吾ャ若違潟亥cc障
+ 鴻荳劫彰若絖篁ヤ罕臀
+ "%
" cc
+ ャс医障:
若絖 | +茯 |
---|---|
%...I |
+ 鴻cゃ違 + 0 |
%...O |
+ 篆<ゃ違0 |
絽吾罘純篁ヤ罕篏睡障:
+ +"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
+ \"%{User-agent}i\" %I %O"
Apache HTTP サーバ バージョン 2.3
-説明: | URI をキーにしたコンテンツのキャッシュ |
---|---|
ステータス: | Extension |
モジュール識別子: | mem_cache_module |
ソースファイル: | mod_mem_cache.c |
このモジュールは mod_cache
を必要とします。
- これは mod_cache
のサポートモジュールとして
- 動作し、メモリを使用したストレージ管理機構を提供します。
- mod_mem_cache
は二つのモードのどちらかで動作するように
- 設定できます: ファイル記述子のキャッシュかヒープ中のオブジェクトの
- キャッシュです。ローカルで生成されたコンテンツに対してキャッシュするときや、
- mod_proxy
を使って ProxyPass
(つまりリバースプロキシ向け) に設定したときのバックエンドサーバのコンテンツに対して
- キャッシュをするときに、たいへん効果的です。
コンテンツのキャッシュへの保存と取得は URI に基づいたキーが使われます。 - アクセス保護のかけられているコンテンツはキャッシュされません。
-説明: | キャッシュに保管されるオブジェクトの最大数 |
---|---|
構文: | MCacheMaxObjectCount value |
デフォルト: | MCacheMaxObjectCount 1009 |
コンテキスト: | サーバ設定ファイル |
ステータス: | Extension |
モジュール: | mod_mem_cache |
MCacheMaxObjectCount
ディレクティブは
- キャッシュされるオブジェクトの最大数を指定します。
- この値はハッシュテーブルを作成するときに使われます。
- 新しいオブジェクトを挿入するときに、オブジェクトの最大数に
- 達してしまっているとき、新しいオブジェクトをキャッシュできるように、
- オブジェクトを一つ消去します。オブジェクトは
- MCacheRemovalAlgorithm
- で指定されたアルゴリズムに従って削除されます。
- MCacheMaxObjectCount 13001
-
説明: | キャッシュに保管できるドキュメントの最大サイズ (バイト) |
---|---|
構文: | MCacheMaxObjectSize bytes |
デフォルト: | MCacheMaxObjectSize 10000 |
コンテキスト: | サーバ設定ファイル |
ステータス: | Extension |
モジュール: | mod_mem_cache |
MCacheMaxObjectSize
はドキュメントを
- キャッシュするかどうかを判定する、最大のサイズをバイト数で設定します。
- MCacheMaxObjectSize 6400000
-
MCacheMaxObjectSize
の値は MCacheMinObjectSize
- で指定した値よりも大きくなければなりません。
説明: | ストリームされている応答をキャッシュ不能と決定するまでに -メモリにバッファする最大量 |
---|---|
構文: | MCacheMaxStreamingBuffer size_in_bytes |
デフォルト: | MCacheMaxStreamingBuffer of 100000 か MCacheMaxObjectSize の少い方 |
コンテキスト: | サーバ設定ファイル |
ステータス: | Extension |
モジュール: | mod_mem_cache |
MCacheMaxStreamingBuffer
ディレクティブは、
- サイズが大きすぎてキャッシュできないと判断するまでの、
- ストリーム応答のバッファのための最大バイト数を指定します。
- ストリーム応答とは、コンテンツの全体がすぐには得られず、
- Content-Length
がわからない応答を指します。
- ストリーム応答を行なうようなものにはプロキシされた応答や、
- CGI スクリプトの出力などがあります。デフォルトではストリームの応答は
- Content-Length
がない限りキャッシュされません。
- このような動作になっている理由は、結局キャッシュに収まりきらないと
- 判断することになってしまうような、サイズの大きな応答のバッファリングに、
- 大量のメモリが消費されるのを避けるためです。
- MCacheMaxStreamingBuffer
ディレクティブを使うと、
- Content-Length
を含まない応答に対して指定された最大量まで
- バッファするようにできます。バッファを使い切ると、バッファ中の
- コンテンツは捨てられ、キャッシュ動作を中止します。
MCacheMaxStreamingBuffer
に非零の値を
- 使っても、クライアントへの応答の転送に特に遅延は発生しません。
- mod_mem_cache
はストリームコンテンツの断片を
- バッファにコピーした後、即座に、その部分をクライアントへの配送の
- 次段の出力フィルタに送ります。
- # Enable caching of streamed responses up to 64KB:
- MCacheMaxStreamingBuffer 65536
-
説明: | キャッシュに保管されるドキュメントの最小サイズ (バイト) |
---|---|
構文: | MCacheMinObjectSize bytes |
デフォルト: | MCacheMinObjectSize 0 |
コンテキスト: | サーバ設定ファイル |
ステータス: | Extension |
モジュール: | mod_mem_cache |
MCacheMinObjectSize
ディレクティブは、ドキュメントを
- キャッシュするかどうかを判定する、最小のサイズをバイト数で設定します。
- MCacheMinObjectSize 10000
-
説明: | キャッシュから削除するドキュメントを選ぶためのアルゴリズム |
---|---|
構文: | MCacheRemovalAlgorithm LRU|GDSF |
デフォルト: | MCacheRemovalAlgorithm GDSF |
コンテキスト: | サーバ設定ファイル |
ステータス: | Extension |
モジュール: | mod_mem_cache |
MCacheRemovalAlgorithm
ディレクティブは、
- キャッシュから削除するドキュメントを選択するためのアルゴリズムを
- 指定します。選択肢は二つあります:
LRU
(Least Recently Used)LRU
一番長くアクセスされていないドキュメントを削除します。
- GDSF
(GreadyDual-Size)GDSF
はキャッシュミスのコストとドキュメントのサイズをもとに、
- ドキュメントのキャッシュに対して優先度をつけます。
- 優先度の一番低いドキュメントが最初に削除されます。
- MCacheRemovalAlgorithm GDSF
- MCacheRemovalAlgorithm LRU
-
説明: | キャッシュに使われるメモリの最大量をバイト単位で指定 |
---|---|
構文: | MCacheSize KBytes |
デフォルト: | MCacheSize 100 |
コンテキスト: | サーバ設定ファイル |
ステータス: | Extension |
モジュール: | mod_mem_cache |
MCacheSize
ディレクティブはキャッシュに
- 使われるメモリの大きさをキロバイト (1024 バイト単位) で設定します。
- 新しいオブジェクトをキャッシュに挿入することになり、オブジェクトの
- サイズが残りのメモリより大きい場合は、その新しいオブジェクトの挿入が
- 可能になるまで、古いオブジェクトが削除されていきます。
- オブジェクトは MCacheRemovalAlgorithm
- で指定したアルゴリズムに従って削除されます。
- MCacheSize 700000
-
MCacheSize
の値は MCacheMaxObjectSize
ディレクティブで指定した値より
- 大きくなければなりません。
Apache HTTP 泣若 若吾с 2.3
+茯: | URI 若潟潟潟c激 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | mem_cache_module |
純若鴻<ゃ: | mod_mem_cache.c |
≪吾ャ若 mod_cache
綽荀障
+ mod_cache
泣若≪吾ャ若
+ 篏<≪篏睡鴻若悟∞罘罕箴障
+ mod_mem_cache
篋ゃ≪若<у篏
+ 荐絎с障: <ゃ荐菴医c激ャ若筝吾с
+ c激ャс若х潟潟潟絲障c激ャ
+ mod_proxy
篏帥c ProxyPass
(ゃ障若鴻) 荐絎潟泣若潟潟潟絲障
+ c激ャ吾号с
潟潟潟c激ャ吾篆絖緇 URI 冴ャ若篏帥障 + ≪祉剛茘激潟潟潟c激ャ障
+茯: | c激ャ篆膊<吾с紊ф |
---|---|
罕: | MCacheMaxObjectCount value |
: | MCacheMaxObjectCount 1009 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Extension |
≪吾ャ若: | mod_mem_cache |
MCacheMaxObjectCount
cc
+ c激ャ吾с紊ф違絎障
+ ゃ激ャ若篏篏帥障
+ 違吾с水ャ吾с紊ф違
+ 障c違吾сc激ャс
+ 吾с筝ゆサ障吾с
+ MCacheRemovalAlgorithm
+ ф絎≪眼冴緇cゃ障
+ MCacheMaxObjectCount 13001
+
茯: | c激ャ篆膊<сャ<潟紊с泣ゃ (ゃ) |
---|---|
罕: | MCacheMaxObjectSize bytes |
: | MCacheMaxObjectSize 10000 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Extension |
≪吾ャ若: | mod_mem_cache |
MCacheMaxObjectSize
ャ<潟
+ c激ャゅ紊с泣ゃ冴ゃ違ц┃絎障
+ MCacheMaxObjectSize 6400000
+
MCacheMaxObjectSize
ゃ MCacheMinObjectSize
+ ф絎ゃ紊с違障
茯: | 鴻若綽膈c激ヤ純羆阪障с +<≪<紊ч |
---|---|
罕: | MCacheMaxStreamingBuffer size_in_bytes |
: | MCacheMaxStreamingBuffer of 100000 MCacheMaxObjectSize 絨 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Extension |
≪吾ャ若: | mod_mem_cache |
MCacheMaxStreamingBuffer
cc
+ 泣ゃ冴紊сc激ャсゆ障с
+ 鴻若綽膈<紊сゃ違絎障
+ 鴻若綽膈潟潟潟篏緇
+ Content-Length
綽膈障
+ 鴻若綽膈茵激綽膈
+ CGI 鴻阪障с鴻若綽膈
+ Content-Length
c激障
+ 篏c宴腟絮c激ャ障
+ ゆc障泣ゃ冴紊с綽膈<潟違
+ 紊ч<≪羔莢祉帥с
+ MCacheMaxStreamingBuffer
cc篏帥
+ Content-Length
障綽膈絲障絎紊ч障
+ <с障<篏帥>賢
+ 潟潟潟c激ュ篏筝罩≪障
MCacheMaxStreamingBuffer
吟ゃ
+ 篏帥cゃ≪潟吾綽膈荵∫鴻綮吟榊障
+ mod_mem_cache
鴻若潟潟潟
+ <潟若緇喝婚ゃ≪潟吾
+ 罨≧泣阪c帥障
+ # Enable caching of streamed responses up to 64KB:
+ MCacheMaxStreamingBuffer 65536
+
茯: | c激ャ篆膊<ャ<潟絨泣ゃ (ゃ) |
---|---|
罕: | MCacheMinObjectSize bytes |
: | MCacheMinObjectSize 0 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Extension |
≪吾ャ若: | mod_mem_cache |
MCacheMinObjectSize
ccャ<潟
+ c激ャゅ絨泣ゃ冴ゃ違ц┃絎障
+ MCacheMinObjectSize 10000
+
茯: | c激ャゃャ<潟吾吟≪眼冴 |
---|---|
罕: | MCacheRemovalAlgorithm LRU|GDSF |
: | MCacheRemovalAlgorithm GDSF |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Extension |
≪吾ャ若: | mod_mem_cache |
MCacheRemovalAlgorithm
cc
+ c激ャゃャ<潟御≪眼冴
+ 絎障御≪篋ゃ障:
LRU
(Least Recently Used)LRU
筝激≪祉鴻ャ<潟ゃ障
+ GDSF
(GreadyDual-Size)GDSF
c激ャ鴻潟鴻ャ<潟泣ゃ冴
+ ャ<潟c激ャ絲障綺ゃ障
+ 綺筝篏ャ<潟ゃ障
+ MCacheRemovalAlgorithm GDSF
+ MCacheRemovalAlgorithm LRU
+
茯: | c激ャ篏帥<≪紊чゃ篏ф絎 |
---|---|
罕: | MCacheSize KBytes |
: | MCacheSize 100 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Extension |
≪吾ャ若: | mod_mem_cache |
MCacheSize
ccc激ャ
+ 篏帥<≪紊сゃ (1024 ゃ篏) ц┃絎障
+ 違吾сc激ャ水ャ吾с
+ 泣ゃ冴罧<≪紊с翫違吾с水ャ
+ 純障сゃ吾сゃ障
+ 吾с MCacheRemovalAlgorithm
+ ф絎≪眼冴緇cゃ障
+ MCacheSize 700000
+
MCacheSize
ゃ MCacheMaxObjectSize
ccф絎ゃ
+ 紊с違障
Apache HTTP サーバ バージョン 2.3
-説明: | リクエストされたファイルの拡張子とファイルの振る舞い - (ハンドラとフィルタ)、内容 (MIME タイプ、言語、文字セット、エンコーディング) - とを関連付ける |
---|---|
ステータス: | Base |
モジュール識別子: | mime_module |
ソースファイル: | mod_mime.c |
このモジュールは拡張子を使っていろいろな「メタ情報」をファイルに
- 関連付けるために使用されます。この情報はドキュメントのファイル名と
- MIME タイプ、言語、文字セット、エンコーディングとを関連付けます。
- この情報はブラウザに送られますし、複数のファイルの中からユーザの好みの
- ものが選ばれるように、コンテントネゴシエーションでも使われます。
- コンテントネゴシエーション
- に関する詳しい情報は mod_negotiation
- をご覧下さい。
AddCharset
ディレクティブ、
- AddEncoding
ディレクティブ、
- AddHandler
ディレクティブ、
- AddLanguage
ディレクティブ、
- AddType
ディレクティブはすべて、
- ファイルの拡張子をメタ情報にマップするために使用されます。
- それぞれ、ドキュメントの文字セット (訳注: charset)、content-encoding,
- content-language, MIME タイプ (content-type) を設定します。
- TypesConfig
ディレクティブは拡張子を
- MIME タイプにマップするファイルを指定するために使用されます。
さらに、mod_mime
はコンテンツを作成、処理する
- ハンドラ と フィルタ
- を設定することができます。AddHandler
ディレクティブ、AddOutputFilter
ディレクティブ、AddInputFilter
ディレクティブは
- ドキュメントを扱うモジュールやスクリプトを制御します。
- MultiviewsMatch
ディレクティブは
- これらのディレクティブが指定したファイルの拡張子を
- mod_negotiation
が Multiviews のマッチをとるときに
- 考慮するようにできます。
mod_mime
はメタ情報をファイル名と関連付けますが、
- core
サーバにはあるコンテナ
- (たとえば, <Location>
, <Directory>
, <Files>
) の中のすべてのファイルを特定の
- メタ情報と関連付けるディレクティブがあります。これらのディレクティブには
- ForceType
, SetHandler
, SetInputFilter
, SetOutputFilter
があります。
- コアのディレクティブは mod_mime
により定義された
- ファイル名の拡張子のマッピングすべてを上書きします。
ファイルのメタ情報を変えても Last-Modified
- ヘッダの値は変わらないことに注意してください。ですから、
- それらを変更した場合は、クライアントやプロキシで以前にキャッシュされた
- コピーがそのときのヘッダとともに使われる可能性があります。
- メタ情報 (言語、コンテントタイプ、文字セット、エンコーディング) を
- 変更したときは、すべての訪問者が正しいコンテントヘッダを
- 受け取るように、影響を受けるファイルに 'touch' コマンドを実行する
- (最終更新日を更新する) 必要があるかもしれません。
ファイルは複数の拡張子を持つことができ、拡張子の順番は通常は関係ありません。例えば、ファイル welcome.html.fr
- がコンテントタイプは text/html
- に、言語はフランス語にマップされる場合、welcome.fr.html
- もまったく同じ情報にマップされます。
- 同じメタ情報にマップされる拡張子が複数あるときには、言語と
- コンテントエンコーディングを除いて、
- 右側にあるものが使用されます。たとえば、.gif
が MIME
- タイプ image/gif
にマップされ、.html
- が MIME タイプ text/html
- にマップされる場合は、ファイル welcome.gif.html
は
- MIME タイプ text/html
に関連付けられます。
リソースに複数の言語やエンコーディングを関連付けること
- ができるため、
- 言語とコンテントエンコーディングは前のものに追加されていきます。
- たとえば、ファイル welcome.html.en.de
は
- Content-Language: en, de
と Content-Type:
- text/html
として送信されます。
複数の拡張子のあるファイルが MIME
- タイプとハンドラの両方に関連付けられているときは注意する必要があります。
- その場合、普通はリクエストがハンドラに関連付けられた
- モジュールによって扱われることになります。たとえば、拡張子
- .imap
が (mod_imagemap
の) imap-file
- にマップされていて、.html
が MIME タイプ text/html
- にマップされているときは、ファイル world.imap.html
は
- imap-file
ハンドラと text/html
MIME
- タイプに関連付けられます。ファイルが処理されるときは imap-file
- ハンドラが使用されますので、そのファイルは mod_imagemap
- のイメージマップファイルとして扱われることになります。
特定の MIME タイプのファイルはインターネットでの転送を簡単にするために、
- さらに符号化することができます。これは通常は gzip
の
- ような圧縮のことを指しますが、pgp
のような暗号化や、
- バイナリファイルを ASCII (テキスト) 形式で送るために考案された
- UUencoding のことを指すこともあります。
HTTP/1.1 RFC - 14.11 節では次のように記述されています。
- --- -Content-Encoding エンティティヘッダフィールドはメディアタイプの - 修飾子として使われます。それが存在していれば、値はエンティティボディに - どの追加の符号化が適用されたかを示し、Content-Type ヘッダフィールドに - 書かれているメディアタイプを得るためにどの復号機構を適用すべきか、も - 示していることになります。Content-Encoding は主に、元のメディアタイプの - 同一性を失うことなくドキュメントを圧縮することを可能にするために - 使用されます。
-
複数のファイル拡張子 (複数の拡張子については 上の節 を参照) 使うことで、 - ファイルのタイプやエンコーディングを指定することが - できます。
- -たとえば、Microsoft Word のドキュメントがあり、サイズを小さくするために
- pkzip されているとします。.doc
拡張子が Microsoft Word の
- ファイルタイプと関連付けられていて、.zip
拡張子が
- pkzip ファイルエンコーディングと関連付けられていると、ファイル
- Resume.doc.zip
は pkzip された Word ドキュメントである
- ということがわかります。
クライアントのブラウザにエンコーディング方法を知らせるために、
- Apache はリソースと共に Content-Encoding
ヘッダを
- 送ります。
Content-encoding: pkzip
ファイルタイプとファイルエンコーディングの他に重要な情報は - ドキュメントの書かれている言語と、どの文字セットでファイルが表示 - されるべきか、というものです。たとえば、ドキュメントはベトナムの - アルファベットやキリル文字で書かれていて、そのように表示される - 必要があるかもしれません。この情報もまた、HTTP ヘッダで - 送信されます。
- -文字セット、言語、エンコーディング、mime タイプはすべて
- コンテントネゴシエーション (mod_negotiation
参照)
- の最中に、複数の文字セット、言語、エンコーディング、MIME タイプからなる
- 代替物があるときにどのドキュメントをクライアントに送るのかを
- 決定するときに使われます。AddCharset
,
- AddEncoding
, AddLanguage
,
- AddType
の各ディレクティブで作成された
- 拡張子の関連付け (と MimeMagicFile
でリストされている
- 拡張子) がこの選択に参加します。AddHandler
,
- AddInputFilter
,
- AddOutputFilter
の
- 各ディレクティブでのみ関連付けられている拡張子は
- MultiviewsMatch
ディレクティブを
- 使うことでマッチの
- 処理に含めることも外すこともできます。
さらに情報を伝えるために、Apache は文書の言語を
- Content-Language
ヘッダで送ることもあります。
- また、情報を正しく表示するために使用すべき文字セットを示すために
- Conten-Type
ヘッダに情報を追加することもあります。
- Content-Language: en, fr
- Content-Type: text/plain; charset=ISO-8859-1
-
言語の指定は二文字の短縮形で行なわれます。charset
が
- 使用すべき文字セットの名前です。
説明: | ファイル名の拡張子を指定された文字セットにマップする |
---|---|
構文: | AddCharset charset extension
-[extension] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
AddCharset
ディレクティブは、
- 与えられた拡張子を指定された charset にマップします。charset
- は、拡張子 extension を含んでいるファイル名の
- MIME charset
- パラメータです。新しいマッピングは既にある他のマッピングに追加され、同じ拡張子
- extension のためのマッピングを上書きします。
- AddLanguage ja .ja
- AddCharset EUC-JP .euc
- AddCharset ISO-2022-JP .jis
- AddCharset SHIFT_JIS .sjis
-
この場合、ドキュメント xxxx.ja.jis
は charset が
- ISO-2022-JP
の日本語のドキュメントとして扱われます
- (xxxx.jis.ja
も同様)。AddCharset
- ディレクティブは、ドキュメントが適切に解釈され表示されるように、
- ドキュメントの charset の情報をクライアントに教えるために役に立ちます。
- また、サーバがクライアントの charset
- の優先度に基づいて複数のドキュメントの中からドキュメントを選ぶコンテントネゴシエーションのためにも役に立ちます。
引数 extensionは大文字小文字を区別せず、 - 最初のドットはあってもなくても構いません。
- -説明: | ファイル名の拡張子を指定されたエンコーディング -にマップする |
---|---|
構文: | AddEncoding MIME-enc extension
-[extension] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
AddEncoding
ディレクティブは、
- 与えられた拡張子を指定されたエンコーディングにマップします。
- MIME-enc は、拡張子 extension
- を含んだドキュメントに使用する MIME エンコーディングです。
- この新しいマッピングは既にある他のマッピングに追加され、
- 同じ拡張子 extension のためのマッピングを上書きします。
-
AddEncoding x-gzip .gz
-
- AddEncoding x-compress .Z
これは、拡張子 .gz
を含むファイル名が x-gzip
- エンコーディングを使ってエンコードされていることと、拡張子 .Z
- を含むファイル名が x-compress
- でエンコードされていることを指定します。
古いクライアントは x-zip
と x-compress
- が返ってくることを期待しますが、標準規格ではそれぞれ
- gzip
と compress
- と等価であることになっています。Apache
- は、コンテントエンコーディングの比較をするときには、先頭にある
- x-
を無視します。Apache
- がエンコーディング付きで応答を返すときは、クライアントが要求した形式
- (すなわち、x-foo
や foo
)
- を使用します。要するに、この二つのエンコーディングの場合は常に
- x-gzip
と x-compress
- を使うべきである、ということです。deflate
- のようなより新しいエンコーディングでは、x-
- なしで指定してください。
-
引数 extension は大文字小文字を区別せず、 - 最初のドットはあってもなくても構いません。
- -説明: | ファイル名の拡張子を指定されたハンドラにマップする |
---|---|
構文: | AddHandler handler-name extension
-[extension] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
拡張子 extension が名前にあるファイルは指定された handler-name に扱われます。
- この新しいマッピングは既にある他のマッピングに追加され、
- 同じ拡張子 extension
- のためのマッピングを上書きします。たとえば、拡張子
- ".cgi
" で終わるファイルを CGI
- スクリプトとして扱いたいときは、以下の設定をします。
- AddHandler cgi-script .cgi
-
これを httpd.conf ファイルに記述することで、拡張子
- ".cgi
" のファイルは CGI プログラムとして扱われます。
-
引数 extension は大文字小文字を区別せず、 - 最初のドットはあってもなくても構いません。
- -SetHandler
説明: | ファイルの拡張子をクライアントのリクエストを処理する - フィルタにマップする |
---|---|
構文: | AddInputFilter filter[;filter...]
-extension [extension] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
互換性: | 2.0.26 以降で使用可能 |
AddInputFilter
はファイルの拡張子
- extension をクライアントのリクエストや POST がサーバに来たときに
- 処理をするフィルタにマップします。
- これは、SetInputFilter
ディレクティブも
- 含め、他の場所で定義されているフィルタに加えられます。
- このマッピングはすでにあるものより優先されてマージされ、
- 同じ extension に対する既存のマッピングを上書きします。
複数のフィルタを指定するときは、データを処理する順番にセミコロンで - 繋いで書く必要があります。フィルタと extension との - 両方の引数は大文字小文字を区別せず、拡張子の最初のドットは - あってもなくても構いません。
- -説明: | ファイル名を指定された言語にマップ |
---|---|
構文: | AddLanguage MIME-lang extension
-[extension] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
AddLanguage
ディレクティブは、与えられた拡張子を指定された
- content language にマップします。MIME-lang は、拡張子
- extension を含んでいるファイル名の MIME における言語です。
- この新しいマッピングは既にあるマッピングに追加され、同じ拡張子
- extension のためのマッピングを上書きします。
- AddEncoding x-compress .Z
- AddLanguage en .en
- AddLanguage fr .fr
-
この場合、xxxx.en.Z
ドキュメントは compress
- された英語のドキュメントとして扱われます (xxxx.Z.en
- も同様)。content language はクライアントに通知されますが、
- ブラウザがこの情報を使うことはおそらくありません。
- AddLanguage
- ディレクティブは、サーバがクライアントの言語の優先度に基づいて複数の
- ドキュメントの中からドキュメントを選ぶコンテントネゴシエーションのためにより役に立ちます。
複数の言語が同じ拡張子に割り当てられているときは、 - 最後のものが使用されます。すなわち、次のような場合、
- -
- AddLanguage en .en
- AddLanguage en-gb .en
- AddLanguage en-us .en
-
拡張子 .en
のあるドキュメントは
- en-us
として扱われます。
引数 extension は大文字小文字を区別せず、 - 最初のドットはあってもなくても構いません。
- -説明: | ファイル名の拡張子をサーバからの応答を処理するフィルタに - マップする |
---|---|
構文: | AddOutputFilter filter[;filter...]
-extension [extension] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
互換性: | 2.0.26 以降で使用可能 |
AddOutputFilter
ディレクティブは
- 拡張子 extension をサーバの応答がクライアントに送られる
- 前に処理するフィルタを定義します。
- これは SetOutputFilter
- ディレクティブと AddOutputFilterByType
ディレクティブ
- を含め、他の場所で定義されているフィルタに加えられます。
- この新しいマッピングは既にあるマッピングに追加され、同じ拡張子
- extension のためのマッピングを上書きします。
例えば、以下の設定はすべての .shtml
ファイルを SSI で処理し、
- その出力を mod_deflate
を使って圧縮します。
- AddOutputFilter INCLUDES;DEFLATE shtml
-
複数のフィルタを指定するときは、データを処理する順番にセミコロンで - 繋いで書く必要があります。filter と extension の - 両引数は大文字小文字を区別せず、拡張子の最初のドットは - あってもなくても構いません。
- -説明: | ファイル名の拡張子を指定されたコンテントタイプにマップ |
---|---|
構文: | AddType MIME-type extension
-[extension] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
AddType
ディレクティブは、
- 与えられた拡張子を指定されたコンテントタイプにマップします。
- MIME-type は拡張子 extension
- を含んだドキュメントに使用する MIME タイプです。
- この新しいマッピングは既にあるマッピングに追加され、同じ拡張子
- extension のためのマッピングを上書きします。
- このディレクティブは MIME タイプファイル (TypesConfig
ディレクティブを参照)
- に無いマッピングを追加するために使用することができます。
- AddType image/gif .gif
-
TypesConfig
- ファイルを変更するのではなく、AddType
- ディレクティブを使って追加することが推奨されています。
- 引数 extension は大文字小文字を区別せず、 - 最初のドットはあってもなくても構いません。
- -DefaultType
ForceType
説明: | あるスコープのすべてのファイルを指定された言語に -設定する |
---|---|
構文: | DefaultLanguage MIME-lang |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
DefaultLanguage
ディレクティブは、Apache
- がディレクティブのスコープ (例えば、その時点の
- <Directory>
- の範囲) にある、明示的な言語拡張子
- (AddLanguage
で設定される
- .fr
や .de
) のない全てのファイルを、指定された
- MIME-lang 言語であるとみなすようにします。
- これにより、すべてのファイル名を変えることなく、
- ディレクトリがオランダ語のコンテントを含んでいる、
- というようなことを指定することができます。
- 拡張子を使用して言語を指定する方法と違い、
- DefaultLanguage
- は一つの言語しか指定できないことに注意してください。
DefaultLanguage
- ディレクティブが有効でなく、ファイルに
- AddLanguage
- で設定された言語の拡張子がないときは、
- ファイルには言語属性がないとみなされます。
- DefaultLanguage en
-
説明: | path_info コンポーネントをファイル名の一部として扱うように
-mod_mime に通知する |
---|---|
構文: | ModMimeUsePathInfo On|Off |
デフォルト: | ModMimeUsePathInfo Off |
コンテキスト: | ディレクトリ |
ステータス: | Base |
モジュール: | mod_mime |
互換性: | Apache 2.0.41 以降 |
ModMimeUsePathInfo
ディレクティブは、
- mod_mime
の持つディレクティブを
- リクエストに適用させるために、ファイル名と path_info
URL
- コンポーネントを結合させるために使用します。
- デフォルトでは「 Off
」で、path_info
- コンポーネントは無視されます。
このディレクティブは、バーチャルファイルシステムを使用している際に - 推奨されるディレクティブです。
- -
- ModMimeUsePathInfo On
-
/bar
が存在して (foo.shtml は存在しない)
- ModMimeUsePathInfo
が On
であるとして、
- /bar/foo.shtml
に対するリクエストを発行した場合、
- mod_mime
は入ってきたリクエストを
- /bar/foo.shtml
として扱い、
- AddOutputFileter INCLUDES .shtml
のようなディレクティブは
- INCLUDES
フィルタをリクエストに付加させます。
- ModMimeUsePathInfo
が設定されなければ、
- INCLUDES
フィルタは付加されません。
説明: | MultiViews でのマッチングの検索に含ませる -ファイルのタイプを指定する |
---|---|
構文: | MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers
-[Handlers|Filters] |
デフォルト: | MultiviewsMatch NegotiatedOnly |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
互換性: | 2.0.26 以降で使用可能 |
MultiviewsMatch
を使用することで、
- mod_negotiation の
- Multiviews に 3 種類の異なる挙動をさせることができます。
- Multiviews を使用すると、ファイル (例 index.html
)
- に対するリクエストに対して、ネゴシエーションする拡張子がベースに付いたもの
- (index.html.en
, index.html.fr
や
- index.html.gz
)
- をマッチさせることができます。
NegotiatedOnly
オプションでは、ベース名に続く拡張子全てが
- コンテントネゴシエーションで mod_mime
- が認識する拡張子 (例 文字セット、コンテントタイプ、言語やエンコーディング)
- に関連付けられていなければなりません。これは副作用の最も少ない
- 最も的確な実装で、デフォルトになっています。
ハンドラとフィルタの両方もしくは片方と関連付けられた拡張子を含めるには、
- MultiviewsMatch
ディレクティブに Handlers
,
- Filters
またはその両方のオプションをセットします。
- もし他の条件が同じであれば、最も小さいファイルが送信されます。
- 例えば、500 文字の index.html.cgi
と 1000 バイトの
- index.html.pl
であれば、.cgi
- のファイルが優先されます。.asis
ファイルを利用しているユーザは、
- .asis
ファイルが asis-handler
に関連付けられているときには、
- ハンドラオプションの使用を好むでしょう。
最後に、mod_mime
が認識しない拡張子であろうとも、
- どんな拡張子でもマッチさせる Any
が使用できます。
- この挙動は Apache 1.3 のときと同じもので、予期しない動作、例えば .old
や
- .bak
ファイルといったウェブマスタが送信を意図していない
- ファイルを送信する、といった動作を行なう可能性があります。
例えば次の設定では、ハンドラやフィルタが Multiviews に参加することが - できますし、未知のファイルは除外することができます。
- -
- MultiviewsMatch Handlers Filters
-
説明: | ファイルの拡張子に関連付けられたすべての文字セット -を解除する |
---|---|
構文: | RemoveCharset extension [extension]
-... |
コンテキスト: | バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
互換性: | 2.0.24 以降で使用可能 |
RemoveCharset
ディレクティブ
- は与えられた拡張子に関連付けられた文字セットを取り消します。
- これにより、サブディレクトリにある .htaccess
- ファイルが親ディレクトリやサーバの設定ファイル
- から継承した関連付けを取り消すことができます。例えば:
extension は大文字小文字を区別しません。 - また、最初のドットはあってもなくても構いません。
- -
- RemoveCharset .html .shtml
-
説明: | ファイルの拡張子に関連付けられたすべてのコンテントエンコーディング -を解除する |
---|---|
構文: | RemoveEncoding extension [extension]
-... |
コンテキスト: | バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
RemoveEncoding
ディレクティブは、
- 与えられた拡張子に関連付けられたエンコーディングを取り消します。
- これにより、サブディレクトリにある .htaccess
- ファイルが親ディレクトリやサーバの設定ファイルから継承した関連付けを
- 取り消すことができます。
- AddEncoding x-gzip .gz
- AddType text/plain .asc
- <Files *.gz.asc>
-
- RemoveEncoding .gz
-
- </Files>
-
これは、foo.gz
は gzip
- でエンコードされていることを指定しますが、foo.gz.asc
- はエンコードされていないプレーンテキストの
- ファイルであるということを指定します。
RemoveEncoding
は
- AddEncoding
- ディレクティブの後で処理されますので、
- 同じディレクトリの設定中に両方が現れると、
- 後者の効果が打ち消される可能性があります。
extension は大文字小文字を区別しません。 - また、最初のドットはあってもなくても構いません。
- -説明: | ファイルの拡張子に関連付けられたすべてのハンドラを -解除する |
---|---|
構文: | RemoveHandler extension [extension]
-... |
コンテキスト: | バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
RemoveHandler
ディレクティブ
- は与えられた拡張子に関連付けられたハンドラを取り消します。
- これにより、サブディレクトリにある .htaccess
- ファイルが親ディレクトリやサーバの設定ファイル
- から継承した関連付けを取り消すことができます。たとえば:
- AddHandler server-parsed .html
-
- RemoveHandler .html
-
これは、/foo/bar
ディレクトリの .html
- ファイルは SSI (mod_include
モジュール参照) ではなく、
- 普通のファイルとして扱われるようにする効果があります。
-
extension は大文字小文字を区別しません。 - また、最初のドットはあってもなくても構いません。
- -説明: | ファイル拡張子に関連付けられた入力フィルタを解除する |
---|---|
構文: | RemoveInputFilter extension [extension]
-... |
コンテキスト: | バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
互換性: | 2.0.26 以降で使用可能 |
RemoveInputFilter
ディレクティブは
- 指定されたファイル拡張子に関連付けられた入力フィルタを解除します。
- これを利用することで、親ディレクトリやサーバ設定ファイルから
- 継承した関連付けを サブディレクトリ内において
- .htaccess
ファイルで取り消すことができます。
extension 引数は大文字小文字を区別しません。また、 - 最初のドットはあってもなくても構いません。
- -説明: | ファイル拡張子に関連付けられた言語を解除する |
---|---|
構文: | RemoveLanguage extension [extension]
-... |
コンテキスト: | バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
互換性: | 2.0.24 以降で使用可能 |
RemoveLanguage
ディレクティブは
- 指定されたファイル拡張子に関連付けられた言語を解除します。
- これを利用することで、親ディレクトリやサーバ設定ファイルから
- 継承した関連付けを サブディレクトリ内において
- .htaccess
ファイルで取り消すことができます。
extension 引数は大文字小文字を区別しません。また、 - 最初のドットはついてもつかなくても構いません。
- -説明: | ファイル拡張子に関連付けられた出力フィルタを解除する |
---|---|
構文: | RemoveOutputFilter extension [extension]
-... |
コンテキスト: | バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
互換性: | 2.0.26 以降でのみ使用可能 |
RemoveOutputFilter
ディレクティブは
- 指定されたファイル拡張子に関連付けられた出力フィルタを解除します。
- これを利用することで、親ディレクトリやサーバ設定ファイルから
- 継承した関連付けを サブディレクトリ内において
- .htaccess
ファイルで取り消すことができます。
extension は大文字小文字を区別しません。 - また、最初のドットはあってもなくても構いません。
- -
- RemoveOutputFilter shtml
-
説明: | ファイルの拡張子と関連付けられたコンテントタイプを -解除する |
---|---|
構文: | RemoveType extension [extension]
-... |
コンテキスト: | バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_mime |
RemoveType
ディレクティブは与えられた拡張子の
- MIME タイプの関連付けを取り消します。これにより、
- サブディレクトリにある .htaccess
- ファイルが親ディレクトリやサーバの設定ファイルから継承した
- 関連付けを取り消すことができます。たとえば:
- RemoveType .cgi
-
これは /foo/
ディレクトリ以下の .cgi
- ファイルの特別な扱いを取り消します。ファイルは DefaultType
として扱われます。
RemoveType
ディレクティブは
- AddType
- ディレクティブの後に処理されますので、
- 両方が同じディレクトリの設定中に現れた場合、
- 後者の効果が打ち消される可能性があります。
extension は大文字小文字を区別しません。 - また、最初のドットはあってもなくても構いません。
- -説明: | mime.types ファイルの位置 |
---|---|
構文: | TypesConfig file-path |
デフォルト: | TypesConfig conf/mime.types |
コンテキスト: | サーバ設定ファイル |
ステータス: | Base |
モジュール: | mod_mime |
TypesConfig
ディレクティブは、MIME
- タイプ設定ファイルの位置を設定します。filename は
- ServerRoot
からの相対パスです。
- このファイルはファイルの拡張子からコンテントタイプへの
- デフォルトのマッピングを設定します。
- ほとんどの管理者は、よく使われるファイル名の拡張子を
- IANA に登録されたコンテントタイプに関連付けている、
- Apache の mime.types
ファイルを使います。
- 現在の一覧は http://www.iana.org/assignments/media-types/index.html
- で管理されています。これは、主要なメディアタイプの定義を提供して、
- 必要ところを AddType
で
- 上書きする、という方法で httpd.conf
を簡略にします。
- mime.types
はサーバをアップグレードしたときに
- 置き換えられるかもしれないので、そのファイルを直接
- 編集しないでください。
ファイルは、AddType
- ディレクティブの引数と同じ形式の行で構成されます。
- MIME-type [extension] ...
-
拡張子の大文字小文字は区別されません。空行やハッシュ (`#') - で始まる行は無視されます。
- -mime.types
- ファイルに新たなものを登録するように
- Apache HTTP Server Project にリクエストしないでください。
- category/x-subtype
のリクエストは自動的に却下されますし、
- 言語や文字セットの名前空間で既に使用されていて、衝突の可能性のある
- 2 文字の拡張子も却下されます。
- Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻<ゃ≦宍絖<ゃ + (潟c)絎 (MIME 帥ゃ荐茯絖祉潟潟若c潟) + ∫d |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | mime_module |
純若鴻<ゃ: | mod_mime.c |
≪吾ャ若≦宍絖篏帥c<炊宴<ゃ
+ ∫d篏睡障宴ャ<潟<ゃ
+ MIME 帥ゃ荐茯絖祉潟潟若c潟違∫d障
+ 宴吟障茲違<ゃ筝若吟絅純帥
+ 吾違潟潟潟眼激若激с潟с篏帥障
+ 潟潟潟眼激若激с
+ ≪荅潟宴 mod_negotiation
+ 荀т
AddCharset
cc
+ AddEncoding
cc
+ AddHandler
cc
+ AddLanguage
cc
+ AddType
cc鴻
+ <ゃ≦宍絖<炊宴篏睡障
+ ャ<潟絖祉 (荐恰絵: charset)content-encoding,
+ content-language, MIME 帥ゃ (content-type) 荐絎障
+ TypesConfig
cc≦宍絖
+ MIME 帥ゃ<ゃ絎篏睡障
mod_mime
潟潟潟篏
+ 潟 c
+ 荐絎с障AddHandler
ccAddOutputFilter
ccAddInputFilter
cc
+ ャ<潟宴≪吾ャ若鴻九勝障
+ MultiviewsMatch
cc
+ cc絎<ゃ≦宍絖
+ mod_negotiation
Multiviews
+ с障
mod_mime
<炊宴<ゃ∫d障
+ core
泣若潟潟
+ (, <Location>
, <Directory>
, <Files>
) 筝鴻<ゃ劫
+ <炊宴∫dcc障cc
+ ForceType
, SetHandler
, SetInputFilter
, SetOutputFilter
障
+ 潟≪cc mod_mime
絎臂
+ <ゃ≦宍絖潟違鴻筝吾障
<ゃ<炊宴紊 Last-Modified
+ ゃ紊羈с
+ 紊眼翫ゃ≪潟激т札c激ャ
+ 潟若篏帥醇с障
+ <炊 (荐茯潟潟潟帥ゃ絖祉潟潟若c潟)
+ 紊眼鴻荐罩c潟潟潟
+ 綵演帥<ゃ 'touch' 潟潟絎茵
+ (腟贋井ャ贋違) 綽荀障
<ゃ茲違≦宍絖ゃс≦宍絖絽吾≫障箴違<ゃ welcome.html.fr
+ 潟潟潟帥ゃ text/html
+ 荐茯潟壕翫welcome.fr.html
+ 障c宴障
+ <炊宴≦宍絖茲違荐茯
+ 潟潟潟潟潟若c潟違ゃ
+ 勀眼篏睡障違.gif
MIME
+ 帥ゃ image/gif
.html
+ MIME 帥ゃ text/html
+ 翫<ゃ welcome.gif.html
+ MIME 帥ゃ text/html
∫d障
純若鴻茲違荐茯潟潟若c潟違∫d
+ с
+ 荐茯潟潟潟潟潟若c潟菴遵障
+ 違<ゃ welcome.html.en.de
+ Content-Language: en, de
Content-Type:
+ text/html
篆<障
茲違≦宍絖<ゃ MIME
+ 帥ゃ潟筝≧鴻∫d羈綽荀障
+ 翫鴻潟∫d
+ ≪吾ャ若c宴障違≦宍絖
+ .imap
(mod_imagemap
) imap-file
+ .html
MIME 帥ゃ text/html
+ <ゃ world.imap.html
+ imap-file
潟 text/html
MIME
+ 帥ゃ∫d障<ゃ imap-file
+ 潟篏睡障с<ゃ mod_imagemap
+ ゃ<若吾<ゃ宴障
劫 MIME 帥ゃ<ゃゃ潟帥若с荵∫膂≦
+ 膃垸с障絽吾 gzip
+ х軒障pgp
垸
+ ゃ<ゃ ASCII (鴻) 綵√ч罅
+ UUencoding 障
HTTP/1.1 RFC + 14.11 膀с罨<荐菴違障
+ +++ +Content-Encoding 潟ccc若<c≪帥ゃ + 篆蕋上篏帥障絖違ゃ潟ccc + 菴遵膃垸腓冴Content-Type c若 + 吾<c≪帥ゃ緇緇垽罕鴻 + 腓冴障Content-Encoding 筝祉<c≪帥ゃ + 筝с紊宴ャ<潟х軒純 + 篏睡障
+
茲違<ゃ≦宍絖 (茲違≦宍絖ゃ 筝膀 ) 篏帥с + <ゃ帥ゃ潟潟若c潟絎 + с障
+ +違Microsoft Word ャ<潟泣ゃ冴絨
+ pkzip 障.doc
≦宍絖 Microsoft Word
+ <ゃ帥ゃ∫d.zip
≦宍絖
+ pkzip <ゃ潟潟若c潟違∫d<ゃ
+ Resume.doc.zip
pkzip Word ャ<潟с
+ 障
ゃ≪潟吟潟潟若c潟井号ャ
+ Apache 純若鴻宴 Content-Encoding
+ 障
Content-encoding: pkzip
<ゃ帥ゃ<ゃ潟潟若c潟違篁荀宴 + ャ<潟吾荐茯絖祉с<ゃ茵腓 + 鴻с違ャ<潟 + ≪<絖ф吾茵腓冴 + 綽荀障宴障HTTP + 篆<障
+ +絖祉荐茯潟潟若c潟違mime 帥ゃ鴻
+ 潟潟潟眼激若激с (mod_negotiation
)
+ 筝茲違絖祉荐茯潟潟若c潟違MIME 帥ゃ
+ 篁f睡ャ<潟ゃ≪潟
+ 羆阪篏帥障AddCharset
,
+ AddEncoding
, AddLanguage
,
+ AddType
ccт
+ ≦宍絖∫d ( MimeMagicFile
с鴻
+ ≦宍絖) 御障AddHandler
,
+ AddInputFilter
,
+ AddOutputFilter
+ ccс翠∫d≦宍絖
+ MultiviewsMatch
cc
+ 篏帥с
+ 紊с障
宴篌Apache 吾荐茯
+ Content-Language
ч障
+ 障宴罩c頫腓冴篏睡鴻絖祉腓冴
+ Conten-Type
宴菴遵障
+ Content-Language: en, fr
+ Content-Type: text/plain; charset=ISO-8859-1
+
荐茯絎篋絖膰綵≪ц障charset
+ 篏睡鴻絖祉с
茯: | <ゃ≦宍絖絎絖祉 |
---|---|
罕: | AddCharset charset extension
+[extension] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
AddCharset
cc
+ 筝≦宍絖絎 charset 障charset
+ ≦宍絖 extension с<ゃ
+ MIME charset
+ <若с違潟違≪篁潟違菴遵≦宍絖
+ extension 潟違筝吾障
+ AddLanguage ja .ja
+ AddCharset EUC-JP .euc
+ AddCharset ISO-2022-JP .jis
+ AddCharset SHIFT_JIS .sjis
+
翫ャ<潟 xxxx.ja.jis
charset
+ ISO-2022-JP
ユ茯ャ<潟宴障
+ (xxxx.jis.ja
罕)AddCharset
+ ccャ<潟茹i茵腓冴
+ ャ<潟 charset 宴ゃ≪潟綵鴻腴<障
+ 障泣若ゃ≪潟 charset
+ 綺冴ャ茲違ャ<潟筝ャ<潟吾潟潟潟眼激若激с綵鴻腴<障
綣 extension紊ф絖絨絖阪ャ + c罕障
+ + + +茯: | <ゃ≦宍絖絎潟潟若c潟 + |
---|---|
罕: | AddEncoding MIME-enc extension
+[extension] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
AddEncoding
cc
+ 筝≦宍絖絎潟潟若c潟違障
+ MIME-enc ≦宍絖 extension
+ ャ<潟篏睡 MIME 潟潟若c潟違с
+ 違潟違≪篁潟違菴遵
+ ≦宍絖 extension 潟違筝吾障
+
AddEncoding x-gzip .gz
+
+ AddEncoding x-compress .Z
≦宍絖 .gz
<ゃ x-gzip
+ 潟潟若c潟違篏帥c潟潟若≦宍絖 .Z
+ <ゃ x-compress
+ с潟潟若絎障
ゃゃ≪潟 x-zip
x-compress
+ 菴c緇障罔羣荀若с
+ gzip
compress
+ 膈箴<сc障Apache
+ 潟潟潟潟潟若c潟違罸莠
+ x-
∴障Apache
+ 潟潟若c潟遺у膈菴ゃ≪潟荀羆綵√
+ (x-foo
foo
)
+ 篏睡障荀篋ゃ潟潟若c潟違翫絽吾
+ x-gzip
x-compress
+ 篏帥鴻ссdeflate
+ 違潟潟若c潟違сx-
+ ф絎
+
綣 extension 紊ф絖絨絖阪ャ + c罕障
+ +茯: | <ゃ≦宍絖絎潟 |
---|---|
罕: | AddHandler handler-name extension
+[extension] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
≦宍絖 extension <ゃ絎 handler-name 宴障
+ 違潟違≪篁潟違菴遵
+ ≦宍絖 extension
+ 潟違筝吾障違≦宍絖
+ ".cgi
" х<ゃ CGI
+ 鴻宴篁ヤ荐絎障
+ AddHandler cgi-script .cgi
+
httpd.conf <ゃ荐菴違с≦宍絖
+ ".cgi
" <ゃ CGI 違宴障
+
綣 extension 紊ф絖絨絖阪ャ + c罕障
+ + +SetHandler
茯: | <ゃ≦宍絖ゃ≪潟鴻 + c帥 |
---|---|
罕: | AddInputFilter filter[;filter...]
+extension [extension] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
篋: | 2.0.26 篁ラт戎 |
AddInputFilter
<ゃ≦宍絖
+ extension ゃ≪潟鴻 POST 泣若ャ
+ c障
+ SetInputFilter
cc
+ 篁贋у臂c帥障
+ 潟違с若吾
+ extension 絲障√潟違筝吾障
茲違c帥絎若帥祉潟潟 + 膵ф吾鏆荀障c帥 extension + 筝≧鴻綣違紊ф絖絨絖阪ャ≦宍絖 + c罕障
+ + + +茯: | <ゃ絎荐茯 |
---|---|
罕: | AddLanguage MIME-lang extension
+[extension] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
AddLanguage
cc筝≦宍絖絎
+ content language 障MIME-lang ≦宍絖
+ extension с<ゃ MIME 荐茯с
+ 違潟違≪潟違菴遵≦宍絖
+ extension 潟違筝吾障
+ AddEncoding x-compress .Z
+ AddLanguage en .en
+ AddLanguage fr .fr
+
翫xxxx.en.Z
ャ<潟 compress
+ 沿ャ<潟宴障 (xxxx.Z.en
+ 罕)content language ゃ≪潟ャ障
+ 吟宴篏帥障
+ AddLanguage
+ cc泣若ゃ≪潟荐茯綺冴ャ茲違
+ ャ<潟筝ャ<潟吾潟潟潟眼激若激с綵鴻腴<障
茲違荐茯≦宍絖蚊綵 + 緇篏睡障<罨<翫
+ +
+ AddLanguage en .en
+ AddLanguage en-gb .en
+ AddLanguage en-us .en
+
≦宍絖 .en
ャ<潟
+ en-us
宴障
綣 extension 紊ф絖絨絖阪ャ + c罕障
+ + + +茯: | <ゃ≦宍絖泣若綽膈c帥 + |
---|---|
罕: | AddOutputFilter filter[;filter...]
+extension [extension] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
篋: | 2.0.26 篁ラт戎 |
AddOutputFilter
cc
+ ≦宍絖 extension 泣若綽膈ゃ≪潟
+ c絎臂障
+ SetOutputFilter
+ cc AddOutputFilterByType
cc
+ 篁贋у臂c帥障
+ 違潟違≪潟違菴遵≦宍絖
+ extension 潟違筝吾障
箴違篁ヤ荐絎鴻 .shtml
<ゃ SSI у
+ 阪 mod_deflate
篏帥cх軒障
+ AddOutputFilter INCLUDES;DEFLATE shtml
+
茲違c帥絎若帥祉潟潟 + 膵ф吾鏆荀障filter extension + 筝≦違紊ф絖絨絖阪ャ≦宍絖 + c罕障
+ + + +茯: | <ゃ≦宍絖絎潟潟潟帥ゃ |
---|---|
罕: | AddType MIME-type extension
+[extension] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
AddType
cc
+ 筝≦宍絖絎潟潟潟帥ゃ障
+ MIME-type ≦宍絖 extension
+ ャ<潟篏睡 MIME 帥ゃс
+ 違潟違≪潟違菴遵≦宍絖
+ extension 潟違筝吾障
+ cc MIME 帥ゃ<ゃ (TypesConfig
cc)
+ <潟違菴遵篏睡с障
+ AddType image/gif .gif
+
TypesConfig
+ <ゃ紊眼сAddType
+ cc篏帥c菴遵ィ絅障
+ 綣 extension 紊ф絖絨絖阪ャ + c罕障
+ + +DefaultType
ForceType
茯: | 鴻潟若鴻<ゃ絎荐茯 +荐絎 |
---|---|
罕: | DefaultLanguage MIME-lang |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
DefaultLanguage
ccApache
+ cc鴻潟若 (箴鴻
+ <Directory>
+ 膀) 腓榊荐茯≦宍絖
+ (AddLanguage
ц┃絎
+ .fr
.de
) <ゃ絎
+ MIME-lang 荐茯с帥障
+ 鴻<ゃ紊
+ c潟茯潟潟潟с
+ 絎с障
+ ≦宍絖篏睡荐茯絎号
+ DefaultLanguage
+ 筝ゃ荐茯絎с羈
DefaultLanguage
+ cc鴻с<ゃ
+ AddLanguage
+ ц┃絎荐茯≦宍絖
+ <ゃ荐茯絮с帥障
+ DefaultLanguage en
+
茯: | path_info 潟潟若潟<ゃ筝宴
+mod_mime ャ |
---|---|
罕: | ModMimeUsePathInfo On|Off |
: | ModMimeUsePathInfo Off |
潟潟鴻: | c |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
篋: | Apache 2.0.41 篁ラ |
ModMimeUsePathInfo
cc
+ mod_mime
ゃcc
+ 鴻<ゃ path_info
URL
+ 潟潟若潟腟篏睡障
+ с Off
сpath_info
+ 潟潟若潟∴障
cc若c<ゃ激鴻篏睡 + ィ絅ccс
+ +
+ ModMimeUsePathInfo On
+
/bar
絖 (foo.shtml 絖)
+ ModMimeUsePathInfo
On
с
+ /bar/foo.shtml
絲障鴻肴翫
+ mod_mime
ャc鴻
+ /bar/foo.shtml
宴
+ AddOutputFileter INCLUDES .shtml
cc
+ INCLUDES
c帥鴻篁障
+ ModMimeUsePathInfo
荐絎違
+ INCLUDES
c帥篁障
茯: | MultiViews с潟違罎膣≪障 +<ゃ帥ゃ絎 |
---|---|
罕: | MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers
+[Handlers|Filters] |
: | MultiviewsMatch NegotiatedOnly |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
篋: | 2.0.26 篁ラт戎 |
MultiviewsMatch
篏睡с
+ mod_negotiation
+ Multiviews 3 腮蕁違с障
+ Multiviews 篏睡<ゃ (箴 index.html
)
+ 絲障鴻絲障眼激若激с潟≦宍絖若鴻篁
+ (index.html.en
, index.html.fr
+ index.html.gz
)
+ с障
NegotiatedOnly
激с潟с若劫膓≦宍絖
+ 潟潟潟眼激若激с潟 mod_mime
+ 茯茘≦宍絖 (箴 絖祉潟潟潟帥ゃ荐茯潟潟若c潟)
+ ∫d違障篏絨
+ 腆冴絎茖сc障
潟c帥筝≧鴻鴻∫d≦宍絖
+ MultiviewsMatch
cc Handlers
,
+ Filters
障筝≧鴻激с潟祉障
+ 篁>散с違絨<ゃ篆<障
+ 箴違500 絖 index.html.cgi
1000 ゃ
+ index.html.pl
с違.cgi
+ <ゃ障.asis
<ゃ若吟
+ .asis
<ゃ asis-handler
∫d
+ 潟激с潟篏睡絅純с
緇mod_mime
茯茘≦宍絖с
+ ≦宍絖с Any
篏睡с障
+ Apache 1.3 с篋篏箴 .old
+ .bak
<ゃcс鴻帥篆<潟
+ <ゃ篆<c篏茵醇с障
箴井<荐絎с潟c帥 Multiviews + с障ャ<ゃゅс障
+ +
+ MultiviewsMatch Handlers Filters
+
茯: | <ゃ≦宍絖∫d鴻絖祉 +茹iゃ |
---|---|
罕: | RemoveCharset extension [extension]
+... |
潟潟鴻: | 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
篋: | 2.0.24 篁ラт戎 |
RemoveCharset
cc
+ 筝≦宍絖∫d絖祉羔障
+ 泣c .htaccess
+ <ゃ荀c泣若荐絎<ゃ
+ 膓帥∫d羔с障箴:
extension 紊ф絖絨絖阪ャ障 + 障c罕障
+ +
+ RemoveCharset .html .shtml
+
茯: | <ゃ≦宍絖∫d鴻潟潟潟潟潟若c潟 +茹iゃ |
---|---|
罕: | RemoveEncoding extension [extension]
+... |
潟潟鴻: | 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
RemoveEncoding
cc
+ 筝≦宍絖∫d潟潟若c潟違羔障
+ 泣c .htaccess
+ <ゃ荀c泣若荐絎<ゃ膓帥∫d
+ 羔с障
+ AddEncoding x-gzip .gz
+ AddType text/plain .asc
+ <Files *.gz.asc>
+
+ RemoveEncoding .gz
+
+ </Files>
+
foo.gz
gzip
+ с潟潟若絎障foo.gz.asc
+ 潟潟若若潟鴻
+ <ゃс絎障
RemoveEncoding
+ AddEncoding
+ cc緇у障с
+ c荐絎筝筝≧鴻憗
+ 緇号≧醇с障
extension 紊ф絖絨絖阪ャ障 + 障c罕障
+ +茯: | <ゃ≦宍絖∫d鴻潟 +茹iゃ |
---|---|
罕: | RemoveHandler extension [extension]
+... |
潟潟鴻: | 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
RemoveHandler
cc
+ 筝≦宍絖∫d潟羔障
+ 泣c .htaccess
+ <ゃ荀c泣若荐絎<ゃ
+ 膓帥∫d羔с障:
+ AddHandler server-parsed .html
+
+ RemoveHandler .html
+
/foo/bar
c .html
+ <ゃ SSI (mod_include
≪吾ャ若) с
+ <ゃ宴号障
+
extension 紊ф絖絨絖阪ャ障 + 障c罕障
+ +茯: | <ゃ≦宍絖∫dュc帥茹iゃ |
---|---|
罕: | RemoveInputFilter extension [extension]
+... |
潟潟鴻: | 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
篋: | 2.0.26 篁ラт戎 |
RemoveInputFilter
cc
+ 絎<ゃ≦宍絖∫dュc帥茹iゃ障
+ с荀c泣若荐絎<ゃ
+ 膓帥∫d 泣c
+ .htaccess
<ゃу羔с障
extension 綣違紊ф絖絨絖阪ャ障障 + c罕障
+ + + +茯: | <ゃ≦宍絖∫d荐茯茹iゃ |
---|---|
罕: | RemoveLanguage extension [extension]
+... |
潟潟鴻: | 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
篋: | 2.0.24 篁ラт戎 |
RemoveLanguage
cc
+ 絎<ゃ≦宍絖∫d荐茯茹iゃ障
+ с荀c泣若荐絎<ゃ
+ 膓帥∫d 泣c
+ .htaccess
<ゃу羔с障
extension 綣違紊ф絖絨絖阪ャ障障 + ゃゃ罕障
+ +茯: | <ゃ≦宍絖∫d阪c帥茹iゃ |
---|---|
罕: | RemoveOutputFilter extension [extension]
+... |
潟潟鴻: | 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
篋: | 2.0.26 篁ラс推戎 |
RemoveOutputFilter
cc
+ 絎<ゃ≦宍絖∫d阪c帥茹iゃ障
+ с荀c泣若荐絎<ゃ
+ 膓帥∫d 泣c
+ .htaccess
<ゃу羔с障
extension 紊ф絖絨絖阪ャ障 + 障c罕障
+ +
+ RemoveOutputFilter shtml
+
茯: | <ゃ≦宍絖∫d潟潟潟帥ゃ +茹iゃ |
---|---|
罕: | RemoveType extension [extension]
+... |
潟潟鴻: | 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
RemoveType
cc筝≦宍絖
+ MIME 帥ゃ∫d羔障
+ 泣c .htaccess
+ <ゃ荀c泣若荐絎<ゃ膓帥
+ ∫d羔с障:
+ RemoveType .cgi
+
/foo/
c篁ヤ .cgi
+ <ゃ劫ャ宴羔障<ゃ DefaultType
宴障
RemoveType
cc
+ AddType
+ cc緇障с
+ 筝≧鴻c荐絎筝憗翫
+ 緇号≧醇с障
extension 紊ф絖絨絖阪ャ障 + 障c罕障
+ +茯: | mime.types <ゃ篏臀 |
---|---|
罕: | TypesConfig file-path |
: | TypesConfig conf/mime.types |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Base |
≪吾ャ若: | mod_mime |
TypesConfig
ccMIME
+ 帥ゃ荐絎<ゃ篏臀荐絎障filename
+ ServerRoot
後障鴻с
+ <ゃ<ゃ≦宍絖潟潟潟帥ゃ吾
+ 潟違荐絎障
+ 祉膊∞鋎帥<ゃ≦宍絖
+ IANA 脂蚊潟潟潟帥ゃ∫d
+ Apache mime.types
<ゃ篏帥障
+ 憜筝荀с http://www.iana.org/assignments/media-types/index.html
+ х∞障筝肢<c≪帥ゃ絎臂箴
+ 綽荀 AddType
+ 筝吾号 httpd.conf
膂∞ャ障
+ mime.types
泣若≪違若
+ 臀с<ゃ贋・
+ 膩с
<ゃAddType
+ cc綣違綵√茵ф障
+ MIME-type [extension] ...
+
≦宍絖紊ф絖絨絖阪ャ障腥肴激 (`#') + у障茵∴障
+ +mime.types
+ <ゃ違脂蚊
+ Apache HTTP Server Project 鴻с
+ category/x-subtype
鴻岩障
+ 荐茯絖祉腥咲ф≪篏睡茵腦醇с
+ 2 絖≦宍絖岩障
+ Apache HTTP サーバ バージョン 2.3
-説明: | コンテントネゴシエーション - 機能を提供する |
---|---|
ステータス: | Base |
モジュール識別子: | negotiation_module |
ソースファイル: | mod_negotiation.c |
コンテントネゴシエーション、より正確にはコンテンツの選択機能は、 - 複数用意されているドキュメントから、クライアントの能力に一番合った - ドキュメントを選択する機能です。この実装は二つあります。
- -type-map
- ハンドラで扱われるファイル)。これは variants
- を含んでいるファイルを明示的に指定します。MultiViews
Option
で有効になります)。
- サーバが暗黙の内にファイル名のパターンマッチを行ない、
- その結果から選択します。タイプマップは RFC 822 のメールヘッダに類似した書式です。 - ドキュメントの記述が空行で分離されて書かれていて、ハッシュ文字 - ('#') で始まる行はコメントとして扱われます。 - ドキュメントの説明は複数のヘッダレコードから構成されます。 - レコードは、続きの行が空白で始まっていると複数の行にまたがります。 - 最初の空白が消去されて、前の行とつなげて 1 行として扱われます。 - ヘッダレコードはキーワード名の後に値が続くという形式で、 - キーワード名は常にコロンで終わります。空白はヘッダ名と値の間、 - 値のトークンの間に入れることができます。 - 使用可能なヘッダは以下のとおりです:
- -Content-Encoding:
AddEncoding
ディレクティブ
- で定義されたエンコーディングだけを認識します。通常 compress
- されたファイルのための x-compress
と gzip
- されたファイルのための x-gzip
を含みます。
- エンコーディングの比較をするときは、接頭辞 x-
- は無視されます。Content-Language:
en
- は英語を表します。
- 複数の言語が格納される場合はコンマで区切られます。Content-Length:
Content-Type:
name=value
- で、メディアタイプや他のパラメータとはセミコロンで分離されます。
- 共通のパラメータは以下のとおり:
-
- level
text/html
では 2 がデフォルトで、その他の場合は
- 0 がデフォルトです。qs
qs
- はリソース毎に特有の値を取ります。
-
- Content-Type: image/jpeg; qs=0.8
-
URI:
Body:
- Body:----xyz----
- <html>
- <body>
- <p>Content of the page.</p>
- </body>
- </html>
- ----xyz----
-
MultiViews 探索は、Multiviews
Options
ディレクティブにより有効になります。
- サーバが /some/dir/foo
- へのリクエストを受け取り、/some/dir/foo
が存在
- しない場合、サーバはディレクトリを読んで、
- foo.*
にあてはまる全てのファイルを探し、
- 事実上それらのファイルをマップするタイプマップを作ります。
- そのとき、メディアタイプとコンテントエンコーディングは、
- そのファイル名を直接指定したときと同じものが割り当てられます。
- それからクライアントの要求に一番合うものを選び、
- そのドキュメントを返します。
ファイルを選択する際に、関連するコンテントネゴシエーションの
- メタ情報を持たないファイルについて、判定を行うかどうかを
- MultiViewsMatch
- ディレクティブで設定します。
説明: | コンテントネゴシエーションされたドキュメントをプロキシサーバが -キャッシュできるようにする |
---|---|
構文: | CacheNegotiatedDocs On|Off |
デフォルト: | CacheNegotiatedDocs Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_negotiation |
互換性: | バージョン 2.0で構文が変わりました |
このディレクティブが設定されていると、コンテントネゴシエーション - をした結果のドキュメントのキャッシュを許可します。 - これは、プロキシの後ろにいるクライアントが能力に一番合った - ドキュメントではなく、 - キャッシュをより効果的にするものを得る可能性があるということです。
- -このディレクティブは HTTP/1.0 ブラウザからのリクエスト - のみに適用されます。HTTP/1.1 は、 - 交渉されたドキュメントのキャッシュに対してずっとよい制御が可能なので、 - このディレクティブは HTTP/1.1 のリクエストには影響しません。
-2.0 より前のバージョンでは、
- CacheNegotiatedDocs
は引数を取らず、
- ディレクティブが存在することで on の動作をしていました。
説明: | 要求に合う単独のドキュメントが見つからなかったときに行なうことを指定 - |
---|---|
構文: | ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback] |
デフォルト: | ForceLanguagePriority Prefer |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_negotiation |
互換性: | バージョン 2.0.30 以降で使用可能 |
ForceLanguagePriority
ディレクティブは
- 要求に合うドキュメントを一つだけ返すことができないときに、
- LanguagePriority
- ディレクティブを使ってネゴシエーションの結果を返します。
ForceLanguagePriority Prefer
は、同等の選択肢が
- いくつかあるときに、HTTP の 300 (MULTIPLE CHOICES) を返す代わりに、
- LanguagePriority
を使って一つだけドキュメントを返すように
- します。以下のディレクティブが指定されていて、ユーザの Accept-Language
- ヘッダでは en
と de
の品質が共に
- .500
(同じくらい許容) であるときは、
- 最初にマッチする variant の en
が送られます。
- LanguagePriority en fr de
- ForceLanguagePriority Prefer
-
ForceLanguagePriority Fallback
では、HTTP 406
- (NOT ACCEPTABLE) を送信する代わりに、
- LanguagePriority
- が正しい結果を送ります。
- 以下のディレクティブが指定されていて、ユーザの Accept-Language
- が es
言語のみを許可していて、さらにそのような variant がないときには、
- 以下の LanguagePriority
- のリストの最初の variant が送れれます。
- LanguagePriority en fr de
- ForceLanguagePriority Fallback
-
Prefer
と Fallback
の両方のオプションを
- 同時に指定することができます。
- ですから、複数の variant があるときは
- LanguagePriority
の最初の
- variant が送られ、クライアントの許容言語に合う vaiant がないときは
- 存在するドキュメントで最初のものが送られる、という様にすることができます。
AddLanguage
説明: | クライアントが優先度を示さなかったときの言語の variant の優先度を -指定 |
---|---|
構文: | LanguagePriority MIME-lang [MIME-lang]
-... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_negotiation |
LanguagePriority
は、MultiViews
- リクエストを扱うときに、クライアントが優先順位を提供していない場合の
- 言語の優先順位を設定します。MIME-lang
- のリストが優先度の降順に並びます。
- LanguagePriority en fr de
-
foo.html
がリクエストされ、foo.html.fr
- と foo.html.de
が両方存在し、
- ブラウザが言語の優先順位を提供してない場合は
- foo.html.fr
が返されます。
このディレクティブは他の方法で「最善」
- の言語が決定できないときか、ForceLanguagePriority
ディレクティブが
- None
以外のときにのみ効果があることに注意してください。
- 一般的には、サーバ側ではなくクライアント側で好みの言語を決定します。
AddLanguage
Apache HTTP 泣若 若吾с 2.3
+茯: | 潟潟潟眼激若激с + 罘純箴 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | negotiation_module |
純若鴻<ゃ: | mod_negotiation.c |
潟潟潟眼激若激с潟罩g∈潟潟潟御罘純 + 茲亥ャ<潟ゃ≪潟遵筝c + ャ<潟御罘純с絎茖篋ゃ障
+ +type-map
+ 潟ф宴<ゃ) variants
+ с<ゃ腓榊絎障MultiViews
Option
ф鴻障)
+ 泣若藥<ゃ帥若潟茵
+ 腟御障帥ゃ RFC 822 <若蕁篌若後с + ャ<潟荐菴違腥肴у≪吾激ユ絖 + ('#') у障茵潟<潟宴障 + ャ<潟茯茲違潟若罕障 + 潟若膓茵腥榊純у障c茲違茵障障 + 腥榊純羔サ茵ゃ 1 茵宴障 + 潟若若若緇ゃ膓綵√с + 若若絽吾潟潟х障腥榊純ゃ + ゃ若潟ャс障 + 篏睡純篁ヤс:
+ +Content-Encoding:
AddEncoding
cc
+ у臂潟潟若c潟違茯茘障絽 compress
+ <ゃ x-compress
gzip
+ <ゃ x-gzip
帥障
+ 潟潟若c潟違罸莠・莨 x-
+ ∴障Content-Language:
en
+ 沿茵障
+ 茲違荐茯主翫潟潟у阪障Content-Length:
Content-Type:
name=value
+ с<c≪帥ゃ篁<若帥祉潟潟у≪障
+ 演<若帥篁ヤ:
+
+ level
text/html
с 2 с篁翫
+ 0 сqs
qs
+ 純若号号ゃ障
+
+ Content-Type: image/jpeg; qs=0.8
+
URI:
Body:
+ Body:----xyz----
+ <html>
+ <body>
+ <p>Content of the page.</p>
+ </body>
+ </html>
+ ----xyz----
+
MultiViews 「膣≪Multiviews
Options
cc鴻障
+ 泣若 /some/dir/foo
+ 吾鴻/some/dir/foo
絖
+ 翫泣若c茯с
+ foo.*
障<ゃ「
+ 篋絎筝<ゃ帥ゃ篏障
+ <c≪帥ゃ潟潟潟潟潟若c潟違
+ <ゃ贋・絎蚊綵障
+ ゃ≪潟荀羆筝吾潟
+ ャ<潟菴障
<ゃ御∫c潟潟潟眼激若激с潟
+ <炊宴<ゃゃゅ茵
+ MultiViewsMatch
+ ccц┃絎障
茯: | 潟潟潟眼激若激с潟ャ<潟激泣若 +c激ャс |
---|---|
罕: | CacheNegotiatedDocs On|Off |
: | CacheNegotiatedDocs Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_negotiation |
篋: | 若吾с 2.0ф紊障 |
cc荐絎潟潟潟眼激若激с + 腟ャ<潟c激ャ荐怨障 + 激緇ゃ≪潟遵筝c + ャ<潟с + c激ャ号緇醇сс
+ +cc HTTP/1.0 吟鴻 + 帥障HTTP/1.1 + 篋ゆャ<潟c激ャ絲障c九勝純с + cc HTTP/1.1 鴻綵演帥障
+2.0 若吾с潟с
+ CacheNegotiatedDocs
綣違
+ cc絖 on 篏障
茯: | 荀羆ャ<潟荀ゃc茵絎 + |
---|---|
罕: | ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback] |
: | ForceLanguagePriority Prefer |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_negotiation |
篋: | 若吾с 2.0.30 篁ラт戎 |
ForceLanguagePriority
cc
+ 荀羆ャ<潟筝ゃ菴с
+ LanguagePriority
+ cc篏帥c眼激若激с潟腟菴障
ForceLanguagePriority Prefer
膈御≪
+ ゃHTTP 300 (MULTIPLE CHOICES) 菴篁c
+ LanguagePriority
篏帥c筝ゃャ<潟菴
+ 障篁ヤcc絎若吟 Accept-Language
+ с en
de
莖宴
+ .500
(荐怨) с
+ variant en
障
+ LanguagePriority en fr de
+ ForceLanguagePriority Prefer
+
ForceLanguagePriority Fallback
сHTTP 406
+ (NOT ACCEPTABLE) 篆<篁c
+ LanguagePriority
+ 罩c腟障
+ 篁ヤcc絎若吟 Accept-Language
+ es
荐茯帥荐怨 variant
+ 篁ヤ LanguagePriority
+ 鴻 variant 障
+ LanguagePriority en fr de
+ ForceLanguagePriority Fallback
+
Prefer
Fallback
筝≧鴻激с潟
+ 絎с障
+ с茲違 variant
+ LanguagePriority
+ variant ゃ≪潟荐怨壕茯 vaiant
+ 絖ャ<潟ф罕с障
AddLanguage
茯: | ゃ≪潟綺腓冴c荐茯 variant 綺 +絎 |
---|---|
罕: | LanguagePriority MIME-lang [MIME-lang]
+... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_negotiation |
LanguagePriority
MultiViews
+ 鴻宴ゃ≪潟篏箴翫
+ 荐茯篏荐絎障MIME-lang
+ 鴻綺筝潟障
+ LanguagePriority en fr de
+
foo.html
鴻foo.html.fr
+ foo.html.de
筝≧劫
+ 吟荐茯篏箴翫
+ foo.html.fr
菴障
cc篁号с
+ 荐茯羆阪сForceLanguagePriority
cc
+ None
篁ュ水号羈
+ 筝泣若眼сゃ≪潟眼уソ帥荐茯羆阪障
AddLanguage
Apache HTTP サーバ バージョン 2.3
-説明: | HTTP/1.1 プロキシ/ゲートウェイサーバ |
---|---|
ステータス: | Extension |
モジュール識別子: | proxy_module |
ソースファイル: | mod_proxy.c |
サーバを安全にするまで ProxyRequests
は有効にしないでください。
- オープンプロキシサーバはあなた自身のネットワークにとっても、
- インターネット全体にとっても危険です。
このモジュールは Apache のプロキシ/ゲートウェイ機能を実装しています。
- AJP13
(Apache JServe Protocol version 1.3),
- FTP
, CONNECT
(SSL 用),
- HTTP/0.9
, HTTP/1.0
, HTTP/1.1
- のプロキシ機能を実装しています。これらのプロトコルやその他のプロトコル用の
- プロキシ機能を持った、他のモジュールに接続するようにも設定できます。
Apache のプロキシ機能は mod_proxy
の他に、
- いくつかのモジュールに分割されています:
- mod_proxy_http
, mod_proxy_ftp
,
- mod_proxy_ajp
, mod_proxy_balancer
,
- mod_proxy_connect
です。ですから、
- 特定のプロキシの機能を使いたい場合は、mod_proxy
と
- 該当するモジュールをサーバに (コンパイル時に静的に行なうか
- LoadModule
で動的に読み込むかして)
- 組み込む必要があります。
これに加えて、他のモジュールによって拡張機能が提供されています。
- キャッシュは mod_cache
と関連モジュールで
- 提供されています。SSL/TLS で遠隔サーバに接続する機能は
- mod_ssl
の SSLProxy*
ディレクティブで
- 提供されています。これらの機能を利用するためには、該当するモジュールを
- 組み込んで設定しなければなりません。
Apache はフォワードプロキシとしても、 - リバースプロキシとしても設定することができます。
- -通常のフォワードプロキシはクライアントと - オリジンサーバ (訳注: コンテンツ生成元のサーバ) - の間に位置する中間サーバです。 - オリジンサーバからコンテンツを取得する過程では、クライアントは - 行き先としてオリジンサーバを指定しつつプロキシにリクエストを送り、 - プロキシはオリジンサーバからコンテンツ取得のリクエストを送り、 - コンテンツが取得できればそれをクライアントに返します。 - クライアントが他のサイトにフォワードプロクシ経由でアクセスするには、 - 特別にそれ用の設定をしなければなりません。
- -フォワードプロキシの一般的な使用方法は、ファイアウォールによって
- 制限されている内部のクライアントにインターネットへのアクセスを
- 提供するものです。フォワードプロキシはネットワークの使用量を
- 減らすために (mod_cache
で提供されている)
- キャッシュ機能を用いることもできます。
フォワードプロキシは ProxyRequests
ディレクティブで
- 有効になります。フォワードプロキシでは、クライアントは本当の身元を
- 隠して任意のサイトにアクセスできるようになるため、フォワードプロキシを
- 有効にする前に、承認されたクライアントのみがプロキシにアクセスできるように
- サーバを安全にすることが重要です。
一方リバースプロキシは、クライアントには普通の - ウェブサーバのように見えます。クライアント側に特別な設定は必要ありません。 - クライアントはリバースプロキシの名前空間に対して通常のコンテンツへの - リクエストを行ないます。プロキシはリクエストをどこに送れば良いかを判定し、 - あたかも自分自身がオリジンサーバであったかのようにクライアントに - コンテンツを返します。
- -リバースプロキシのよくある利用方法は、インターネットユーザに - ファイアウォールの中にあるサーバにアクセスを与えるというものです。 - リバースプロキシは複数のバックエンドサーバへ負荷分散をするために - 使ったり、遅いバックエンドエンドサーバのためにキャッシュ機能を提供したり - するために使えます。また、リバースプロキシは複数のサーバを - 同じ URL 空間にまとめるために使うこともできます。
- -リバースプロキシは ProxyPass
ディレクティブや
- RewriteRule
ディレクティブの
- [P]
フラグを使うことで有効になります。リバースプロキシの
- 設定のために ProxyRequests
を設定する必要は
- ありません。
以下の例は手始めの簡単な例です。個々のディレクティブの意味は - それぞれの説明をお読みください。
- -またキャッシュ機能を有効にしたい場合は、mod_cache
- の説明を読んでください。
- ProxyRequests On
- ProxyVia On
-
- <Proxy *>
-
- Order deny,allow
- Deny from all
- Allow from internal.example.com
-
- </Proxy>
-
- ProxyRequests Off
-
- <Proxy *>
-
- Order deny,allow
- Allow from all
-
- </Proxy>
-
- ProxyPass /foo http://foo.example.com/bar
- ProxyPassReverse /foo http://foo.example.com/bar
-
プロキシのアクセスは以下のように <Proxy>
コンテナの中に
- ディレクティブを書くことで制御できます:
- <Proxy *>
-
- Order Deny,Allow
- Deny from all
- Allow from 192.168.0
-
- </Proxy>
-
アクセス制御のためのディレクティブのより詳しい情報は
- mod_authz_host
をお読みください。
(ProxyRequests
ディレクティブを
- 使って) フォワードプロキシを設定している場合は、厳しくアクセス
- 制限を行なうことが非常に大切です。そうしないと、任意のクライアントが
- 身元を明かすことなく任意のホストにアクセスするためにサーバを使うことが
- できてしまいます。これはあなた自身のネットワークにとっても、インターネット
- 全体にとっても危険なことです。(ProxyRequests Off
にして
- ProxyPass
ディレクティブを使って)
- リバースプロキシを使っている場合には、クライアントはあなたが明示的に
- 設定したホストにしかアクセスできないため、フォワードプロキシのとき
- ほどアクセス制御に力を注がなくても大丈夫です。
おそらく、プロキシの mime.types 設定ファイルでそのファイルタイプが
- application/octet-stream
であると定義されていないのでしょう。
- 以下のようなものが役に立つかもしれません:
application/octet-stream bin dms lha lzh exe class tgz taz
別の方法として、すべてのデフォルトをバイナリにすることもできます:
-DefaultType application/octet-stream
まれに、(デフォルトの転送は binary
モードで) 特定の
- ファイルのみ FTP の ASCII
転送方法を使わなければならない
- 場合には、リクエストの最後に ;type=a
を付けることで
- mod_proxy
に ASCII 転送をさせることができます。
- (ただし、FTP のディレクトリ一覧は常に ASCII モードで行なわれます。)
現時点では、mod_proxy の FTP サポートは GET のみです。もちろん - Apache の プロキシを使って HTTP のアップロード (POST や PUT) を - することはできます。
- - -FTP URI はログインしているユーザのホームディレクトリからの
- 相対パスとして扱われます。残念なことに、/../ はブラウザにより解釈され、
- 実際に FTP サーバには送られないため、/../ を使って上位のディレクトリに
- 到達することはできません。この問題を解決するために、いわゆる
- Squid %2f ハック を Apache の FTP プロキシは実装しています。
- これは Squid Proxy キャッシュ のような
- 他のよく使われているプロキシサーバでも取られている方法です。
- リクエストのパスの先頭に /%2f
を付けることで、プロキシに
- FTP の開始ディレクトリを (ホームディレクトリの代わりに) /
- に変えることができます。例えば、/etc/motd
を取得するためには
- 次の URL を使います:
- ftp://user@host/%2f/etc/motd
-
FTP サーバにユーザ名とパスワードを使ってログインするために、 - Apache は異なる方法を使います。URL にユーザ名とパスワードがまったく - ない場合は、Apache は FTP サーバに anonymous ログインを送ります。 - つまり、
- -
- user: anonymous
- password: apache_proxy@
-
これは anonymous アクセスが設定された - すべての FTP サーバに対して動作します。
- -ユーザ名を使った個人別のログインには、URL にユーザ名を入れることが - できます:
- -
- ftp://username@host/myfile
-
このユーザ名が与えられたときに、FTP サーバがパスワードを要求すれば
- (もちろんそうすべきなのですが)、Apache は 401
- (Authorization required) を返します。これにより、ブラウザはユーザ名
- パスワードの入力ダイアログを表示します。パスワードが入力された後、
- 再び接続を試み、成功すればリクエストしたリソースが表示されます。
- この方法の利点はブラウザがパスワードを平文で表示しないことです。
- (もし最初から
- ftp://username:password@host/myfile
-
と入力した場合には表示されてしまいます。)
- -送信されるパスワードは、暗号化されて送られるわけではありません。 - ブラウザと Apache プロキシサーバは base64 で符号化された - 文字列として、Apache プロキシと FTP サーバの間は平文として送られます。 - ですから、HTTP を使って HTTP をアクセスする前 (もしくは、そもそも - 個人的なファイルを FTP でアクセスする前) によく考える必要があります。 - 安全でない通信路を使った場合は、盗聴者に途中でパスワードを盗まれる - 可能性があります。
-ProxyBlock
ディレクティブを使っている場合、
- 後のテストのために起動時にホストの
- IP アドレスが調べられてキャッシュされます。ホスト名のルックアップの
- 速さによっては、数秒 (かそれ以上) かかるかもしれません。
イントラネットにある Apache プロキシサーバは外部へのリクエストを
- 会社のファイアウォールを通して送らなければなりません。(このためには
- 個々の scheme についてそれぞれ、ファイアウォールの
- プロキシにフォワードされるように
- ProxyRemote
ディレクティブを
- 設定してください)。しかしイントラネット内のリソースにアクセスするときは、
- ファイアウォールを通さないでもアクセスできます。
- どのホストがイントラネットに属し、直接アクセスすべきかを指定するには、
- NoProxy
ディレクティブが
- 役に立ちます。
イントラネット内のユーザは WWW のリクエストでローカルドメインを
- 省略することがよくあります。http://somehost.example.com/
- というリクエストの代わりに "http://somehost/" をリクエストしたりします。
- このようなリクエストを受け付け、サーバに設定されているローカルドメインが
- 暗黙のうちに使われていると解釈して、単純にリクエストを処理するものも
- 商用プロキシサーバの中にはあります。
- サーバが プロキシのサービス用に設定されていて
- ProxyDomain
ディレクティブが
- 使用された場合には、Apache はクライアントにリダイレクト応答を送って、
- 正しい、完全な ((訳注: fully qualified))
- サーバのアドレスに送ることができます。このように
- リダイレクトすると、ユーザのブックマークが正しい完全なホスト名を含む
- ことにもなるため、より好ましい方法と言えるでしょう。
Keepalive や HTTP/1.1 を適切に実装していないアプリケーションサーバが
- ある状況で、HTTP/1.0 で keepalive を無しにしてリクエストを送るための
- 環境変数が二つあります。これらは SetEnv
ディレクティブで設定します。
force-proxy-request-1.0
と proxy-nokeepalive
- がその環境変数です。
- <Location /buggyappserver/>
-
- ProxyPass http://buggyappserver:7001/foo/
- SetEnv force-proxy-request-1.0 1
- SetEnv proxy-nokeepalive 1
-
- </Location>
-
説明: | プロキシを経由して、どのポートに CONNECT
-できるかを指定する |
---|---|
構文: | AllowCONNECT port [port] ... |
デフォルト: | AllowCONNECT 443 563 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
AllowCONNECT
はプロキシの CONNECT
- メソッドが接続を許可するポート番号のリストを指定します。
- 今日のブラウザは、https
コネクションが要求されていて、
- HTTP 上でのプロキシによるトンネリングができるときに、
- このメソッドを使います。
デフォルトの設定では、https のデフォルトポート (443
) と
- デフォルトの snews ポート (563
) が有効になっています。
- このデフォルトを上書きして、リストに記載したポートにのみ接続を許可したい場合、
- AllowCONNECT
ディレクティブを使用します。
CONNECT
を使用するには、mod_proxy_connect
- がサーバに組み込まれていなければならないことに注意してください。
説明: | 直接接続する ホスト、ドメイン、ネットワーク |
---|---|
構文: | NoProxy host [host] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
このディレクティブはイントラネット中の Apache プロキシサーバにのみ
- 有用です。NoProxy
ディレクティブは空白区切りで、
- サブネット、IP アドレス、ホスト、ドメインのリストを指定します。
- これらのどれかにマッチするホストへのリクエストは ProxyRemote
で設定されたプロキシサーバに
- フォワードされず、直接処理されます。
- ProxyRemote * http://firewall.mycompany.com:81
- NoProxy .mycompany.com 192.168.112.0/21
-
NoProxy
ディレクティブの host 引数は
- 以下の種類のどれかです:
Domain は先頭にピリオドの着いた部分 DNS ドメイン名です。 - 同一 DNS ドメイン及びゾーン (すなわち、ホスト名の末尾がすべて - Domain で終わっているということ) に属するホストのリストを - 表します)。
- -
- .com .apache.org.
-
Domain を Hostname と区別するために (意味的にも構文的にも。DNS ドメインも - DNS の A レコードを持つことができるのです!)、Domain は - 常にピリオドで始まります。
- -ドメイン名の比較は大文字小文字を区別せずに行なわれ、Domain
- は常に DNS ツリーのルートから始まるものとみなされます。ですから、
- 次の二つのドメイン .MyDomain.com
と
- .mydomain.com.
(最後のピリオドに注目) は同一であると
- みなされます。ドメインの比較は DNS ルックアップなしで行なわれるため、
- サブネットの比較よりもずっと効率的です。
SubNet は数値形式 (ドットで区切られた四つの数字) の - 部分インターネットアドレスです。後にスラッシュと Subnet - の意味のあるビット数を指定するネットマスクとを続けることができます。 - 共通のネットワークインタフェースを使って到達することのできるサブネットを - 表すために使われます。明示的にネットマスクを指定しない場合は - 最後の省略された (もしくは値が 0 の) 数字がマスクを指定します。 - (この場合は、ネットマスクは 8 ビット単位でしか指定できません。) - 例:
- -192.168
もしくは 192.168.0.0
255.255.0.0
というネットマスクの形式で使われることも
- あります)192.168.112.0/21
192.168.112.0/21
と 21 ビット有効な
- ネットマスク (255.255.248.0
という形式で使われることも
- あります)特別な場合に、32 ビット有効な SubNet は - IPAddr と同等で、 - 0 ビット有効な SubNet (例えば、0.0.0.0/0) は - すべての IP アドレスにマッチする定数 _Default_ と同じです。
-IPAddr は数値形式 (ドットで区切られた四つの数字) の - 完全インターネットアドレスです。通常はこのアドレスはホストを - 表しますが、必ずしもアドレスに対応する DNS ドメイン名があるわけでは - ありません。
- -
- 192.168.123.7
-
IPAddr は DNS システムにより解決される必要がないので、 - apache の性能が向上するかもしれません。
-Hostname は DNS ドメインサービスにより一つもしくは - 複数の IPAddr に解決可能な - 完全な DNS ドメイン名です。これは (Domain - と違って、説明は上記を参照) 論理的なホストを表し、少くとも一つの - IPAddr (もしくは違う - IPAddr のホストのリスト) に解決 - されなければなりません)。
- -
- prep.ai.mit.edu
- www.apache.org
-
多くの場合、Hostname の代わりに IPAddr を指定した方が、DNS ルックアップを - 避けることができるため、効率が良くなります。Apache の名前解決は - ネームサーバへの接続が遅い PPP 上の場合などにかなり時間を取られる - ことがあります。
-Hostname の比較は大文字小文字を区別せずに行なわれ、
- Hostname は常に DNS ツリーのルートから始まるものとみなされます。
- ですから、二つのドメイン WWW.MyDomain.com
と
- www.mydomain.com.
(最後のピリオドに注目) は同一であると
- みなされます。
説明: | プロキシされるリソースに適用されるコンテナ |
---|---|
構文: | <Proxy wildcard-url> ...</Proxy> |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
<Proxy>
セクション中の
- ディレクティブはマッチするプロキシされるコンテンツにのみ適用されます。
- シェル形式のワイルドカードが使えます。
例えば、次の設定は yournetwork.example.com
の
- ホストにのみプロキシサーバを経由したアクセスを許可します:
- <Proxy *>
-
- Order Deny,Allow
- Deny from all
- Allow from yournetwork.example.com
-
- </Proxy>
-
次の例は example.com
の foo
ディレクトリの
- すべてのファイルに対して、プロキシサーバを通して送られたときには
- INCLUDES
フィルタを通して送るように設定します:
- <Proxy http://example.com/foo/*>
-
- SetOutputFilter INCLUDES
-
- </Proxy>
-
説明: | 応答におかしなヘッダがある場合の扱い方を決める |
---|---|
構文: | ProxyBadHeader IsError|Ignore|StartBody |
デフォルト: | ProxyBadHeader IsError |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
互換性: | 2.0.44 以降 |
ProxyBadHeader
ディレクティブは構文的に
- 間違ったヘッダ (つまり コロンを含まないもの) を受け取ったときに
- mod_proxy
がどう振る舞うかを決めます。以下の引数を
- 取ることができます:
IsError
Ignore
StartBody
説明: | プロキシ接続を禁止する語句、ホスト名、ドメインを指定する |
---|---|
構文: | ProxyBlock *|word|host|domain
-[word|host|domain] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
ProxyBlock
ディレクティブは空白で区切られた
- 語句、ホスト名、ドメインのリストを指定します。サイト名にその語句、ホスト名、
- ドメインを含むサイトへの HTTP、HTTPS、FTP によるドキュメントのリクエストは
- プロキシサーバによりブロックされます。プロキシモジュールは
- 起動時にホスト名と思しき項目の IP アドレスを調べ、後のテストのために
- キャッシュします。これにより、サーバの起動が少し遅くなるかもしれません。
- ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
-
rocky.wotsamattau.edu
が IP アドレスで参照されたときでも
- マッチします。
wotsamattau.edu
のマッチには wotsamattau
- だけでも十分です。
- ProxyBlock *
-
はすべてのサイトへの接続をブロックすることに注意してください。
- -説明: | プロキシされたリクエストのデフォルトのドメイン名 |
---|---|
構文: | ProxyDomain Domain |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
このディレクティブはイントラネット内の Apache プロキシサーバにのみ
- 有用です。ProxyDomain
ディレクティブは
- apache プロキシサーバが属するデフォルトのドメインを指定します。
- ドメイン名の無いリクエストを受けた場合、設定された Domain
- が追加された同じホストへのリダイレクト応答が返されます。
- ProxyRemote * http://firewall.mycompany.com:81
- NoProxy .mycompany.com 192.168.112.0/21
- ProxyDomain .mycompany.com
-
説明: | プロキシされたコンテンツのエラーページを上書きする |
---|---|
構文: | ProxyErrorOverride On|Off |
デフォルト: | ProxyErrorOverride Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
互換性: | バージョン 2.0 以降で使用可能 |
このディレクティブはリバースプロキシを使用していて、
- エンドユーザに送られるエラーページの外見を共通のものにしたいときに
- 有用です。このディレクティブは (mod_include
の SSI によって)
- インクルードされたファイルがエラーコードを取得して、正しく動作を
- するようにもします (デフォルトの動作は、プロキシされたサーバの
- エラーページの表示で、このディレクティブを有効にすると SSI のエラー
- メッセージを表示します)。
説明: | 内部データスループットバッファのサイズを決定する |
---|---|
構文: | ProxyIOBufferSize bytes |
デフォルト: | ProxyIOBufferSize 8192 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
ProxyIOBufferSize
ディレクティブは入力と
- 出力用の一時メモリとして使われる内部バッファのサイズを調整します。
- サイズは 8192
以下でなければなりません。
ほとんどすべての場合、この値を変更する理由はありません。
- -説明: | 正規表現でのマッチによるプロキシリソース用のディレクティブコンテナ |
---|---|
構文: | <ProxyMatch regex> ...</ProxyMatch> |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
<ProxyMatch>
は URL のマッチに
- 正規表現を用いることを除いて <Proxy>
ディレクティブと同じです。
説明: | リクエストがフォワードされるプロキシの最大数 |
---|---|
構文: | ProxyMaxForwards number |
デフォルト: | ProxyMaxForwards 10 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
互換性: | Apache 2.0 以降で使用可能 |
ProxyMaxForwards
ディレクティブは
- リクエストに Max-Forwards
ヘッダが指定されていない場合に
- リクエストが通過可能なプロキシの最大数を設定します。これは
- プロキシの無限ループや DoS 攻撃を防ぐために設定されています。
- ProxyMaxForwards 15
-
説明: | リモートサーバをローカルサーバの URL 空間にマップする |
---|---|
構文: | ProxyPass [path] !|url [key=value key=value ...]] |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
ステータス: | Extension |
モジュール: | mod_proxy |
このディレクティブはリモートサーバをローカルサーバの名前空間に - マップできるようにします。ローカルサーバは通常の意味でのプロキシと - しては動作せず、リモートサーバのミラーとして振る舞います。 - path はローカルの仮想パスの名前です。url は - リモートサーバの部分 URL になり、クエリー文字列を含むことはできません。
- -ProxyPass
ディレクティブを
- 使っているときは ProxyRequests
ディレクティブは通常は
- off に設定されているべきです。ローカルサーバのアドレスが http://example.com/
であると
- します。すると、
- ProxyPass /mirror/foo/ http://backend.example.com/
-
と設定すると http://example.com/mirror/foo/bar
への
- リクエストが内部的に http://backend.example.com/bar
への
- プロキシリクエストに変換されることになります。
サブディレクトリをリバースプロキシしたくないときに !
は
- 役に立ちます。例えば、
- ProxyPass /mirror/foo/i !
- ProxyPass /mirror/foo http://backend.example.com
-
は /mirror/foo/i
を除く
- /mirror/foo
へのすべてのリクエストを
- backend.example.com
にプロキシします。
順番は重要です。一般的な ProxyPass
- ディレクティブの前に
- 除外ディレクティブを置く必要があります。
2.1 の新機能で、バックエンドサーバとの接続にプールされたコネクションを
- 使えるようになりました。key=value
形式のパラメータで
- このコネクションプーリングの調整ができます。Hard Maximum
- のデフォルト値は、有効になっている MPM でのプロセス当たりのスレッド数と
- 同じ数のコネクション数です。prefork MPM では通常は 1 で、worker MPM では
- ThreadsPerChild
で調整されます。
min
の設定で、バックエンドサーバとの間に何本のコネクションを
- 常時開くかが決まります。Soft Maximum smax
の数に
- 達するまで必要に応じてコネクションは生成されます。smax
- を超えた数のコネクションは、生存時間 ttl
で切断されます。
- バックエンドサーバと Hard Maximum max
の数以上のコネクションを
- 生成することはありません。
- ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300
-
パラメータ | -デフォルト値 | -説明 |
---|---|---|
min | -0 | -バックエンドサーバとの接続で - 常に開いているコネクション数の最小値 |
max | -1...n | -バックエンドサーバとの接続数の Hard Maximum
- (訳注: ハードリミット)。
- デフォルト値は、使用している MPM のプロセスあたりのスレッド数になっています。
- Prefork MPM では常に 1 で、Worker MPM では ThreadsPerChild
- で調節できます。Hard Maximum 以上にバックエンドサーバとのコネクションを
- 生成することはありません。 |
smax | -max | -接続数の Soft Maximum (訳注: ソフトリミット)まで、
- コネクションは必要に応じて生成されます。
- smax を超えた数のコネクションは生存時間 ttl
- で切断されます。
- |
ttl | -- | -smax 数を超えた非活動状態のコネクションの生存時間を、
- 秒で指定します。この期間内に使用されなかったコネクションは、
- 全て閉じられます。
- |
timeout | -Timeout |
- コネクションタイムアウトを秒で指定します。特に指定されなければ、
- フリーなコネクションを取得できるまで待ちます。このディレクティブは
- max パラメータと合わせて使うことで、バックエンドサーバとの
- 接続数を制御するのに使います。
- |
acquire | -- | -設定すると、コネクションプールからフリーのコネクションを取得するために
- 待機する待ち時間の最大値になります。フリーのコネクションがプールになかった場合は、
- SERVER_BUSY ステータスがクライアントに返されます。
- |
keepalive | -Off | -バックエンドサーバと Apache の間にファイアーウォールがある場合には、
- このパラメータを使ってください。ファイアウォールは往々にして、
- 非活動状態のコネクションを落とそうとします。
- このフラグは OS に指示して、KEEP_ALIVE メッセージを非活動状態の
- コネクションでも送るようにします (間隔は OS のグローバル設定に依存し、
- 通常は 120ms 間隔) 。これによってファイアウォールによってコネクションが
- 落とされることを防げます。keepalive を有効にするには、このプロパティを
- On にしてください。
- |
retry | -60 | -コネクションをプーリングするための、リトライのタイムアウトを秒で - 指定します。バックエンドサーバへのコネクションプーリングが失敗した場合は、 - タイムアウトの期間が過ぎるまで、そのサーバにリクエストをフォワードしません。 - この機能を使うと、バックエンドサーバをメンテナンスのためにシャットダウンし、 - 後でオンラインに復帰させるといったことができます。 - |
loadfactor | -1 | -ワーカーあたりの負荷係数です。BalancerMember で使います。 - 1 から 100 までの数字でそのワーカーに対する正規化された負荷率を指定します。 - |
route | -- | -ロードバランサで使った場合、ワーカーのルーティングをします。 - ルートはセッション ID に付加された値になります。 - |
redirect | -- | -ワーカーのリダイレクション経路です。この値は通常は、 - 安全にクラスタからノードを取り去る設定を動的に入れるために使います。 - セッション ID の無いリクエスト全てを指定した場合は、 - この値と同じルーティングパラメータを持つ - BalancerMember にリダイレクトされます。 - |
Proxy ディレクティブのスキームが balancer://
になっている場合は、
- バックエンドサーバと実際には通信しない仮想ワーカーが生成されます。
- このワーカーは幾つかの "本物の" ワーカーの管理をつかさどります。
- この場合パラメータは、この仮想ワーカーに対して設定されます。
-
パラメータ | -デフォルト値 | -説明 |
---|---|---|
lbmethod | -- | -Balancer のロードバランス方法。使用するロードバランスの
- スケジューリング方法を選びます。処理したリクエストの数で重み付けする
- byrequests か、転送量のバイト数で重み付けする
- bytraffic を設定できます。デフォルトは
- byrequests です。
- |
stickysession | -- | -バランサーのスティッキーセッション名です。通常はこの値は JSESSIONID
- や PHPSESSIONID といったものになりますが、この値は
- バックエンドアプリケーションのサポートするセッションに依存します。
- |
nofailover | -Off | -On になっていると、ワーカーがエラーを起こしたり
- 無効になっている場合にセッションが切れます。
- バックエンドサーバがセッションレプリケーションをサポートしていない場合は、
- On にしてください。
- |
timeout | -0 | -バランサーのタイムアウトを秒で指定します。 - この値を設定すると、フリーのワーカーを取得するまでの最大待機時間になります。 - デフォルトでは待機しません。 - |
maxattempts | -1 | -フェイルオーバーを試みる最大の回数を指定します。 - |
- ProxyPass /special-area http://special.example.com/ smax=5 max=10
- ProxyPass / balancer://mycluster stickysession=jsessionid nofailover=On
- <Proxy balancer://mycluster>
-
- BalancerMember http://1.2.3.4:8009
- BalancerMember http://1.2.3.5:8009 smax=10
- # Less powerful server, don't send as many requests there
- BalancerMember http://1.2.3.6:8009 smax=1 loadfactor=20
-
- </Proxy>
-
<Location>
セクションの中で使われた場合、最初の引数は
- 省略され、ローカルディレクトリは <Location>
から取得されます。
より柔軟なリバースプロキシの設定が必要な場合は、[P]
- フラグ付きの RewriteRule
- ディレクティブを参照してください。
説明: | リバースプロキシされたサーバから送られた HTTP 応答ヘッダの -URL を調整する |
---|---|
構文: | ProxyPassReverse [path] url |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
ステータス: | Extension |
モジュール: | mod_proxy |
このディレクティブは Apache に HTTP リダイレクト応答の
- Location
, Content-Location
, URI
- ヘッダの調整をさせます。これは、Apache がリバースプロキシとして使われている
- ときに、リバースプロキシを通さないでアクセスすることを防ぐために
- 重要です。これによりバックエンドサーバの HTTP リダイレクトが
- リバースプロキシとバックエンドの間で扱われるようになります。
ディレクティブで明示されている HTTP 応答ヘッダのみが書き換えられます。 - Apache は他の応答ヘッダを書き換えたり、HTML ページの中の URL 参照を - 書き換えたりすることはありません。HTML の中を見て、URL 参照を書き換える - モジュールに Nick Kew さんの mod_proxy_html があります。
- -path はローカル仮想パスの名前です。url は
- リモートサーバの部分 URL です。これらは ProxyPass
ディレクティブと同様です。
例えば、ローカルサーバのアドレスが http://example.com/
- だとします。すると
- ProxyPass /mirror/foo/ http://backend.example.com/
- ProxyPassReverse /mirror/foo/ http://backend.example.com/
- ProxyPassReverseCookieDomain backend.example.com public.example.com
- ProxyPassReverseCookiePath / /mirror/foo/
-
という設定をすると、http://example.com/mirror/foo/bar
- へのローカルリクエストが http://backend.example.com/bar
- へのプロキシリクエストに内部でリダイレクトされるだけではありません
- (これは ProxyPass
の機能です)。backend.example.com
- が送るリダイレクトの面倒もみます。http://backend.example.com/bar
- が http://backend.example.com/quux
にリダイレクトされたとき、
- Apache は HTTP リダイレクト応答をクライアントに送る前に、
- http://example.com/mirror/foo/quux
に変更します。
- URL を構成するのに使われるホスト名は UseCanonicalName
の設定に応じて選択されることに
- 注意してください。
ProxyPassReverse
ディレクティブは
- 対応する ProxyPass
ディレクティブには依存しないため、
- mod_rewrite
のプロキシ通過機能
- (RewriteRule ... [P]
) と併せて使用することができます。
<Location>
セクションの中で使われた場合は、
- 最初の引数は省略され、ローカルディレクトリは <Location>
から取得されます。
説明: | リバースプロキシサーバからの Set-Cookie ヘッダの Domain 文字列を -調整する |
---|---|
構文: | ProxyPassReverseCookieDomain internal-domain public-domain |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
ステータス: | Extension |
モジュール: | mod_proxy |
使用法は基本的に
-ProxyPassReverse
と同じですが、
-ヘッダの URL の代わりに Set-Cookie
ヘッダの
-domain
文字列を書き換えます。
説明: | Reverse プロキシサーバからの Set-Cookie ヘッダの Path 文字列を -調整する |
---|---|
構文: | ProxyPassReverseCookiePath internal-path public-path |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ |
ステータス: | Extension |
モジュール: | mod_proxy |
使用法は基本的に
-ProxyPassReverse
と同じですが、
-ヘッダの URL の代わりに Set-Cookie
ヘッダの
-path
文字列を書き換えます。
説明: | プロキシリクエストに、受け付けた Host HTTP ヘッダを使う |
---|---|
構文: | ProxyPreserveHost On|Off |
デフォルト: | ProxyPreserveHost Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
互換性: | Apache 2.0.31 以降で使用可能 |
このオプションが有効になっている場合、ProxyPass
- で指定したホスト名の代わりに、受け付けたリクエストの Host: 行を
- プロキシ先のホストに送ります。
このオプションは通常は Off
に設定してください。
- ほとんどの場合、これは大量の名前ベースのバーチャルホスティングを行なっていて、
- 元々の Host ヘッダをバックエンドサーバが解釈する必要のあるときのような、
- 特別な設定が必要な場合にのみ有用です。
説明: | プロキシされる HTTP と FTP 接続のためのネットワークバッファサイズ |
---|---|
構文: | ProxyReceiveBufferSize bytes |
デフォルト: | ProxyReceiveBufferSize 0 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
ProxyReceiveBufferSize
ディレクティブは
- スループットを上げるために明示的に (TCP/IP) ネットワークバッファのサイズを
- 設定します。値は 512
以上か、システムのデフォルトのバッファ
- サイズを意味する 0
でなければなりません。
- ProxyReceiveBufferSize 2048
-
説明: | 特定のリクエストを扱う時に使われるリモートプロキシを指定する |
---|---|
構文: | ProxyRemote match remote-server |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
このディレクティブはこのプロキシに対するリモートプロキシを定義します。
- match はリモートサーバがサポートする URL スキーム、
- リモートサーバが使うはずの URL の一部分、サーバがすべての
- リクエストに使われることを示す *
のどれかになります。
- remote-server はリモートサーバの部分 URL です。構文:
- remote-server =
- scheme://hostname[:port]
-
scheme は実際上リモートサーバとの通信に使われるプロトコルを
- 決定します。このモジュールでは http
だけがサポートされて
- います。
- ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
- ProxyRemote * http://cleversite.com
- ProxyRemote ftp http://ftpproxy.mydomain.com:8080
-
この例では、プロキシは FTP リクエストを別の HTTP リクエストで包んで - そのようなリクエストを扱える別のプロキシに転送します。
- -このオプションはリバースプロキシの設定もサポートします。 - サーバが別のフォワードプロキシの後ろに隠されている場合でも - バックエンドウェブサーバをバーチャルホストの URL 空間に入れることが - できます。
- -説明: | 正規表現でのマッチによるリクエストを扱うリモートプロキシの指定 |
---|---|
構文: | ProxyRemoteMatch regex remote-server |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
ProxyRemoteMatch
は最初の引数がリクエストされた
- URL にマッチする正規表現であることを除けば ProxyRemote
ディレクティブと同じです。
説明: | フォワード (標準の) プロキシリクエストを有効にする |
---|---|
構文: | ProxyRequests On|Off |
デフォルト: | ProxyRequests Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
これは Apache のフォワードプロキシサーバとしての動作を
- 有効もしくは無効にします。(ProxyRequests を Off
に
- 設定しても、ProxyPass
- の設定は無効になりません。)
通常のリバースプロキシの設定では、このオプションは Off
- に設定してください。
HTTP や FTP サイトへのプロキシの機能を有効にしたい場合は、
- mod_proxy_http
や mod_proxy_ftp
が
- サーバに組み込まれていなければなりません。
サーバを安全にするまで ProxyRequests
は有効にしないでください。
- オープンプロキシサーバはあなた自身のネットワークにとっても、
- インターネット全体にとっても危険です。
説明: | プロキシされたリクエストのネットワークタイムアウト |
---|---|
構文: | ProxyTimeout seconds |
デフォルト: | ProxyTimeout 300 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
互換性: | Apache 2.0.31 以降で使用可能 |
このディレクティブはユーザがプロキシリクエストのタイムアウトを - 指定できるようにします。これはハングしてしまう遅い、もしくは挙動の - 怪しいサーバがあり、サーバがデータを返すまでひたすら待ち続けるよりも - タイムアウトを返してより緩やかに(訳注: graceful に) - 失敗させたい場合に役に立ちます。
- -説明: | プロキシされたリクエストの Via HTTP 応答ヘッダ
-により提供される情報 |
---|---|
構文: | ProxyVia On|Off|Full|Block |
デフォルト: | ProxyVia Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_proxy |
このディレクティブはプロキシの Via:
HTTP ヘッダの使用を
- 制御します。想定されている使い方は、プロキシサーバがいくつも繋がっているときに
- プロキシリクエストの流れを制御することです。Via:
ヘッダ行の
- 説明は RFC 2616 (HTTP/1.1)
- の 14.45 節を読んでください。
Off
に設定されていると、特別な処理は
- 行なわれません。リクエストやリプライに Via:
ヘッダがあれば、
- 変更されずにそのまま渡します。On
に設定されていれば、各リクエストとリプライに
- Via:
行が追加されます。Full
に設定されていれば、Via:
ヘッダは
- コメント部分に Apache サーバのバージョンも含むようになります。Block
に設定されていれば、すべてのプロキシリクエストから
- Via:
ヘッダが取り除かれます。新たに Via:
が
- 生成されることはありません。Apache HTTP 泣若 若吾с 2.3
+茯: | HTTP/1.1 /蚊若сゃ泣若 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | proxy_module |
純若鴻<ゃ: | mod_proxy.c |
泣若絎障 ProxyRequests
鴻с
+ 若潟激泣若荳若c
+ ゃ潟帥若篏c演冴с
≪吾ャ若 Apache /蚊若сゆ純絎茖障
+ AJP13
(Apache JServe Protocol version 1.3),
+ FTP
, CONNECT
(SSL ),
+ HTTP/0.9
, HTTP/1.0
, HTTP/1.1
+ 傑純絎茖障潟篁潟
+ 傑純c篁≪吾ャ若・膓荐絎с障
Apache 傑純 mod_proxy
篁
+ ゃ≪吾ャ若蚊障:
+ mod_proxy_http
, mod_proxy_ftp
,
+ mod_proxy_ajp
, mod_proxy_balancer
,
+ mod_proxy_connect
сс
+ 劫激罘純篏帥翫mod_proxy
+ 荅峨≪吾ャ若泣若 (潟潟ゃ茵
+ LoadModule
у茯粋昭)
+ 腟粋昭綽荀障
篁≪吾ャ若c≦宍罘純箴障
+ c激ャ mod_cache
∫c≪吾ャ若
+ 箴障SSL/TLS ч泣若・膓罘純
+ mod_ssl
SSLProxy*
cc
+ 箴障罘純荅峨≪吾ャ若
+ 腟粋昭ц┃絎違障
Apache 若激 + 若激荐絎с障
+ +絽吾若ゃ≪潟 + 吾潟泣若 (荐恰絵: 潟潟潟泣若) + 篏臀筝泣若с + 吾潟泣若潟潟潟緇腮сゃ≪潟 + 茵吾潟泣若絎ゃゃ激鴻 + 激吾潟泣若潟潟潟緇鴻 + 潟潟潟緇с違ゃ≪潟菴障 + ゃ≪潟篁泣ゃ若欠宴с≪祉鴻 + 劫ャ荐絎違障
+ +若激筝篏睡号<ゃ≪若c
+ 狗ゃ≪潟ゃ潟帥若吾≪祉鴻
+ 箴с若激若篏睡
+ 羝 (mod_cache
ф箴)
+ c激ユ純с障
若激 ProxyRequests
cc
+ 鴻障若激сゃ≪潟綵荳
+ 篁紙泣ゃ≪祉鴻с若激
+ 鴻粋ゃ≪潟帥激≪祉鴻с
+ 泣若絎荀с
筝若鴻ゃ≪潟 + с泣若荀障ゃ≪潟眼劫ャ荐絎綽荀障 + ゃ≪潟若鴻激腥咲絲障絽吾潟潟潟吾 + 鴻茵障激鴻域ゅ + 荳吾潟泣若сcゃ≪潟 + 潟潟潟菴障
+ +若鴻激号ゃ潟帥若若吟 + <ゃ≪若筝泣若≪祉鴻筝с + 若鴻激茲違潟泣若梧桁c + 篏帥c潟潟泣若c激ユ純箴 + 篏帥障障若鴻激茲違泣若 + URL 腥咲障篏帥с障
+ +若鴻激 ProxyPass
cc
+ RewriteRule
cc
+ [P]
違篏帥ф鴻障若鴻激
+ 荐絎 ProxyRequests
荐絎綽荀
+ 障
篁ヤ箴紮膂≦箴сcc潟 + 茯茯帥
+ +障c激ユ純鴻翫mod_cache
+ 茯茯с
+ ProxyRequests On
+ ProxyVia On
+
+ <Proxy *>
+
+ Order deny,allow
+ Deny from all
+ Allow from internal.example.com
+
+ </Proxy>
+
+ ProxyRequests Off
+
+ <Proxy *>
+
+ Order deny,allow
+ Allow from all
+
+ </Proxy>
+
+ ProxyPass /foo http://foo.example.com/bar
+ ProxyPassReverse /foo http://foo.example.com/bar
+
激≪祉鴻篁ヤ <Proxy>
潟潟筝
+ cc吾у九勝с障:
+ <Proxy *>
+
+ Order Deny,Allow
+ Deny from all
+ Allow from 192.168.0
+
+ </Proxy>
+
≪祉劫九勝cc荅潟宴
+ mod_authz_host
茯帥
(ProxyRequests
cc
+ 篏帥c) 若激荐絎翫ウ≪祉
+ 狗茵絽吾紊ус篁紙ゃ≪潟
+ 荳鋌紙鴻≪祉鴻泣若篏帥
+ с障障荳若cゃ潟帥若
+ 篏c演冴с(ProxyRequests Off
+ ProxyPass
cc篏帥c)
+ 若鴻激篏帥c翫ゃ≪潟腓榊
+ 荐絎鴻≪祉鴻с若激
+ 祉≪祉劫九勝羈紊т紊с
激 mime.types 荐絎<ゃс<ゃ帥ゃ
+ application/octet-stream
с絎臂с
+ 篁ヤ綵鴻腴ゃ障:
application/octet-stream bin dms lha lzh exe class tgz taz
ャ号鴻ゃс障:
+DefaultType application/octet-stream
障(荵∫ binary
≪若) 劫
+ <ゃ FTP ASCII
荵∫号篏帥違
+ 翫鴻緇 ;type=a
篁
+ mod_proxy
ASCII 荵∫с障
+ (FTP c筝荀с絽吾 ASCII ≪若ц障)
憝鴻сmod_proxy FTP 泣若 GET 帥с< + Apache 激篏帥c HTTP ≪若 (POST PUT) + с障
+ + +FTP URI 違ゃ潟若吟若c
+ 後障鴻宴障罧綽泣/../ 吟茹i
+ 絎 FTP 泣若/../ 篏帥c筝篏c
+ 育с障馹茹f浦
+ Squid %2f Apache FTP 激絎茖障
+ Squid Proxy c激
+ 篁鋎帥激泣若с号с
+ 鴻鴻 /%2f
篁с激
+ FTP 紮c (若c篁c) /
+ 紊с障箴違/etc/motd
緇
+ 罨< URL 篏帥障:
+ ftp://user@host/%2f/etc/motd
+
FTP 泣若若九鴻若篏帥c違ゃ潟 + Apache 違号篏帥障URL 若九鴻若障c + 翫Apache FTP 泣若 anonymous 違ゃ潟障 + ゃ障
+ +
+ user: anonymous
+ password: apache_proxy@
+
anonymous ≪祉鴻荐絎 + 鴻 FTP 泣若絲障篏障
+ +若九篏帥c篋阪ャ違ゃ潟URL 若九ャ + с障:
+ +
+ ftp://username@host/myfile
+
若九筝FTP 泣若鴻若荀羆
+ (<鴻с)Apache 401
+ (Authorization required) 菴障吟若九
+ 鴻若ュゃ≪違茵腓冴障鴻若ュ緇
+ 恰・膓荅帥違鴻純若鴻茵腓冴障
+ 号鴻吟鴻若綛恰ц;腓冴с
+ (
+ ftp://username:password@host/myfile
+
ュ翫茵腓冴障障)
+ +篆<鴻若垸с障 + 吟 Apache 激泣若 base64 х垸 + 絖Apache 激 FTP 泣若綛恰障 + сHTTP 篏帥c HTTP ≪祉鴻 ( + 篋榊<ゃ FTP с≪祉鴻) 綽荀障 + 絎с篆∴君篏帥c翫頑筝с鴻若障 + 醇с障
+ProxyBlock
cc篏帥c翫
+ 緇鴻莎桁鴻
+ IP ≪鴻茯帥鴻c激ャ障鴻≪
+ c亥 (篁ヤ) 障
ゃ潟 Apache 激泣若紊吾鴻
+ 篌腓障<ゃ≪若違障(
+ scheme ゃ<ゃ≪若
+ 激若
+ ProxyRemote
cc
+ 荐絎)ゃ潟純若鴻≪祉鴻
+ <ゃ≪若с≪祉鴻с障
+ 鴻ゃ潟絮贋・≪祉鴻鴻絎
+ NoProxy
cc
+ 綵鴻腴<障
ゃ潟若吟 WWW 鴻с若<ゃ潟
+ ャ障http://somehost.example.com/
+ 鴻篁c "http://somehost/" 鴻障
+ 鴻篁泣若荐絎若<ゃ潟
+ 藥<篏帥茹i膣鴻
+ 激泣若筝障
+ 泣若 激泣若合荐絎
+ ProxyDomain
cc
+ 篏睡翫Apache ゃ≪潟ゃ綽膈c
+ 罩c絎 ((荐恰絵: fully qualified))
+ 泣若≪鴻с障
+ ゃ若吟若罩c絎鴻
+ 絅純障号荐с
Keepalive HTTP/1.1 絎茖≪宴若激с潟泣若
+ 倶сHTTP/1.0 keepalive <鴻
+ 医紊違篋ゃ障 SetEnv
ccц┃絎障
force-proxy-request-1.0
proxy-nokeepalive
+ 医紊違с
+ <Location /buggyappserver/>
+
+ ProxyPass http://buggyappserver:7001/foo/
+ SetEnv force-proxy-request-1.0 1
+ SetEnv proxy-nokeepalive 1
+
+ </Location>
+
茯: | 激腟宴若 CONNECT
+с絎 |
---|---|
罕: | AllowCONNECT port [port] ... |
: | AllowCONNECT 443 563 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
AllowCONNECT
激 CONNECT
+ <純・膓荐怨若垩鴻絎障
+ 篁ャ吟https
潟激с潟荀羆
+ HTTP 筝с激潟潟違с
+ <純篏帥障
荐絎сhttps 若 (443
)
+ snews 若 (563
) 鴻c障
+ 筝吾鴻荐莠若炊・膓荐怨翫
+ AllowCONNECT
cc篏睡障
CONNECT
篏睡mod_proxy_connect
+ 泣若腟粋昭障違羈
茯: | 贋・・膓 鴻<ゃ潟若 |
---|---|
罕: | NoProxy host [host] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
ccゃ潟筝 Apache 激泣若
+ сNoProxy
cc腥榊遵阪с
+ 泣IP ≪鴻鴻<ゃ潟鴻絎障
+ 鴻吾鴻 ProxyRemote
ц┃絎激泣若
+ 若贋・障
+ ProxyRemote * http://firewall.mycompany.com:81
+ NoProxy .mycompany.com 192.168.112.0/21
+
NoProxy
cc host 綣違
+ 篁ヤ腮蕁с:
Domain DNS <ゃ喝с + 筝 DNS <ゃ喝潟障若 (鴻絨障鴻 + Domain хc) 絮鴻鴻 + 茵障)
+ +
+ .com .apache.org.
+
Domain Hostname 阪ャ (括罕DNS <ゃ潟 + DNS A 潟若ゃсс!)Domain + 絽吾у障障
+ +<ゃ喝罸莠紊ф絖絨絖阪ャ茵Domain
+ 絽吾 DNS 若若紮障帥障с
+ 罨<篋ゃ<ゃ .MyDomain.com
+ .mydomain.com.
(緇羈) 筝с
+ 帥障<ゃ潟罸莠 DNS ≪ц
+ 泣罸莠c合с
SubNet 医ゅ就綣 (у阪ゃ医) + ゃ潟帥若≪鴻с緇鴻激ャ Subnet + 潟違絎鴻膓с障 + 演若ゃ潟帥с若鴻篏帥c育с泣 + 茵篏帥障腓榊鴻絎翫 + 緇ャ (ゃ 0 ) 医鴻絎障 + (翫鴻 8 篏с絎с障) + 箴:
+ +192.168
192.168.0.0
255.255.0.0
鴻綵√т戎
+ 障)192.168.112.0/21
192.168.112.0/21
21 鴻
+ 鴻 (255.255.248.0
綵√т戎
+ 障)劫ャ翫32 鴻 SubNet + IPAddr 膈с + 0 鴻 SubNet (箴0.0.0.0/0) + 鴻 IP ≪鴻絎 _Default_ с
+IPAddr 医ゅ就綣 (у阪ゃ医) + 絎ゃ潟帥若≪鴻с絽吾≪鴻鴻 + 茵障綽≪鴻絲上 DNS <ゃ喝с + 障
+ +
+ 192.168.123.7
+
IPAddr DNS 激鴻茹f浦綽荀с + apache ц純筝障
+Hostname DNS <ゃ潟泣若鴻筝ゃ + 茲違 IPAddr 茹f浦純 + 絎 DNS <ゃ喝с (Domain + c茯筝荐) 茫鴻茵絨筝ゃ + IPAddr ( + IPAddr 鴻鴻) 茹f浦 + 違障)
+ +
+ prep.ai.mit.edu
+ www.apache.org
+
紊翫Hostname 篁c IPAddr 絎鴻DNS ≪ + 帥с合障Apache 茹f浦 + 若泣若吾・膓 PPP 筝翫 + 障
+Hostname 罸莠紊ф絖絨絖阪ャ茵
+ Hostname 絽吾 DNS 若若紮障帥障
+ с篋ゃ<ゃ WWW.MyDomain.com
+ www.mydomain.com.
(緇羈) 筝с
+ 帥障
茯: | 激純若鴻潟潟 |
---|---|
罕: | <Proxy wildcard-url> ...</Proxy> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
<Proxy>
祉激с割賢
+ cc激潟潟潟翠障
+ 激с綵√ゃ若篏帥障
箴違罨<荐絎 yournetwork.example.com
+ 鴻帥激泣若腟宴≪祉鴻荐怨障:
+ <Proxy *>
+
+ Order Deny,Allow
+ Deny from all
+ Allow from yournetwork.example.com
+
+ </Proxy>
+
罨<箴 example.com
foo
c
+ 鴻<ゃ絲障激泣若
+ INCLUDES
c帥荐絎障:
+ <Proxy http://example.com/foo/*>
+
+ SetOutputFilter INCLUDES
+
+ </Proxy>
+
茯: | 綽膈翫宴鴻羆冴 |
---|---|
罕: | ProxyBadHeader IsError|Ignore|StartBody |
: | ProxyBadHeader IsError |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
篋: | 2.0.44 篁ラ |
ProxyBadHeader
cc罕
+ c (ゃ障 潟潟障) c
+ mod_proxy
羆冴障篁ヤ綣違
+ с障:
IsError
Ignore
StartBody
茯: | 傑・膓胼罩≪茯ャ鴻<ゃ潟絎 |
---|---|
罕: | ProxyBlock *|word|host|domain
+[word|host|domain] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
ProxyBlock
cc腥榊純у阪
+ 茯ャ鴻<ゃ潟鴻絎障泣ゃ茯ャ鴻
+ <ゃ潟泣ゃ吾 HTTPHTTPSFTP ャ<潟鴻
+ 激泣若障激≪吾ャ若
+ 莎桁鴻 IP ≪鴻茯帥鴻緇鴻
+ c激ャ障泣若莎桁絨障
+ ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
+
rocky.wotsamattau.edu
IP ≪鴻усс
+ 障
wotsamattau.edu
wotsamattau
+ сс
+ ProxyBlock *
+
鴻泣ゃ吾・膓羈
+ +茯: | 激鴻<ゃ喝 |
---|---|
罕: | ProxyDomain Domain |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
ccゃ潟 Apache 激泣若
+ сProxyDomain
cc
+ apache 激泣若絮<ゃ潟絎障
+ <ゃ喝<鴻翫荐絎 Domain
+ 菴遵鴻吾ゃ綽膈菴障
+ ProxyRemote * http://firewall.mycompany.com:81
+ NoProxy .mycompany.com 192.168.112.0/21
+ ProxyDomain .mycompany.com
+
茯: | 激潟潟潟若若吾筝吾 |
---|---|
罕: | ProxyErrorOverride On|Off |
: | ProxyErrorOverride Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
篋: | 若吾с 2.0 篁ラт戎 |
cc若鴻激篏睡
+ 潟若吟若若吾紊荀演
+ сcc (mod_include
SSI c)
+ ゃ潟若<ゃ若潟若緇罩c篏
+ 障 (篏激泣若
+ 若若吾茵腓冴сcc鴻 SSI
+ <祉若吾茵腓冴障)
茯: | 若帥鴻若<泣ゃ冴羆阪 |
---|---|
罕: | ProxyIOBufferSize bytes |
: | ProxyIOBufferSize 8192 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
ProxyIOBufferSize
ccュ
+ 阪筝<≪篏帥<泣ゃ冴茯炊眼障
+ 泣ゃ冴 8192
篁ヤс違障
祉鴻翫ゃ紊眼宴障
+ +茯: | 罩h頫憗с激純若合cc潟潟 |
---|---|
罕: | <ProxyMatch regex> ...</ProxyMatch> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
<ProxyMatch>
URL
+ 罩h頫憗ゃ <Proxy>
ccс
茯: | 鴻若激紊ф |
---|---|
罕: | ProxyMaxForwards number |
: | ProxyMaxForwards 10 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
篋: | Apache 2.0 篁ラт戎 |
ProxyMaxForwards
cc
+ 鴻 Max-Forwards
絎翫
+ 鴻純激紊ф違荐絎障
+ 激♂若 DoS 紙蚊荐絎障
+ ProxyMaxForwards 15
+
茯: | ≪若泣若若泣若 URL 腥咲 |
---|---|
罕: | ProxyPass [path] !|url [key=value key=value ...]] |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
cc≪若泣若若泣若腥咲 + с障若泣若絽吾潟с激 + 篏≪若泣若若障 + path 若篁潟鴻сurl + ≪若泣若 URL 惹絖с障
+ +ProxyPass
cc
+ 篏帥c ProxyRequests
cc絽吾
+ off 荐絎鴻с若泣若≪鴻 http://example.com/
с
+ 障
+ ProxyPass /mirror/foo/ http://backend.example.com/
+
荐絎 http://example.com/mirror/foo/bar
吾
+ 鴻 http://backend.example.com/bar
吾
+ 激鴻紊障
泣c若鴻激 !
+ 綵鴻腴<障箴
+ ProxyPass /mirror/foo/i !
+ ProxyPass /mirror/foo http://backend.example.com
+
/mirror/foo/i
ゃ
+ /mirror/foo
吾鴻鴻
+ backend.example.com
激障
荀с筝 ProxyPass
+ cc
+ ゅcc臀鏆荀障
2.1 井純с潟泣若・膓若潟激с潟
+ 篏帥障key=value
綵√<若帥
+ 潟激с潟若潟違茯炊眼с障Hard Maximum
+ ゃ鴻c MPM с祉劫鴻違
+ 違潟激с恰違сprefork MPM с絽吾 1 сworker MPM с
+ ThreadsPerChild
ц炊眼障
min
荐絎с潟泣若篏潟激с潟
+ 絽御羆冴障障Soft Maximum smax
違
+ 障у荀綽潟激с潟障smax
+ 莇違潟激с潟絖 ttl
у障
+ 潟泣若 Hard Maximum max
遺札筝潟激с潟
+ 障
+ ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300
+
<若 | ++ | 茯 |
---|---|---|
min | +0 | +潟泣若・膓 + 絽吾潟激с恰違絨 |
max | +1...n | +潟泣若・膓違 Hard Maximum
+ (荐恰絵: 若)
+ ゃ篏睡 MPM 祉鴻鴻違c障
+ Prefork MPM с絽吾 1 сWorker MPM с ThreadsPerChild
+ ц睡с障Hard Maximum 篁ヤ潟泣若潟激с潟
+ 障 |
smax | +max | +・膓違 Soft Maximum (荐恰絵: 純)障с
+ 潟激с潟綽荀綽障
+ smax 莇違潟激с潟絖 ttl
+ у障
+ |
ttl | +- | +smax 違莇羇糸倶潟激с潟絖
+ 腱ф絎障篏睡c潟激с潟
+ 障
+ |
timeout | +Timeout |
+ 潟激с潟帥ゃ≪腱ф絎障鴻絎違
+ 若潟激с潟緇с障у<障cc
+ max <若帥篏帥с潟泣若
+ ・膓違九勝篏帥障
+ |
acquire | +- | +荐絎潟激с潟若若潟激с潟緇
+ 緇罘緇≧紊уゃ障若潟激с潟若c翫
+ SERVER_BUSY 鴻若帥鴻ゃ≪潟菴障
+ |
keepalive | +Off | +潟泣若 Apache <ゃ≪若若翫
+ <若帥篏帥c<ゃ≪若緇
+ 羇糸倶潟激с潟純障
+ 違 OS 腓冴KEEP_ALIVE <祉若吾羇糸倶
+ 潟激с潟с障 ( OS 違若荐絎箴絖
+ 絽吾 120ms ) c<ゃ≪若c潟激с潟
+ 純蚊障keepalive 鴻c
+ On
+ |
retry | +60 | +潟激с潟若潟違ゃ帥ゃ≪腱 + 絎障潟泣若吾潟激с潟若潟違紊掩翫 + 帥ゃ≪障с泣若鴻若障 + 罘純篏帥潟泣若<潟潟鴻激c潟 + 緇с潟ゃ潟緇絽違cс障 + |
loadfactor | +1 | +若若莢隙違сBalancerMember т戎障 + 1 100 障с医с若若絲障罩h莢欠絎障 + |
route | +- | +若潟泣т戎c翫若若若c潟違障 + 若祉激с ID 篁ゃ障 + |
redirect | +- | +若若ゃ激с括莊сゃ絽吾 + 絎鴻帥若サ荐絎ャ篏帥障 + 祉激с ID <鴻絎翫 + ゃ若c潟違<若帥 + BalancerMember ゃ障 + |
Proxy cc鴻若 balancer://
c翫
+ 潟泣若絎篆<篁潟若若障
+ 若若綛障ゃ "" 若若膊∞ゃ障
+ 翫<若帥篁潟若若絲障荐絎障
+
<若 | ++ | 茯 |
---|---|---|
lbmethod | +- | +Balancer 若潟号号篏睡若潟鴻
+ 鴻宴吾ャ若潟井号吾潟障鴻違ч推
+ byrequests 荵∫ゃ違ч推
+ bytraffic 荐絎с障
+ byrequests с
+ |
stickysession | +- | +潟泣若鴻c若祉激с喝с絽吾ゃ JSESSIONID
+ PHPSESSIONID c障ゃ
+ 潟≪宴若激с潟泣若祉激с潟箴絖障
+ |
nofailover | +Off | +On c若若若莎激
+ ≦鴻c翫祉激с潟障
+ 潟泣若祉激с潟宴若激с潟泣若翫
+ On
+ |
timeout | +0 | +潟泣若帥ゃ≪腱ф絎障 + ゃ荐絎若若若緇障с紊у罘障 + с緇罘障 + |
maxattempts | +1 | +сゃ若若荅帥紊с違絎障 + |
+ ProxyPass /special-area http://special.example.com/ smax=5 max=10
+ ProxyPass / balancer://mycluster stickysession=jsessionid nofailover=On
+ <Proxy balancer://mycluster>
+
+ BalancerMember http://1.2.3.4:8009
+ BalancerMember http://1.2.3.5:8009 smax=10
+ # Less powerful server, don't send as many requests there
+ BalancerMember http://1.2.3.6:8009 smax=1 loadfactor=20
+
+ </Proxy>
+
<Location>
祉激с潟筝т戎翫綣違
+ ャ若c <Location>
緇障
荵若鴻激荐絎綽荀翫[P]
+ 遺 RewriteRule
+ ccс
茯: | 若鴻激泣若 HTTP 綽膈 +URL 茯炊眼 |
---|---|
罕: | ProxyPassReverse [path] url |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
cc Apache HTTP ゃ綽膈
+ Location
, Content-Location
, URI
+ 茯炊眼障Apache 若鴻激篏帥
+ 若鴻激с≪祉鴻蚊
+ 荀с潟泣若 HTTP ゃ
+ 若鴻激潟ф宴障
ccф腓冴 HTTP 綽膈帥吾障 + Apache 篁綽膈吾HTML 若吾筝 URL с + 吾障HTML 筝荀URL с吾 + ≪吾ャ若 Nick Kew mod_proxy_html 障
+ +path 若篁潟鴻сurl
+ ≪若泣若 URL с ProxyPass
cc罕с
箴違若泣若≪鴻 http://example.com/
+ 障
+ ProxyPass /mirror/foo/ http://backend.example.com/
+ ProxyPassReverse /mirror/foo/ http://backend.example.com/
+ ProxyPassReverseCookieDomain backend.example.com public.example.com
+ ProxyPassReverseCookiePath / /mirror/foo/
+
荐絎http://example.com/mirror/foo/bar
+ 吾若鴻 http://backend.example.com/bar
+ 吾激鴻сゃс障
+ ( ProxyPass
罘純с)backend.example.com
+ ゃ√帥障http://backend.example.com/bar
+ http://backend.example.com/quux
ゃ
+ Apache HTTP ゃ綽膈ゃ≪潟
+ http://example.com/mirror/foo/quux
紊眼障
+ URL 罕篏帥鴻 UseCanonicalName
荐絎綽御
+ 羈
ProxyPassReverse
cc
+ 絲上 ProxyPass
cc箴絖
+ mod_rewrite
潔罘
+ (RewriteRule ... [P]
) 篏泣篏睡с障
<Location>
祉激с潟筝т戎翫
+ 綣違ャ若c <Location>
緇障
茯: | 若鴻激泣若 Set-Cookie Domain 絖 +茯炊眼 |
---|---|
罕: | ProxyPassReverseCookieDomain internal-domain public-domain |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
篏睡羈堺
+ProxyPassReverse
с
+ URL 篁c Set-Cookie
+domain
絖吾障
茯: | Reverse 激泣若 Set-Cookie Path 絖 +茯炊眼 |
---|---|
罕: | ProxyPassReverseCookiePath internal-path public-path |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
篏睡羈堺
+ProxyPassReverse
с
+ URL 篁c Set-Cookie
+path
絖吾障
茯: | 激鴻篁 Host HTTP 篏帥 |
---|---|
罕: | ProxyPreserveHost On|Off |
: | ProxyPreserveHost Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
篋: | Apache 2.0.31 篁ラт戎 |
激с潟鴻c翫ProxyPass
+ ф絎鴻篁c篁鴻 Host: 茵
+ 桁鴻障
激с潟絽吾 Off
荐絎
+ 祉翫紊ч若鴻若c鴻c潟違茵c
+ Host 潟泣若茹i綽荀
+ 劫ャ荐絎綽荀翫炊с
茯: | 激 HTTP FTP ・膓若<泣ゃ |
---|---|
罕: | ProxyReceiveBufferSize bytes |
: | ProxyReceiveBufferSize 0 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
ProxyReceiveBufferSize
cc
+ 鴻若筝腓榊 (TCP/IP) 若<泣ゃ冴
+ 荐絎障ゃ 512
篁ヤ激鴻
+ 泣ゃ冴潟 0
с違障
+ ProxyReceiveBufferSize 2048
+
茯: | 劫鴻宴篏帥≪若激絎 |
---|---|
罕: | ProxyRemote match remote-server |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
cc激絲障≪若激絎臂障
+ match ≪若泣若泣若 URL 鴻若
+ ≪若泣若篏帥 URL 筝泣若鴻
+ 鴻篏帥腓冴 *
障
+ remote-server ≪若泣若 URL с罕:
+ remote-server =
+ scheme://hostname[:port]
+
scheme 絎筝≪若泣若篆<篏帥潟
+ 羆阪障≪吾ャ若с http
泣若
+ 障
+ ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
+ ProxyRemote * http://cleversite.com
+ ProxyRemote ftp http://ftpproxy.mydomain.com:8080
+
箴с激 FTP 鴻ャ HTTP 鴻у + 鴻宴ャ激荵∫障
+ +激с潟若鴻激荐絎泣若障 + 泣若ャ若激緇翫с + 潟с泣若若c鴻 URL 腥咲ャ + с障
+ +茯: | 罩h頫憗с鴻宴≪若激絎 |
---|---|
罕: | ProxyRemoteMatch regex remote-server |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
ProxyRemoteMatch
綣違鴻
+ URL 罩h頫憗сゃ ProxyRemote
ccс
茯: | 若 (罔羣) 激鴻鴻 |
---|---|
罕: | ProxyRequests On|Off |
: | ProxyRequests Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
Apache 若激泣若篏
+ 鴻≦鴻障(ProxyRequests Off
+ 荐絎ProxyPass
+ 荐絎≦鴻障)
絽吾若鴻激荐絎с激с潟 Off
+ 荐絎
HTTP FTP 泣ゃ吾激罘純鴻翫
+ mod_proxy_http
mod_proxy_ftp
+ 泣若腟粋昭障違障
泣若絎障 ProxyRequests
鴻с
+ 若潟激泣若荳若c
+ ゃ潟帥若篏c演冴с
茯: | 激鴻若帥ゃ≪ |
---|---|
罕: | ProxyTimeout seconds |
: | ProxyTimeout 300 |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
篋: | Apache 2.0.31 篁ラт戎 |
cc若吟激鴻帥ゃ≪ + 絎с障潟違障 + 泣若泣若若帥菴障с蚊緇∞ + 帥ゃ≪菴膩(荐恰絵: graceful ) + 紊掩翫綵鴻腴<障
+ +茯: | 激鴻 Via HTTP 綽膈
+箴 |
---|---|
罕: | ProxyVia On|Off|Full|Block |
: | ProxyVia Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_proxy |
cc激 Via:
HTTP 篏睡
+ 九勝障喝篏帥鴻激泣若ゃ膵c
+ 激鴻羌九勝сVia:
茵
+ 茯 RFC 2616 (HTTP/1.1)
+ 14.45 膀茯с
Off
荐絎劫ャ
+ 茵障鴻ゃ Via:
違
+ 紊眼障丈検障On
荐絎違鴻ゃ
+ Via:
茵菴遵障Full
荐絎違Via:
+ 潟<潟 Apache 泣若若吾с潟障Block
荐絎違鴻激鴻
+ Via:
ゃ障違 Via:
+ 障Apache HTTP サーバ バージョン 2.3
-説明: | mod_proxy で AJP
-をサポートするためのモジュール |
---|---|
ステータス: | Extension |
モジュール識別子: | proxy_ajp_module |
ソースファイル: | proxy_ajp.c |
本モジュールには mod_proxy
が必要です。
- Apache JServ Protocol version 1.3
(以降 AJP13)
- をサポートします。
AJP13
プロトコルを扱えるようにするには
- mod_proxy
と mod_proxy_ajp
- をサーバに組み込む必要があります。
安全なサーバにするまでプロクシ機能は有効にしないでください。 - オープンプロキシサーバはあなた自身のネットワークにとっても、 - インターネット全体にとっても危険です。
-このモジュールにディレクティブはありません。
-mod_proxy
AJP13
プロトコルはパケット指向です。
- 可読なプレーンテキスト形式ではなくバイナリ形式になったのは、
- おそらくパフォーマンス上の理由によります。
- ウェブサーバはサーブレットコンテナと TCP コネクションで通信します。
- ソケット生成は重い処理なので、負荷を減らすために、サーブレットコンテナとの
- TCP 接続を維持し、複数のリクエスト・レスポンス処理サイクルに対して一つの
- コネクションを使いまわすようになっています。
あるリクエストにコネクションが割り当てられると、その処理サイクルが - 完了するまで他のものに使われることはありません。 - つまりコネクション上では、リクエストの同時処理は行われません。 - このため、コネクション両端での実行するコードを簡潔にできる一方で、 - 同時に開くコネクションは多くなっています。
-サーブレットコンテナへのコネクションを開いた後は、コネクションの状態は - 次のどれかになります:
-コネクションが特定のリクエストにアサインされると、基本的な情報 (例えば
- HTTP ヘッダ等) が圧縮された形 (例えば通常の文字列は整数にエンコードされます)
- で転送されます。詳細は下記の「リクエストパケットの構造」を参照してください。
- リクエストにボディが存在 (content-length > 0)
すれば、
- 基本的な情報の直後に別パケットで転送されます。
この時点でおそらく、サーブレットコンテナは処理を開始できるようになります。 - ですので、次のメッセージをウェブサーバに戻して知らせられるようになります。
-個々のメッセージはそれぞれ異なるデータパケット形式になっています。 - 後述の「レスポンスパケットの構造」を参照してください。
-このプロトコルには XDR から受け継いだ部分が少しありますが、多くの点で - 異なります (例えば 4 バイトアライメントでないことなど) 。
-バイトオーダー: 個々のバイトのエンディアンがどうなっているかは、 - 私は詳しくないのですが、リトルエンディアンになっていると思います。 - XDR 仕様でそうなっているのと、素晴らしいことに sys/socket ライブラリが - (C で) そういう風にできているのでそうなのだと思いました。 - ソケット呼び出しの内部についてより詳しい方がいらっしゃいましたら、 - ご教授ください。
-プロトコルには 4 つのデータタイプがあります: byte, boolean, - integer, string です。
-1 = true
, 0 = false
です。
- (C のように) 非零を真として扱ってしまうと、ある場合は動くかもしれませんし、
- 動かないかもしれません。0 から 2^16 (32768)
の範囲の数字。高次の 2 バイトが
- 先に格納されます。strlen
と同様です。
- これらの終端文字をスキップするために、あまり意味の無いインクリメント文
- をたくさん書かないといけないのは、
- Java の側から見ると少し紛らわしく感じられるかもしれません。
- こうなった理由はおそらく、Servlet コンテナから返される文字列を読み出す時に、
- 効率よく C のコードを書けるようにする――サーブレットから返される
- 文字列は \0 文字で終端されているので、C のコードではわざわざコピーをせずに、
- 一つのバッファへのリファレンスを取り回すように書くことができる――
- ためだと思われます。
- '\0' 文字がない場合は、C では文字列の規則に合うようにコピーしなければ
- いけなくなってしまいます。多くのコードでそうなっているのですが、パケットサイズの最大サイズは
- 8 * 1024 (8K)
です。パケットの実際の長さはヘッダに
- エンコードされて入っています。
サーバからコンテナに送出されるパケットは 0x1234
で始まります。
- コンテナからサーバに送られるパケットは AB
(ASCII コード A と
- ASCII コード B) で始まります。この二バイトの後に、ペイロード長が (上記の形式で)
- 続きます。このため、ペイロード長の最大値は 2^16 にできるように思えますが、
- 実際にはコードでは最大値は 8K に設定されています。
パケット形式 (Server->Container) | -|||||
Byte | -0 | -1 | -2 | -3 | -4...(n+3) | -
Contents | -0x12 | -0x34 | -データ長 (n) | -Data | -
パケット形式 (Container->Server) | -|||||
Byte | -0 | -1 | -2 | -3 | -4...(n+3) | -
Contents | -A | -B | -データ長 (n) | -Data | -
ほとんどのパケットで、ペイロードの最初のバイトがメッセージの型をエンコード
- しています。例外はサーバからコンテナに送られるリクエストボディパケットです
- ――これらは標準的なパケット形式 (0x1234
とパケット長)
- ですが、その後に続くプレフィックスコードがありません。
ウェブサーバは次のメッセージをサーブレットコンテナに送出できます。
-コード | -パケットの型 | -意味 | -
2 | -Forward Request | -リクエスト処理サイクルを後続のデータとともに開始する。 | -
7 | -Shutdown | -ウェブサーバがコンテナに、コンテナを終了するように伝える。 | -
8 | -Ping | -ウェブサーバがコンテナに制御を受け持つように伝える - (セキュアログインフェーズ) 。 | -
10 | -CPing | -ウェブサーバがコンテナに CPong で即座に応答するように伝える。 | -
none | -Data | -サイズ (2 バイト) とそれに続くボディデータ。 | -
基本的なセキュリティを確保するため、ホストされているマシンと同一の
- マシンからのリクエストに対してのみ、コンテナは実際に Shutdown
- を実行します。
最初の Data
パケットは、Forward Request
- の直後にウェブサーバから送られます。
サーブレットコンテナはウェブサーバに、次のタイプのメッセージを送ることが - できます :
-コード | -パケットの型 | -意味 | -
3 | -Send Body Chunk | -サーブレットコンテナからウェブサーバに - (そしておそらくそのままブラウザに)、ボディのチャンクを送る。 | -
4 | -Send Headers | -サーブレットコンテナからウェブサーバに (そしておそらくそのままブラウザに) - レスポンスヘッダを送る。 | -
5 | -End Response | -レスポンス (つまりリクエスト処理サイクル) 終了の目印を送る。 - | -
6 | -Get Body Chunk | -まだ全て転送されていない場合、残っているリクエストのデータを受け取る。 - | -
9 | -CPong 応答 | -CPing リクエストに応答する。 | -
上記メッセージは、それぞれ内部構造が異なっています。詳細は下記をご覧ください。 -
- -サーバからコンテナへ送られるメッセージが - Forward Request 型の場合 :
--AJP13_FORWARD_REQUEST := - prefix_code (byte) 0x02 = JK_AJP13_FORWARD_REQUEST - method (byte) - protocol (string) - req_uri (string) - remote_addr (string) - remote_host (string) - server_name (string) - server_port (integer) - is_ssl (boolean) - num_headers (integer) - request_headers *(req_header_name req_header_value) - attributes *(attribut_name attribute_value) - request_terminator (byte) OxFF -
request_headers
は次のような構造になっています :
-
-req_header_name := - sc_req_header_name | (string) [see below for how this is parsed] - -sc_req_header_name := 0xA0xx (integer) - -req_header_value := (string) -
属性
はオプションで、次のような構造をしています :
-attribute_name := sc_a_name | (sc_a_req_attribute string) - -attribute_value := (string) - -
もっとも重要なヘッダは content-length
だということに
- 注意してください。コンテナは次のパケットを探すかどうかを、
- それを見て決めるからです。
リクエストについては全て、この値は 2 になります。他の Prefix コードの詳細は - 上記をご覧ください。
- -HTTP メソッドは 1 バイトにエンコードされます :
-Command Name | Code |
OPTIONS | 1 |
GET | 2 |
HEAD | 3 |
POST | 4 |
PUT | 5 |
DELETE | 6 |
TRACE | 7 |
PROPFIND | 8 |
PROPPATCH | 9 |
MKCOL | 10 |
COPY | 11 |
MOVE | 12 |
LOCK | 13 |
UNLOCK | 14 |
ACL | 15 |
REPORT | 16 |
VERSION-CONTROL | 17 |
CHECKIN | 18 |
CHECKOUT | 19 |
UNCHECKOUT | 20 |
SEARCH | 21 |
MKWORKSPACE | 22 |
UPDATE | 23 |
LABEL | 24 |
MERGE | 25 |
BASELINE_CONTROL | 26 |
MKACTIVITY | 27 |
今後の ajp13 バージョンでは、この一覧にない、今後追加されるメソッドを - 送るかもしれません。
- -これらはまさに文字通りのものです。どれも必要で、リクエストの毎回につき - 送られます。
- -request_headers
の構造は次のようなものです :
- まずヘッダの数 num_headers
がエンコードされます。
- 次にヘッダ名 req_header_name
/ 値 req_header_value
- の組が続きます。効率のため、一般的なヘッダは整数でエンコードして転送します。
- ヘッダ名が基本ヘッダの一覧に無い場合は、通常通り (文字列として、長さ
- プレフィックス付きで) 転送されます。一般的なヘッダ
- sc_req_header_name
の一覧とそのコードは次の通りです
- (どれも大文字小文字を区別します) :
名前 | コードの値 | コード名 |
accept | 0xA001 | SC_REQ_ACCEPT |
accept-charset | 0xA002 | SC_REQ_ACCEPT_CHARSET - |
accept-encoding | 0xA003 | SC_REQ_ACCEPT_ENCODING - |
accept-language | 0xA004 | SC_REQ_ACCEPT_LANGUAGE - |
authorization | 0xA005 | SC_REQ_AUTHORIZATION | -
connection | 0xA006 | SC_REQ_CONNECTION |
content-type | 0xA007 | SC_REQ_CONTENT_TYPE | -
content-length | 0xA008 | SC_REQ_CONTENT_LENGTH | -
cookie | 0xA009 | SC_REQ_COOKIE |
cookie2 | 0xA00A | SC_REQ_COOKIE2 |
host | 0xA00B | SC_REQ_HOST |
pragma | 0xA00C | SC_REQ_PRAGMA |
referer | 0xA00D | SC_REQ_REFERER |
user-agent | 0xA00E | SC_REQ_USER_AGENT |
これを読み込む Java のコードでは、最初の 2 バイト整数を取り込み、
- 目印になるバイト '0xA0'
であれば、ヘッダ名の配列の
- インデックスを使います。先頭バイトが 0xA0
でない場合は、
- 先頭 2 バイトは文字列長を表す整数であると解釈し、読み込みはじめます。
ヘッダ名の長さは 0x9999 (==0xA000 -1)
以上にならないという
- 仮定の下に動いていて、少しあいまいですが合理的な挙動になっています。
content-length
ヘッダはとても重要です。
- 存在していて非ゼロであれば、リクエストにはボディがある (例えば POST
- リクエスト) と推測し、そのボディを取り込むために
- 直後のパケットを入力ストリームから読み込みはじめます。
- ?
プレフィックスで始まる属性 (例 ?context
)
- は。省略可能です。それぞれ属性の型を示す 1 バイトのコードと、
- 値の文字列が続きます。
- これらは順不同で送ることができます (C のコードは常に下の一覧順に
- 送るようですが) 。
- オプションの属性のリストの最後には、特別な終了コードが送られます。
- コードの一覧は :
Information | Code Value | Note |
?context | 0x01 | 未実装 - |
?servlet_path | 0x02 | 未実装 - |
?remote_user | 0x03 | |
?auth_type | 0x04 | |
?query_string | 0x05 | |
?jvm_route | 0x06 | |
?ssl_cert | 0x07 | |
?ssl_cipher | 0x08 | |
?ssl_session | 0x09 | |
?req_attribute | 0x0A | Name (the name of the - attribute follows) |
?ssl_key_size | 0x0B | |
are_done | 0xFF | request_terminator |
context
と servlet_path
は現在の C の
- コードではセットされていません。また、ほとんどの Java のコードでも、
- このフィールドで何が送られても無視されます (これらのコードの後に文字列が
- 送られると壊れるものもあります)。
- これがバグなのか、単に未実装なのか、歴史的経緯で残っているコードなのか
- 分かりませんが、コネクションの両側ともで見当たりません。
remote_user
と auth_type
はおそらく
- HTTP レベルの認証を参照していて、リモートユーザのユーザ名と認証に使用した
- タイプ (例 Basic, Digest) についてやり取りします。
query_string
, ssl_cert
,
- ssl_cipher
, ssl_session
- は HTTP と HTTPS の対応する部分を参照します。
jvm_route
はスティッキーセッションのサポート――
- ロードバランスしている複数のサーバ中の特定の Tomcat インスタンスと、
- ユーザのセッションとを紐付ける機能――に使われます。
この基本属性一覧に無いものについては、req_attribute
- コード 0x0A
経由で属性を何個でも送ることができます。
- 属性の名前と値の文字列の組を、それぞれこのコードの直後に送ります。
- 環境変数はこの方法で伝えられます。
最後に属性が全て送信された後に、属性の終端を示す 0xFF
- が送出されます。この信号は属性の一覧の終わりを示すと同時に、リクエスト
- パケットの終端をも示しています。
コンテナがサーバに送り返すことのできるメッセージ:
--AJP13_SEND_BODY_CHUNK := - prefix_code 3 - chunk_length (integer) - chunk *(byte) - - -AJP13_SEND_HEADERS := - prefix_code 4 - http_status_code (integer) - http_status_msg (string) - num_headers (integer) - response_headers *(res_header_name header_value) - -res_header_name := - sc_res_header_name | (string) [see below for how this is parsed] - -sc_res_header_name := 0xA0 (byte) - -header_value := (string) - -AJP13_END_RESPONSE := - prefix_code 5 - reuse (boolean) - - -AJP13_GET_BODY_CHUNK := - prefix_code 6 - requested_length (integer) -
チャンクは基本的にはバイナリデータで、ブラウザに直接送られます。
- -ステータスコードとメッセージが通常の HTTP の通信にはあります (例
- 200
と OK
)。レスポンスヘッダ名は、
- リクエストヘッダ名と同様の方法でエンコードされます。
- コードと文字列の判別方法の詳細に関しては、上記の header_encoding
- を参照してください。
- 一般的なヘッダのコードは :
名前 | コードの値 |
Content-Type | 0xA001 |
Content-Language | 0xA002 |
Content-Length | 0xA003 |
Date | 0xA004 |
Last-Modified | 0xA005 |
Location | 0xA006 |
Set-Cookie | 0xA007 |
Set-Cookie2 | 0xA008 |
Servlet-Engine | 0xA009 |
Status | 0xA00A |
WWW-Authenticate | 0xA00B |
コードかヘッダ文字列の直後には、ヘッダの値がエンコードされます。
- -リクエスト処理サイクルの終了を知らせます。reuse
フラグが真
- (==1)
の場合、現在使用している TCP コネクションは次の新しい
- リクエストに使えるようになります。reuse
が偽 (C のコードでは
- 1 以外の全て) の場合は、コネクションを閉じることになります。
(ボディのサイズが大きすぎて最初のパケットに収まらない場合や、
- リクエストがチャンク転送された場合などには、) コンテナはリクエストからの
- データ読み込み要求をします。サーバ側はそれに対して、最小
- request_length
最大 (8186 (8 Kbytes - 6))
- の範囲で、未転送で残っているリクエストボディの大きさのデータを
- 送り返します。
- ボディにそれ以上データが残っていない場合 (つまりサーブレットが
- ボディの最後を超えて読み込もうとした場合) 、サーバは
- ペイロード長 0 の空パケット(0x12,0x34,0x00,0x00)
- を送り返します。
Apache HTTP 泣若 若吾с 2.3
+茯: | mod_proxy AJP
+泣若≪吾ャ若 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | proxy_ajp_module |
純若鴻<ゃ: | proxy_ajp.c |
≪吾ャ若 mod_proxy
綽荀с
+ Apache JServ Protocol version 1.3
(篁ラ AJP13)
+ 泣若障
AJP13
潟宴
+ mod_proxy
mod_proxy_ajp
+ 泣若腟粋昭綽荀障
絎泣若障с傑純鴻с + 若潟激泣若荳若c + ゃ潟帥若篏c演冴с
+AJP13
潟宴с
+ 茯若潟鴻綵√сゃ綵√c
+ 若潟剛宴障
+ с泣若泣若潟潟 TCP 潟激с潟ч篆<障
+ 純宴с莢激羝泣若潟潟
+ TCP ・膓膓茲違鴻祉鴻潟劫泣ゃ絲障筝ゃ
+ 潟激с潟篏帥障c障
鴻潟激с潟蚊綵泣ゃ + 絎篋障т篏帥障 + ゃ障潟激с割с鴻茵障 + 潟激с割検腴с絎茵潟若膂≧с筝鴻с + 潟激с潟紊c障
+泣若潟潟吾潟激с潟緇潟激с潟倶 + 罨<障:
+潟激с潟劫鴻≪泣ゃ潟堺 (箴
+ HTTP 膈) х軒綵 (箴育絽吾絖贋違潟潟若障)
+ ц拶障荅括完筝荐鴻宴罕с
+ 鴻c絖 (content-length > 0)
違
+ 堺宴翫ャ宴ц拶障
鴻с泣若潟潟紮с障 + сс罨<<祉若吾с泣若祉ャ障
+<祉若吾違若帥宴綵√c障 + 緇菴違鴻潟鴻宴罕с
+潟 XDR 膓絨障紊鴻 + 違障 (箴 4 ゃ≪ゃ<潟с)
+ゃ若: ゃ潟c≪潟c + 腱荅潟с潟c≪潟c障 + XDR 篁罕сc膣眼 sys/socket ゃ + (C ) 蘂сс障 + 純宴若喝冴ゃ荅潟鴻c障 +
+潟 4 ゃ若帥帥ゃ障: byte, boolean, + integer, string с
+1 = true
, 0 = false
с
+ (C ) 吟宴c障翫障
+ 障0 2^16 (32768)
膀蚊医蕭罨< 2 ゃ
+ 主障strlen
罕с
+ 腟腴絖鴻障潟<ゃ潟<潟
+ 吾
+ Java 眼荀絨膣障
+ c宴Servlet 潟潟菴絖茯水冴
+ 合 C 潟若吾泣若菴
+ 絖 \0 絖х腴сC 潟若с潟若
+ 筝ゃ<吾<潟鴻吾с
+ 障
+ '\0' 絖翫C с絖荀潟若
+ c障障紊潟若сcс宴泣ゃ冴紊с泣ゃ冴
+ 8 * 1024 (8K)
с宴絎激
+ 潟潟若ャc障
泣若潟潟冴宴 0x1234
у障障
+ 潟潟泣若宴 AB
(ASCII 潟若 A
+ ASCII 潟若 B) у障障篋ゃ緇ゃ若激 (筝荐綵√)
+ 膓障ゃ若激紊уゃ 2^16 с障
+ 絎潟若с紊уゃ 8K 荐絎障
宴綵√ (Server->Container) | +|||||
Byte | +0 | +1 | +2 | +3 | +4...(n+3) | +
Contents | +0x12 | +0x34 | +若翠 (n) | +Data | +
宴綵√ (Container->Server) | +|||||
Byte | +0 | +1 | +2 | +3 | +4...(n+3) | +
Contents | +A | +B | +若翠 (n) | +Data | +
祉宴сゃ若ゃ<祉若吾潟潟若
+ 障箴紊泣若潟潟鴻c宴с
+ 罔羣宴綵√ (0x1234
宴)
+ с緇膓c鴻潟若障
с泣若罨<<祉若吾泣若潟潟冴с障
+潟若 | +宴 | ++ |
2 | +Forward Request | +鴻泣ゃ緇膓若帥紮 | +
7 | +Shutdown | +с泣若潟潟潟潟腟篋篌 | +
8 | +Ping | +с泣若潟潟九勝ゃ篌 + (祉ャ≪違ゃ潟с若) | +
10 | +CPing | +с泣若潟潟 CPong у喝婚綽膈篌 | +
none | +Data | +泣ゃ (2 ゃ) 膓c若帥 | +
堺祉ャc腆坂鴻激潟筝
+ 激潟鴻絲障帥潟潟絎 Shutdown
+ 絎茵障
Data
宴Forward Request
+ 翫с泣若障
泣若潟潟с泣若罨<帥ゃ<祉若吾 + с障 :
+潟若 | +宴 | ++ |
3 | +Send Body Chunk | +泣若潟潟с泣若 + (障障吟)cc潟 | +
4 | +Send Headers | +泣若潟潟с泣若 (障障吟) + 鴻潟鴻 | +
5 | +End Response | +鴻潟 (ゃ障鴻泣ゃ) 腟篋違 + | +
6 | +Get Body Chunk | +障荵∫翫罧c鴻若帥 + | +
9 | +CPong 綽膈 | +CPing 鴻綽膈 | +
筝荐<祉若吾罕違c障荅括完筝荐荀с +
+ +泣若潟潟檎<祉若吾 + Forward Request 翫 :
++AJP13_FORWARD_REQUEST := + prefix_code (byte) 0x02 = JK_AJP13_FORWARD_REQUEST + method (byte) + protocol (string) + req_uri (string) + remote_addr (string) + remote_host (string) + server_name (string) + server_port (integer) + is_ssl (boolean) + num_headers (integer) + request_headers *(req_header_name req_header_value) + attributes *(attribut_name attribute_value) + request_terminator (byte) OxFF +
request_headers
罨<罕c障 :
+
+req_header_name := + sc_req_header_name | (string) [see below for how this is parsed] + +sc_req_header_name := 0xA0xx (integer) + +req_header_value := (string) +
絮
激с潟с罨<罕障 :
+attribute_name := sc_a_name | (sc_a_req_attribute string) + +attribute_value := (string) + +
c荀 content-length
+ 羈潟潟罨<宴「
+ 荀羆冴с
鴻ゃゃ 2 障篁 Prefix 潟若荅括完 + 筝荐荀с
+ +HTTP <純 1 ゃ潟潟若障 :
+Command Name | Code |
OPTIONS | 1 |
GET | 2 |
HEAD | 3 |
POST | 4 |
PUT | 5 |
DELETE | 6 |
TRACE | 7 |
PROPFIND | 8 |
PROPPATCH | 9 |
MKCOL | 10 |
COPY | 11 |
MOVE | 12 |
LOCK | 13 |
UNLOCK | 14 |
ACL | 15 |
REPORT | 16 |
VERSION-CONTROL | 17 |
CHECKIN | 18 |
CHECKOUT | 19 |
UNCHECKOUT | 20 |
SEARCH | 21 |
MKWORKSPACE | 22 |
UPDATE | 23 |
LABEL | 24 |
MERGE | 25 |
BASELINE_CONTROL | 26 |
MKACTIVITY | 27 |
篁緇 ajp13 若吾с潟с筝荀с篁緇菴遵<純 + 障
+ +障絖с綽荀с鴻罸ゃ + 障
+ +request_headers
罕罨<с :
+ 障 num_headers
潟潟若障
+ 罨< req_header_name
/ req_header_value
+ 腟膓障合筝贋違с潟潟若荵∫障
+ 堺筝荀с<翫絽檎 (絖激
+ c剛) 荵∫障筝
+ sc_req_header_name
筝荀с潟若罨<с
+ (紊ф絖絨絖阪ャ障) :
潟若 | 潟若 | |
accept | 0xA001 | SC_REQ_ACCEPT |
accept-charset | 0xA002 | SC_REQ_ACCEPT_CHARSET + |
accept-encoding | 0xA003 | SC_REQ_ACCEPT_ENCODING + |
accept-language | 0xA004 | SC_REQ_ACCEPT_LANGUAGE + |
authorization | 0xA005 | SC_REQ_AUTHORIZATION | +
connection | 0xA006 | SC_REQ_CONNECTION |
content-type | 0xA007 | SC_REQ_CONTENT_TYPE | +
content-length | 0xA008 | SC_REQ_CONTENT_LENGTH | +
cookie | 0xA009 | SC_REQ_COOKIE |
cookie2 | 0xA00A | SC_REQ_COOKIE2 |
host | 0xA00B | SC_REQ_HOST |
pragma | 0xA00C | SC_REQ_PRAGMA |
referer | 0xA00D | SC_REQ_REFERER |
user-agent | 0xA00E | SC_REQ_USER_AGENT |
茯粋昭 Java 潟若с 2 ゃ贋違莨若帥
+ 違ゃ '0xA0'
с違
+ ゃ潟鴻篏帥障ゃ 0xA0
с翫
+ 2 ゃ絖激茵贋違с茹i茯粋昭帥障
激 0x9999 (==0xA000 -1)
篁ヤ
+ 篁絎筝絨障сc障
content-length
荀с
+ 絖若с違鴻c (箴 POST
+ 鴻) ィ羝c莨若
+ 翫宴ュ鴻若茯粋昭帥障
+ ?
c鴻у障絮 (箴 ?context
)
+ ュ純с絮с腓冴 1 ゃ潟若
+ ゃ絖膓障
+ 筝чс障 (C 潟若絽吾筝筝荀ч
+ с)
+ 激с潟絮с鴻緇劫ャ腟篋潟若障
+ 潟若筝荀с :
Information | Code Value | Note |
?context | 0x01 | 絎茖 + |
?servlet_path | 0x02 | 絎茖 + |
?remote_user | 0x03 | |
?auth_type | 0x04 | |
?query_string | 0x05 | |
?jvm_route | 0x06 | |
?ssl_cert | 0x07 | |
?ssl_cipher | 0x08 | |
?ssl_session | 0x09 | |
?req_attribute | 0x0A | Name (the name of the + attribute follows) |
?ssl_key_size | 0x0B | |
are_done | 0xFF | request_terminator |
context
servlet_path
憜 C
+ 潟若с祉障障祉 Java 潟若с
+ c若т∴障 (潟若緇絖
+ 紕障)
+ 違絎茖罩翫兏腟膩фc潟若
+ 障潟激с潟筝≦眼ц綵障
remote_user
auth_type
+ HTTP 茯荐若с≪若若吟若九茯荐若篏睡
+ 帥ゃ (箴 Basic, Digest) ゃ障
query_string
, ssl_cert
,
+ ssl_cipher
, ssl_session
+ HTTP HTTPS 絲上с障
jvm_route
鴻c若祉激с潟泣若
+ 若潟鴻茲違泣若筝劫 Tomcat ゃ潟鴻帥潟鴻
+ 若吟祉激с潟膣篁罘盾篏帥障
堺絮т荀с<ゃreq_attribute
+ 潟若 0x0A
腟宴ус篏сс障
+ 絮сゃ絖腟潟若翫障
+ 医紊違号т障
緇絮с篆<緇絮с腟腴腓冴 0xFF
+ 冴障篆≦垩絮с筝荀с腟腓冴鴻
+ 宴腟腴腓冴障
潟潟泣若菴с<祉若:
++AJP13_SEND_BODY_CHUNK := + prefix_code 3 + chunk_length (integer) + chunk *(byte) + + +AJP13_SEND_HEADERS := + prefix_code 4 + http_status_code (integer) + http_status_msg (string) + num_headers (integer) + response_headers *(res_header_name header_value) + +res_header_name := + sc_res_header_name | (string) [see below for how this is parsed] + +sc_res_header_name := 0xA0 (byte) + +header_value := (string) + +AJP13_END_RESPONSE := + prefix_code 5 + reuse (boolean) + + +AJP13_GET_BODY_CHUNK := + prefix_code 6 + requested_length (integer) +
c潟堺ゃ若帥с吟贋・障
+ +鴻若帥鴻潟若<祉若吾絽吾 HTTP 篆<障 (箴
+ 200
OK
)鴻潟鴻
+ 鴻罕号с潟潟若障
+ 潟若絖ゅユ号荅括完≪筝荐 header_encoding
+ с
+ 筝潟若 :
潟若 | |
Content-Type | 0xA001 |
Content-Language | 0xA002 |
Content-Length | 0xA003 |
Date | 0xA004 |
Last-Modified | 0xA005 |
Location | 0xA006 |
Set-Cookie | 0xA007 |
Set-Cookie2 | 0xA008 |
Servlet-Engine | 0xA009 |
Status | 0xA00A |
WWW-Authenticate | 0xA00B |
潟若絖翫ゃ潟潟若障
+ +鴻泣ゃ腟篋ャ障reuse
違
+ (==1)
翫憜篏睡 TCP 潟激с潟罨<違
+ 鴻篏帥障reuse
(C 潟若с
+ 1 篁ュ) 翫潟激с潟障
(c泣ゃ冴紊с宴障翫
+ 鴻c潟荵∫翫) 潟潟鴻
+ 若粋粋昭粋羆障泣若眼絲障絨
+ request_length
紊 (8186 (8 Kbytes - 6))
+ 膀蚊с荵∫фc鴻c紊с若帥
+ 菴障
+ c篁ヤ若帥罧c翫 (ゃ障泣若
+ c緇莇茯粋昭翫) 泣若
+ ゃ若 0 腥冴宴(0x12,0x34,0x00,0x00)
+ 菴障
Apache HTTP サーバ バージョン 2.3
-説明: | 負荷分散のための mod_proxy 拡張 |
---|---|
ステータス: | Extension |
モジュール識別子: | proxy_balancer_module |
ソースファイル: | proxy_balancer.c |
互換性: | 2.1 以降 |
本モジュールには mod_proxy
が必要です。
- HTTP
, FTP
と AJP13
- プロトコルのロードバランス機能を持っています。
ですから、 ロードバランスを有効にする場合 mod_proxy
- と mod_proxy_balancer
がサーバに組み込まれて
- いなければいけません。
安全なサーバにするまでプロクシ機能は有効にしないでください。 - オープンプロキシサーバはあなた自身のネットワークにとっても、 - インターネット全体にとっても危険です。
-このモジュールにディレクティブはありません。
-mod_proxy
現時点では 2 種類のロードバランサスケジューラアルゴリズムから選べます。
- リクエスト回数によるもの (訳注: Request Counting)
- と、トラフィック量によるもの (訳注: Weighted Traffic Counting)
- があります。バランサの設定 lbmethod
値で、どちらを使うか指定します。
- 詳細は Proxy
ディレクティブを
- 参照してください。
lbmethod=byrequests
で有効になります。
- このスケジューラの背景にある考え方は、様々なワーカーがそれぞれ、
- 設定されている分担リクエスト数をきちんと受け取れるように、
- リクエストを扱うという考え方です。次のように動作します:
lbfactor は、どの程度ワーカーに仕事を振るか - つまりワーカーのクオータを指します。この値は "分担" - 量を表す正規化された値です。
- -lbstatus は、ワーカーのクオータを満たすために - どのぐらい急ぎで働かなければならないかを指します。
- -ワーカーはロードバランサのメンバで、通常は、 - サポートされるプロトコルのうちの一つを提供しているリモートホストです。 -
- -まず個々のワーカーにワーカークオータを割り振り、どのワーカーが最も急ぎで - 働かなければならないか (lbstatus が最大のもの) を調べます。 - 次に仕事をするようにこのワーカーを選択し、選択したワーカーの lbstatus - を全体に割り振ったぶんだけ差し引きます。ですから、lbstatus の総量は - 結果的に変化しません(*)し、リクエストは期待通りに分散されます。
- -あるワーカーが無効になっても、他のものは正常にスケジュールされ続けます。 -
- -for each worker in workers
- worker lbstatus += worker lbfactor
- total factor += worker lbfactor
- if worker lbstatus > candidate lbstatus
- candidate = worker
-
-candidate lbstatus -= total factor
バランサを次のように設定した場合:
- -worker | -a | -b | -c | -d |
---|---|---|---|---|
lbfactor | -25 | -25 | -25 | -25 |
lbstatus | -0 | -0 | -0 | -0 |
そして b が無効になった場合、次のようなスケジュールが - 行われます。
- -worker | -a | -b | -c | -d |
---|---|---|---|---|
lbstatus | --50 | -0 | -25 | -25 |
lbstatus | --25 | -0 | --25 | -50 |
lbstatus | -0 | -0 | -0 | -0 |
(repeat) |
つまりこのようにスケジュールされます: a c - d a c d a - c d ... 次の点に注意してください:
- -worker | -a | -b | -c | -d |
---|---|---|---|---|
lbfactor | -25 | -25 | -25 | -25 |
この挙動は、次の設定と全く同じになります:
- -worker | -a | -b | -c | -d |
---|---|---|---|---|
lbfactor | -1 | -1 | -1 | -1 |
This is because all values of lbfactor are normalized - with respect to the others. For:
-lbfactor は全て正規化されたもので、 - 他との相対値だからです。次の設定では:
- -worker | -a | -b | -c |
---|---|---|---|
lbfactor | -1 | -4 | -1 |
ワーカー b は、平均して、a と c - の 4 倍の数のリクエストを受け持つことになります。
- -次のような非対称な設定では、こうなると予想されるでしょう:
- -worker | -a | -b |
---|---|---|
lbfactor | -70 | -30 |
lbstatus | --30 | -30 |
lbstatus | -40 | --40 |
lbstatus | -10 | --10 |
lbstatus | --20 | -20 |
lbstatus | --50 | -50 |
lbstatus | -20 | --20 |
lbstatus | --10 | -10 |
lbstatus | --40 | -40 |
lbstatus | -30 | --30 |
lbstatus | -0 | -0 |
(repeat) |
スケジュールは 10 スケジュール後に繰り返され、a 7 回と - b 3 回でまばらに選ばれます。
-lbmethod=bytraffic
で有効になります。
- このスケジューラの背景にある考え方は、Request Counting
- と非常に似ていますが、次の違いがあります:
lbfactor は どれだけのバイト数のトラフィック量を、 - このワーカーに処理してもらいたいか を表します。 - この値も同様に正規化された値で、ワーカー全体のうちでの "分担" - 量を表現しています。リクエスト数を単純に数える代わりに、 - どれだけの転送量を処理したかを数えます。
- -次のようにバランサを設定した場合:
- -worker | -a | -b | -c |
---|---|---|---|
lbfactor | -1 | -2 | -1 |
b には a や c の 2 倍 - 処理してほしいということになります。 - b は 2 倍の I/O を処理するという意味になり、 - 2 倍のリクエスト数を処理するということにはなりません。 - ですからリクエストとレスポンスのサイズが、 - 重み付けと振り分けのアルゴリズムに効いています。
- -このモジュールは mod_status
のサービスを
- 必要とします。
- バランサマネージャを使うと、バランサのメンバーの動的な更新が
- できます。バランサマネージャを使って、バランス係数 (lbfactor)
- を変更したり、メンバーを変更したり、特定のメンバーを
- オフラインモードにしたりできます。
ですから、ロードバランサ管理機能を使いたければ、
- mod_status
と mod_proxy_balancer
- をサーバに組み込まなければなりません。
foo.com ドメインのブラウザからロードバランサ管理機能を
- 使えるようにするには、次のようなコードを httpd.conf
- に追加します。
- <Location /balancer-manager>
- SetHandler balancer-manager
-
- Order Deny,Allow
- Deny from all
- Allow from .foo.com
- </Location>
-
こうすると、http://your.server.name/balancer-manager
- のページ経由で、ウェブブラウザからロードバランサマネージャに
- アクセスできるようになります。
Apache HTTP 泣若 若吾с 2.3
+茯: | 莢桁c mod_proxy ≦宍 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | proxy_balancer_module |
純若鴻<ゃ: | proxy_balancer.c |
篋: | 2.1 篁ラ |
≪吾ャ若 mod_proxy
綽荀с
+ HTTP
, FTP
AJP13
+ 潟若潟号純c障
с 若潟鴻鴻翫 mod_proxy
+ mod_proxy_balancer
泣若腟粋昭障
+ 違障
絎泣若障с傑純鴻с + 若潟激泣若荳若c + ゃ潟帥若篏c演冴с
+憝鴻с 2 腮蕁若潟泣鴻宴吾ャ若≪眼冴吾鴻障
+ 鴻違 (荐恰絵: Request Counting)
+ c (荐恰絵: Weighted Traffic Counting)
+ 障潟泣荐絎 lbmethod
ゃс<篏帥絎障
+ 荅括完 Proxy
cc
+ с
lbmethod=byrequests
ф鴻障
+ 鴻宴吾ャ若鴻罕若若
+ 荐絎鴻違<
+ 鴻宴鴻с罨<篏障:
lbfactor 腮綺若若篁篋 + ゃ障若若若障ゃ "" + 茵罩hゃс
+ +lbstatus 若若若帥羣 + ャу違障
+ +若若潟泣<潟с絽吾 + 泣若潟<筝ゃ箴≪若鴻с +
+ +障若若若若若帥蚊若若ャ + 違 (lbstatus 紊с) 茯帥鴻障 + 罨<篁篋若若御御若若 lbstatus + 篏蚊c吟綏綣障сlbstatus 膩 + 腟紊障(*)鴻緇c障
+ +若若≦鴻c篁罩e幻鴻宴吾ャ若膓障 +
+ +for each worker in workers
+ worker lbstatus += worker lbfactor
+ total factor += worker lbfactor
+ if worker lbstatus > candidate lbstatus
+ candidate = worker
+
+candidate lbstatus -= total factor
潟泣罨<荐絎翫:
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbfactor | +25 | +25 | +25 | +25 |
lbstatus | +0 | +0 | +0 | +0 |
b ≦鴻c翫罨<鴻宴吾ャ若 + 茵障
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbstatus | +-50 | +0 | +25 | +25 |
lbstatus | +-25 | +0 | +-25 | +50 |
lbstatus | +0 | +0 | +0 | +0 |
(repeat) |
ゃ障鴻宴吾ャ若障: a c + d a c d a + c d ... 罨<鴻羈:
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbfactor | +25 | +25 | +25 | +25 |
罨<荐絎障:
+ +worker | +a | +b | +c | +d |
---|---|---|---|---|
lbfactor | +1 | +1 | +1 | +1 |
This is because all values of lbfactor are normalized + with respect to the others. For:
+lbfactor 罩hс + 篁後上ゃс罨<荐絎с:
+ +worker | +a | +b | +c |
---|---|---|---|
lbfactor | +1 | +4 | +1 |
若 b 綛喝a c + 4 違鴻ゃ障
+ +罨<絲丞О荐絎с篋潟с:
+ +worker | +a | +b |
---|---|---|
lbfactor | +70 | +30 |
lbstatus | +-30 | +30 |
lbstatus | +40 | +-40 |
lbstatus | +10 | +-10 |
lbstatus | +-20 | +20 |
lbstatus | +-50 | +50 |
lbstatus | +20 | +-20 |
lbstatus | +-10 | +10 |
lbstatus | +-40 | +40 |
lbstatus | +30 | +-30 |
lbstatus | +0 | +0 |
(repeat) |
鴻宴吾ャ若 10 鴻宴吾ャ若緇膵違菴a 7 + b 3 с障違吾違障
+lbmethod=bytraffic
ф鴻障
+ 鴻宴吾ャ若鴻Request Counting
+ 絽吾篌若障罨<障:
lbfactor ゃ違c + 若若 茵障 + ゃ罕罩hゃс若弱篏<с "" + 茵憗障鴻違膣違篁c + 荵∫違障
+ +罨<潟泣荐絎翫:
+ +worker | +a | +b | +c |
---|---|---|---|
lbfactor | +1 | +2 | +1 |
b a c 2 + 祉障 + b 2 I/O 潟 + 2 鴻違障 + с鴻鴻潟鴻泣ゃ冴 + 推≪眼冴鴻障
+ +≪吾ャ若 mod_status
泣若鴻
+ 綽荀障
+ 潟泣若吾c篏帥潟泣<潟若贋違
+ с障潟泣若吾c篏帥c潟剛 (lbfactor)
+ 紊眼<潟若紊眼劫<潟若
+ ゃ潟≪若с障
с若潟窮∞罘純篏帥違
+ mod_status
mod_proxy_balancer
+ 泣若腟粋昭障違障
foo.com <ゃ潟吟若潟窮∞罘純
+ 篏帥罨<潟若 httpd.conf
+ 菴遵障
+ <Location /balancer-manager>
+ SetHandler balancer-manager
+
+ Order Deny,Allow
+ Deny from all
+ Allow from .foo.com
+ </Location>
+
http://your.server.name/balancer-manager
+ 若悟宴сс吟若潟泣若吾c
+ ≪祉鴻с障
Apache HTTP サーバ バージョン 2.3
-説明: | リクエストの特徴に基づいた環境変数の設定を可能にする |
---|---|
ステータス: | Base |
モジュール識別子: | setenvif_module |
ソースファイル: | mod_setenvif.c |
mod_setenvif
- モジュールは、リクエストのある側面が指定された正規表現
- に合うかどうかによって環境変数を設定する機能を提供します。
- これらの環境変数を使用して、サーバの他の部分がどのような動作をするかを
- 決定することができます。
このモジュールが提供するディレクティブは、
- 設定ファイルに現れる順番に適用されます。
- それを使って、次の例のようにより複雑な設定をすることができます。
- これは、ブラウザが mozilla ではあるけれど、MSIE ではないときに
- netscape
を設定します。
- BrowserMatch ^Mozilla netscape
- BrowserMatch MSIE !netscape
-
説明: | HTTP User-Agent に基づいて環境変数を設定する - |
---|---|
構文: | BrowserMatch regex [!]env-variable[=value]
-[[!]env-variable[=value]] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_setenvif |
BrowserMatch
は
- SetEnvIf
ディレクティブの
- 特例で、User-Agent
HTTP リクエストヘッダに基づいて
- 環境変数を設定します。以下の 2 行の効果は同じになります:
- BrowserMatchNoCase Robot is_a_robot
- SetEnvIfNoCase User-Agent Robot is_a_robot
-
その他の例:
-
- BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
- BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
- BrowserMatch MSIE !javascript
-
説明: | HTTP User-Agent に基づいて大文字小文字を区別せずに -環境変数を設定する |
---|---|
構文: | BrowserMatchNoCase regex [!]env-variable[=value]
- [[!]env-variable[=value]] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_setenvif |
互換性: | Apache 1.2 以降 - (Apache 1.2 ではこのディレクティブはもう用いられていない - mod_browser モジュールにありました) |
BrowserMatchNoCase
ディレクティブは
- 意味的には BrowserMatch
ディレクティブと
- 同じです。ただし、このディレクティブは大文字小文字を区別しない
- マッチングを行ないます。例えば:
- BrowserMatchNoCase mac platform=macintosh
- BrowserMatchNoCase win platform=windows
-
BrowserMatch
ディレクティブと
- BrowserMatchNoCase
ディレクティブは
- SetEnvIf
ディレクティブと
- SetEnvIfNoCase
ディレクティブの
- 特例です。以下の 2 行の効果は同じです:
- BrowserMatchNoCase Robot is_a_robot
- SetEnvIfNoCase User-Agent Robot is_a_robot
-
説明: | リクエストの属性に基づいて環境変数を設定する - |
---|---|
構文: | SetEnvIf attribute
- regex [!]env-variable[=value]
- [[!]env-variable[=value]] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_setenvif |
SetEnvIf
- ディレクティブは、リクエストの属性に基づいて環境変数を定義します。
- 最初の引数で指定できる attribute は以下の三つのどれかです:
Host
,
- User-Agent
, Referer
,
- Accept-Language
です。リクエストヘッダの集合を現すために
- 正規表現を使うこともできます。Remote_Host
-
- リクエストを行なっているクライアントのホスト名 (もしあれば)Remote_Addr
-
- リクエストを行なっているクライアントの IP アドレスServer_Addr
-
- リクエストを受け取ったサーバの IP アドレス
- (2.0.43 以降のみ)Request_Method
-
- 使用されているメソッド名 (GET
, POST
- など)Request_Protocol
-
- リクエストが行なわれたプロトコルの名前とバージョン
- (例えば、"HTTP/0.9", "HTTP/1.1" など。)Request_URI
-
- URL のスキームとホストの後の部分SetEnvIf
ディレクティブが以前のマッチの結果を
-使うことができるようになります。この方法のテストでは前の部分にある
-SetEnvIf[NoCase]
の結果のみを使用可能です。「前」とは、
-より広い範囲に対して定義されている (サーバ全体のように) か、現在のディレクティブの
-範囲でより前の部分で定義されているか、ということです。
-環境変数である可能性は、リクエストの特性に対するマッチが存在せず、
-attribute に正規表現が使われなかったときにのみ考慮されます。二つ目の引数 (regex) は Perl 互換の正規表現です。 -これは POSIX.2 の egrep 形式の正規表現と似ています。regex が -attribute にマッチする場合は、残りの引数が評価されます。
- -残りの引数は設定する変数の名前で、設定される値を指定することもできます。 -これは、
- -varname
!varname
varname=value
のどれかの形式になります。
- -最初の形式では、値は "1" に設定されます。
- 二つ目はもし値が定義されていればそれを取り除きます。
- 三つ目は変数を value
の与えられた値に設定します。
- 2.0.51 以降では、regex 内に $1
..$9
- が存在すればそれを認識し、regex の対応する丸括弧で囲まれた部分で
- 置換します。
-
- SetEnvIf Request_URI "\.gif$" object_is_image=gif
- SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
- SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
- :
- SetEnvIf Referer www\.mydomain\.com intra_site_referral
- :
- SetEnvIf object_is_image xbm XBIT_PROCESSING=1
- :
- SetEnvIf ^TS* ^[a-z].* HAVE_TS
-
初めの三つはリクエストが画像であるときに環境変数
- object_is_image
を設定します。四つ目は
- 参照元のページがウェブサイト www.mydomain.com
にあるときに
- intra_site_referral
を設定します。
最後の例は、リクエストに "TS" で始まり、値が集合 [a-z] のどれかで
- 始まるヘッダがあるときに HAVE_TS
を設定します。
説明: | リクエストの属性に基づいて大文字小文字を区別せずに環境変数を設定する |
---|---|
構文: | SetEnvIfNoCase attribute regex
- [!]env-variable[=value]
- [[!]env-variable[=value]] ... |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | FileInfo |
ステータス: | Base |
モジュール: | mod_setenvif |
互換性: | Apache 1.3 以降 |
SetEnvIfNoCase
は意味的には
- SetEnvIf
ディレクティブと
- 同じです。違いは、正規表現のマッチングが大文字小文字を区別しないで
- 行なわれることです。例えば:
- SetEnvIfNoCase Host Apache\.Org site=apache
-
これは HTTP リクエストヘッダにフィールド Host:
が
- あり、その値が Apache.Org
や apache.org
、
- その他の大文字小文字の組み合わせであったときに site
- 環境変数を "apache
" に設定します。
Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻劫彰冴ャ医紊違荐絎純 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | setenvif_module |
純若鴻<ゃ: | mod_setenvif.c |
mod_setenvif
+ ≪吾ャ若鴻顔≪絎罩h頫
+ c医紊違荐絎罘純箴障
+ 医紊違篏睡泣若篁篏
+ 羆阪с障
≪吾ャ若箴cc
+ 荐絎<ゃ憗障
+ 篏帥c罨<箴茲荐絎с障
+ 吟 mozilla сMSIE с
+ netscape
荐絎障
+ BrowserMatch ^Mozilla netscape
+ BrowserMatch MSIE !netscape
+
茯: | HTTP User-Agent 冴ャ医紊違荐絎 + |
---|---|
罕: | BrowserMatch regex [!]env-variable[=value]
+[[!]env-variable[=value]] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_setenvif |
BrowserMatch
+ SetEnvIf
cc
+ 剛сUser-Agent
HTTP 鴻冴ャ
+ 医紊違荐絎障篁ヤ 2 茵号障:
+ BrowserMatchNoCase Robot is_a_robot
+ SetEnvIfNoCase User-Agent Robot is_a_robot
+
篁箴:
+
+ BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
+ BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
+ BrowserMatch MSIE !javascript
+
茯: | HTTP User-Agent 冴ャ紊ф絖絨絖阪ャ +医紊違荐絎 |
---|---|
罕: | BrowserMatchNoCase regex [!]env-variable[=value]
+ [[!]env-variable[=value]] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_setenvif |
篋: | Apache 1.2 篁ラ + (Apache 1.2 сcc + mod_browser ≪吾ャ若障) |
BrowserMatchNoCase
cc
+ 括 BrowserMatch
cc
+ сcc紊ф絖絨絖阪ャ
+ 潟違茵障箴:
+ BrowserMatchNoCase mac platform=macintosh
+ BrowserMatchNoCase win platform=windows
+
BrowserMatch
cc
+ BrowserMatchNoCase
cc
+ SetEnvIf
cc
+ SetEnvIfNoCase
cc
+ 剛с篁ヤ 2 茵号с:
+ BrowserMatchNoCase Robot is_a_robot
+ SetEnvIfNoCase User-Agent Robot is_a_robot
+
茯: | 鴻絮с冴ャ医紊違荐絎 + |
---|---|
罕: | SetEnvIf attribute
+ regex [!]env-variable[=value]
+ [[!]env-variable[=value]] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_setenvif |
SetEnvIf
+ cc鴻絮с冴ャ医紊違絎臂障
+ 綣違ф絎с attribute 篁ヤ筝ゃс:
Host
,
+ User-Agent
, Referer
,
+ Accept-Language
с鴻憗
+ 罩h頫憗篏帥с障Remote_Host
-
+ 鴻茵cゃ≪潟鴻 ()Remote_Addr
-
+ 鴻茵cゃ≪潟 IP ≪Server_Addr
-
+ 鴻c泣若 IP ≪
+ (2.0.43 篁ラ)Request_Method
-
+ 篏睡<純 (GET
, POST
+ )Request_Protocol
-
+ 鴻茵潟若吾с
+ (箴"HTTP/0.9", "HTTP/1.1" )Request_URI
-
+ URL 鴻若鴻緇SetEnvIf
cc篁ュ腟
+篏帥с障号鴻с
+SetEnvIf[NoCase]
腟帥篏睡純с
+綺膀蚊絲障絎臂 (泣若篏) 憜cc
+膀蚊су臂с
+医紊違с醇с鴻号с絲障絖
+attribute 罩h頫憗篏帥c粋障篋ょ綣 (regex) Perl 篋罩h頫с + POSIX.2 egrep 綵√罩h頫憗篌若障regex +attribute 翫罧綣違荅箴<障
+ +罧綣違荐絎紊違с荐絎ゃ絎с障 +
+ +varname
!varname
varname=value
綵√障
+ +綵√сゃ "1" 荐絎障
+ 篋ょゃ絎臂違ゃ障
+ 筝ょ紊違 value
筝ゃ荐絎障
+ 2.0.51 篁ラсregex $1
..$9
+ 絖違茯茘regex 絲上筝御綣су蚊障
+ 臀障
+
+ SetEnvIf Request_URI "\.gif$" object_is_image=gif
+ SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
+ SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
+ :
+ SetEnvIf Referer www\.mydomain\.com intra_site_referral
+ :
+ SetEnvIf object_is_image xbm XBIT_PROCESSING=1
+ :
+ SetEnvIf ^TS* ^[a-z].* HAVE_TS
+
筝ゃ鴻糸с医紊
+ object_is_image
荐絎障ょ
+ у若吾с泣ゃ www.mydomain.com
+ intra_site_referral
荐絎障
緇箴鴻 "TS" у障ゃ [a-z]
+ 紮障 HAVE_TS
荐絎障
茯: | 鴻絮с冴ャ紊ф絖絨絖阪ャ医紊違荐絎 |
---|---|
罕: | SetEnvIfNoCase attribute regex
+ [!]env-variable[=value]
+ [[!]env-variable[=value]] ... |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | FileInfo |
鴻若帥: | Base |
≪吾ャ若: | mod_setenvif |
篋: | Apache 1.3 篁ラ |
SetEnvIfNoCase
括
+ SetEnvIf
cc
+ с罩h頫憗潟違紊ф絖絨絖阪ャ
+ 茵с箴:
+ SetEnvIfNoCase Host Apache\.Org site=apache
+
HTTP 鴻c若 Host:
+ ゃ Apache.Org
apache.org
+ 篁紊ф絖絨絖腟水сc site
+ 医紊違 "apache
" 荐絎障
Apache HTTP サーバ バージョン 2.3
-説明: | 起動時や再起動時に実行コードとモジュールをサーバにロードする - |
---|---|
ステータス: | Extension |
モジュール識別子: | so_module |
ソースファイル: | mod_so.c |
互換性: | このモジュールは Window では (常に含まれている) Base -モジュールです |
いくつかのオペレーティングシステムでは、サーバの再コンパイルをする代わりに、 - このモジュールを使用して - 動的共有オブジェクト - (DSO) 機構により、実行時に Apache にモジュールを読み込ませることが - できます。
- -Unix 上では、読み込まれるコードは通常は共有オブジェクトファイル
- (普通 .so
という拡張子が付いています) からです。
- Windows 上ではこのモジュールの拡張子は .so
か .dll
- です。
Apache 1.3 のモジュールを直接 Apache 2.0 で使うことはできません - ― モジュールは Apache 2.0 用に動的にロードされるか、 - 直接組み込まれるために修正されなければなりません。
-Apache 1.3.15 と 2.0 とで Windows のモジュール名の形式は変更されました - ― モジュールは mod_foo.so という名前になりました。
- -まだ mod_so で ApacheModuleFoo.dll という名前のモジュールも - ロードされますが、新しい名前の付け方を使う方が好まれます。モジュールを - 2.0 用に移植しているのであれば、2.0 の習慣に合うように名前を - 修正してください。
Apache のモジュール API は UNIX と Windows 間では変更されていません。 - 多くのモジュールは全く変更なし、もしくは簡単な変更により Windows - で実行できるようになります。ただし、それ以外の Windows には無い Unix - アーキテクチャーの機能に依存したモジュールは動作しません。
- -モジュールが実際に動作するときは、
- 二つの方法のどちらかでサーバに追加することができます。まず、Unix
- と同様にサーバにコンパイルして組み込むことができます。Windows
- 用の Apache は Unix 用の Apache にある Configure
- プログラムがありませんので、モジュールのソースファイルを
- ApacheCore プロジェクトファイルに追加し、シンボルを
- os\win32\modules.c
ファイルに追加する必要があります。
二つ目はモジュールを DLL としてコンパイルする方法です。
- DLL は共有ライブラリで、実行時に
-
- ディレクティブによりサーバに読み込むことができます。これらのモジュール
- DLL はそのまま配布することが可能で、サーバを再コンパイルすることなく、Windows
- 用の Apache のすべてのインストールで実行することができます。LoadModule
モジュール DLL を作成するためには、
- モジュールの作成に小さな変更を行なう必要があります。
- つまり、モジュールのレコード (これは後で作成されます。
- 以下を参照してください) が DLL からエクスポートされなければなりません。
- これを行なうには、AP_MODULE_DECLARE_DATA
(Apache
- のヘッダファイルで定義されています) をモジュールのモジュールレコード
- 定義の部分に追加してください。たとえば、モジュールに
- module foo_module;
-
があるとすると、それを次のもので置き換えてください。
-
- module AP_MODULE_DECLARE_DATA foo_module;
-
Unix 上でもこのモジュールを
- 変更無しで使い続けられるように、このマクロは Windows
- 上でのみ効力を持ちます。.DEF
- ファイルの方を良く知っているという場合は、
- 代わりにそれを使ってモジュールレコードを
- エクスポートすることもできます。
さあ、あなたのモジュールの DLL を作成しましょう。これを、 - libhttpd.lib 共有ライブラリがコンパイルされたときに作成された - ibhttpd.lib エクスポートライブラリとリンクしてください。この時に、 - Apache のヘッダファイルが正しい位置にあるように、 - コンパイラの設定を変える必要があるかもしれません。 - このライブラリはサーバルートの modules ディレクトリにあります。 - ビルド環境が正しく設定されるように、既存のモジュール用の .dsp を - 取ってくるのが一番良いでしょう。もしくは、あなたの .dsp と - コンパイラとリンクのオプションを比較する、というものでも良いです。
- -これで DLL 版のモジュールが作成されているはずです。
- サーバルートの modules
- ディレクトリにモジュールを置いて、
-
- ディレクティブを使って読み込んでください。LoadModule
説明: | 指定されたオブジェクトファイルやライブラリをリンクする |
---|---|
構文: | LoadFile filename [filename] ... |
コンテキスト: | サーバ設定ファイル |
ステータス: | Extension |
モジュール: | mod_so |
LoadFile ディレクティブは、サーバが起動されたときや再起動されたときに、 - 指定されたオブジェクトファイルやライブラリをリンクします。 - これはモジュールが動作するために必要になるかもしれない追加の - コードを読み込むために使用されます。Filename は絶対パスか、ServerRoot からの相対パスです。
- -例:
- -LoadFile libexec/libxmlparse.so
説明: | オブジェクトファイルやライブラリをリンクし、使用モジュールの -リストに追加する |
---|---|
構文: | LoadModule module filename |
コンテキスト: | サーバ設定ファイル |
ステータス: | Extension |
モジュール: | mod_so |
LoadModule ディレクティブは filename
- というオブジェクトファイルおよびライブラリをリンクし、module
- という名前のモジュールの構造をアクティブなモジュールのリストに追加します。
- Module はファイル中の module
- 型の外部変数の名前で、モジュールのドキュメントに
- モジュール識別子として書かれているものです。例 :
- LoadModule status_module modules/mod_status.so
-
これは ServerRoot の modules サブディレクトリから指定された名前の - モジュールをロードします。
- -Apache HTTP 泣若 若吾с 2.3
+茯: | 莎桁莎桁絎茵潟若≪吾ャ若泣若若 + |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | so_module |
純若鴻<ゃ: | mod_so.c |
篋: | ≪吾ャ若 Window с (絽吾障) Base +≪吾ャ若с |
ゃ若c潟違激鴻с泣若潟潟ゃ篁c + ≪吾ャ若篏睡 + 掩吾с + (DSO) 罘罕絎茵 Apache ≪吾ャ若茯粋昭障 + с障
+ +Unix 筝с茯粋昭障潟若絽吾掩吾с<ゃ
+ ( .so
≦宍絖篁障) с
+ Windows 筝с≪吾ャ若≦宍絖 .so
.dll
+ с
Apache 1.3 ≪吾ャ若贋・ Apache 2.0 т戎с障 + ≪吾ャ若 Apache 2.0 若 + 贋・腟粋昭障篆罩c違障
+Apache 1.3.15 2.0 Windows ≪吾ャ若綵√紊眼障 + ≪吾ャ若 mod_foo.so 障
+ +障 mod_so ApacheModuleFoo.dll ≪吾ャ若 + 若障違篁鴻篏帥鴻絅純障障≪吾ャ若 + 2.0 腱紙с違2.0 膺c + 篆罩c
Apache ≪吾ャ若 API UNIX Windows с紊眼障 + 紊≪吾ャ若鎀眼膂≦紊眼 Windows + у茵с障篁ュ Windows < Unix + ≪若c若罘純箴絖≪吾ャ若篏障
+ +≪吾ャ若絎篏
+ 篋ゃ号<с泣若菴遵с障障Unix
+ 罕泣若潟潟ゃ腟粋昭с障Windows
+ Apache Unix Apache Configure
+ 違障с≪吾ャ若純若鴻<ゃ
+ ApacheCore 吾с<ゃ菴遵激潟
+ os\win32\modules.c
<ゃ菴遵綽荀障
篋ょ≪吾ャ若 DLL 潟潟ゃ号с
+ DLL 掩ゃс絎茵
+
+ cc泣若茯粋昭с障≪吾ャ若
+ DLL 障冗絽純с泣若潟潟ゃWindows
+ Apache 鴻ゃ潟鴻若у茵с障LoadModule
≪吾ャ若 DLL 篏
+ ≪吾ャ若篏絨紊眼茵綽荀障
+ ゃ障≪吾ャ若潟若 (緇т障
+ 篁ヤс) DLL 鴻若違障
+ 茵AP_MODULE_DECLARE_DATA
(Apache
+ <ゃу臂障) ≪吾ャ若≪吾ャ若潟若
+ 絎臂菴遵違≪吾ャ若
+ module foo_module;
+
罨<х舟
+
+ module AP_MODULE_DECLARE_DATA foo_module;
+
Unix 筝с≪吾ャ若
+ 紊雁<т戎膓 Windows
+ 筝с水劫<障.DEF
+ <ゃ鴻ャc翫
+ 篁c篏帥c≪吾ャ若潟若
+ 鴻若с障
≪吾ャ若 DLL 篏障 + libhttpd.lib 掩ゃ潟潟ゃ篏 + ibhttpd.lib 鴻若ゃ潟 + Apache <ゃ罩c篏臀 + 潟潟ゃ荐絎紊綽荀障 + ゃ泣若若 modules c障 + 医罩c頥絎√≪吾ャ若 .dsp + c筝с .dsp + 潟潟ゃ潟激с潟罸莠сс
+ + DLL ≪吾ャ若篏с
+ 泣若若 modules
+ c≪吾ャ若臀
+
+ cc篏帥c茯粋昭сLoadModule
茯: | 絎吾с<ゃゃ潟 |
---|---|
罕: | LoadFile filename [filename] ... |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Extension |
≪吾ャ若: | mod_so |
LoadFile cc泣若莎桁莎桁 + 絎吾с<ゃゃ潟障 + ≪吾ャ若篏綽荀菴遵 + 潟若茯粋昭篏睡障Filename 腟九障鴻ServerRoot 後障鴻с
+ +箴:
+ +LoadFile libexec/libxmlparse.so
茯: | 吾с<ゃゃ潟篏睡≪吾ャ若 +鴻菴遵 |
---|---|
罕: | LoadModule module filename |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | Extension |
≪吾ャ若: | mod_so |
LoadModule cc filename
+ 吾с<ゃ潟ゃ潟module
+ ≪吾ャ若罕≪c≪吾ャ若鴻菴遵障
+ Module <ゃ筝 module
+ 紊紊違с≪吾ャ若ャ<潟
+ ≪吾ャ若茘ュ吾с箴 :
+ LoadModule status_module modules/mod_status.so
+
ServerRoot modules 泣c絎 + ≪吾ャ若若障
+ +Apache HTTP サーバ バージョン 2.3
-説明: | ユーザが入力したであろう間違った URL を、 -大文字小文字の区別を無視することと一つ以下の綴り間違いを許容することで -修正を試みる |
---|---|
ステータス: | Extension |
モジュール識別子: | speling_module |
ソースファイル: | mod_speling.c |
リクエストの綴りが間違っていたり、 - 大文字小文字が違っていたりするために、Apache のコアサーバが - ドキュメントへのリクエストへの応答を正しく提供できないことがあります。 - このモジュールは、他のすべてのモジュールがあきらめた後であったとしても、 - リクエストに合うドキュメントを見つけようとすることによりこの問題の - 解決を試みます。このモジュールはリクエストされたディレクトリにある - それぞれのドキュメントの名前と、リクエストされたドキュメントの名前とを - 大文字小文字の区別を無視し、一文字までの - 綴りの間違い (文字の挿入/省略/隣合う文字の置換、間違った文字) - を許可して比較することにより、目的を達成しようとします。 - この方法でリクエストに合うドキュメントの一覧が作成されます。
- -ディレクトリをスキャンした後に、
- -説明: | spelling モジュールを使用するようにする |
---|---|
構文: | CheckSpelling on|off |
デフォルト: | CheckSpelling Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Options |
ステータス: | Extension |
モジュール: | mod_speling |
互換性: | CheckSpelling は Apache 1.1 では別配布のモジュールで、
-大文字小文字の間違いのみの機能でした。Apache 1.3 で Apache の配布に
-含まれるようになりました。Apache 1.3.2 より前では CheckSpelling
-ディレクティブは「サーバ」と「バーチャルホスト」コンテキストでのみ
-使用可能でした |
このディレクティブは綴り用のモジュールを使用するかどうかを - 決めます。使用時には、以下のことを覚えておいてください
- -http://my.host/~apahce/
のように)
- を訂正することはできません。
- 訂正できるのはファイル名とディレクトリ名だけです。<Location /status>
- はネゴシエーションの結果のファイル "/stats.html
"
- として間違って扱われるかもしれません。DAV が有効なディレクトリでは
- mod_speling
は有効にしないでください。
- 新しく作成したリソース名を既に存在するファイル名に「修正」しようとする、
- 例えば、新規ドキュメント doc43.html
が既に存在する
- doc34.html
にリダイレクトされて、
- 期待とは違う挙動になるからです。
Apache HTTP 泣若 若吾с 2.3
+茯: | 若吟ュсc URL +紊ф絖絨絖阪ャ∴筝や札筝膓眼荐怨鴻 +篆罩c荅帥 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | speling_module |
純若鴻<ゃ: | mod_speling.c |
鴻膓眼c + 紊ф絖絨絖cApache 潟≪泣若 + ャ<潟吾鴻吾綽膈罩c箴с障 + ≪吾ャ若篁鴻≪吾ャ若緇сc + 鴻ャ<潟荀ゃ馹 + 茹f浦荅帥障≪吾ャ若鴻c + ャ<潟鴻ャ<潟 + 紊ф絖絨絖阪ャ∴筝絖障с + 膓眼 (絖水//e絖臀c絖) + 荐怨罸莠障 + 号с鴻ャ<潟筝荀с篏障
+ +c鴻c潟緇
+ +茯: | spelling ≪吾ャ若篏睡 |
---|---|
罕: | CheckSpelling on|off |
: | CheckSpelling Off |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | Options |
鴻若帥: | Extension |
≪吾ャ若: | mod_speling |
篋: | CheckSpelling Apache 1.1 сラ絽≪吾ャ若с
+紊ф絖絨絖帥罘純сApache 1.3 Apache 絽
+障障Apache 1.3.2 с CheckSpelling
+cc泣若若c鴻潟潟鴻с
+篏睡純с |
cc膓眼≪吾ャ若篏睡 + 羆冴障篏睡篁ヤ荀
+ +http://my.host/~apahce/
)
+ 荐罩cс障
+ 荐罩cс<ゃcс<Location /status>
+ 眼激若激с潟腟<ゃ "/stats.html
"
+ c宴障DAV 鴻cс
+ mod_speling
鴻с
+ 違鋎純若劫≪絖<ゃ篆罩c
+ 箴違域ャ<潟 doc43.html
≪絖
+ doc34.html
ゃ
+ 緇с
Apache HTTP サーバ バージョン 2.3
-説明: | サーバの活動状況と性能に関する情報を提供する |
---|---|
ステータス: | Base |
モジュール識別子: | status_module |
ソースファイル: | mod_status.c |
この Status モジュールによりサーバ管理者はサーバがどのくらい - の性能で動作しているかを知ることができるようになります。 - 現時点でのサーバの統計情報を読みやすい形式で現した HTML ページが - 表示されます。必要であれば、このページは自動的にリフレッシュさせる - こともできます (互換性のあるブラウザを使用している場合)。 - 別に、現時点でのサーバの状態を単純な機械読み取り可能なリストで - 現すページもあります。
- -表示される情報は:
- -"(*)" の付いている情報を表示するためにはコンパイル時のオプション - を使用する必要があります。これらの統計情報を得るために必要な - コードは標準の Apache には含まれていません。
-foo.com ドメインからのブラウザのみに対して
- ステータスの報告を使用可能にするには
- 以下のコードを httpd.conf
設定ファイルに追加します
- <Location /server-status>
- SetHandler server-status
-
- Order Deny,Allow
- Deny from all
- Allow from .foo.com
- </Location>
-
これで、サーバの統計情報をウェブブラウザを使って
- http://your.server.name/server-status
をアクセスすることにより
- 知ることができるようになります。
ブラウザが「リフレシュ」機能をサポートしていれば、ステータスページを
- 自動的に更新するようにできます。N 秒毎に更新させるためには
- http://your.server.name/server-status?refresh=N
- というページをアクセスしてください。
http://your.server.name/server-status?auto
を
- アクセスすることにより、ステータスファイルの機械読み取り可能なバージョンを
- 得ることができます。これは自動的に実行されるときに便利です。
- Apache の /support
ディレクトリにある
- Perl プログラム log_server_status
を見てください。
mod_status
がサーバに組み込まれている
- 場合、ハンドラの機能はディレクトリ毎のファイル
- (すなわち、.htaccess
) も含むすべての
- 設定ファイルで使用可能になることには注意をしておく必要があります。
- これは、サイトによってはセキュリティに関する望ましくない結果を
- もたらすことがあるかもしれません。
- Apache HTTP 泣若 若吾с 2.3
+茯: | 泣若羇糸倶ц純≪宴箴 |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | status_module |
純若鴻<ゃ: | mod_status.c |
Status ≪吾ャ若泣若膊∞泣若 + ц純у篏ャс障 + 憝鴻с泣若腟沿宴茯帥綵√х憗 HTML 若吾 + 茵腓冴障綽荀с違若吾激ャ + с障 (篋с吟篏睡翫) + ャ憝鴻с泣若倶膣罘罌域水純鴻 + 憗若吾障
+ +茵腓冴宴:
+ +"(*)" 篁宴茵腓冴潟潟ゃ激с + 篏睡綽荀障腟沿宴緇綽荀 + 潟若罔羣 Apache 障障
+foo.com <ゃ潟吟帥絲障
+ 鴻若帥鴻怨篏睡純
+ 篁ヤ潟若 httpd.conf
荐絎<ゃ菴遵障
+ <Location /server-status>
+ SetHandler server-status
+
+ Order Deny,Allow
+ Deny from all
+ Allow from .foo.com
+ </Location>
+
с泣若腟沿宴с吟篏帥c
+ http://your.server.name/server-status
≪祉鴻
+ ャс障
吟激ャ罘純泣若違鴻若帥鴻若吾
+ 贋違с障N 腱罸贋違
+ http://your.server.name/server-status?refresh=N
+ 若吾≪祉鴻
http://your.server.name/server-status?auto
+ ≪祉鴻鴻若帥鴻<ゃ罘罌域水純若吾с潟
+ 緇с障絎茵箴水с
+ Apache /support
c
+ Perl 違 log_server_status
荀
mod_status
泣若腟粋昭障
+ 翫潟罘純c罸<ゃ
+ (.htaccess
) 鴻
+ 荐絎<ゃт戎純羈鏆荀障
+ 泣ゃc祉ャc≪障腟
+ 障
+ Apache HTTP サーバ バージョン 2.3
-説明: | 指定されたユーザとグループで CGI スクリプトを実行する |
---|---|
ステータス: | Extension |
モジュール識別子: | suexec_module |
ソースファイル: | mod_suexec.c |
互換性: | Apache 2.0 以降で使用可能 |
このモジュールと suexec
サポートプログラム
- により、CGI スクリプトが指定されたユーザとグループで
- 実行されるようにできます。
説明: | CGI プログラムのユーザパーミッション、グループパーミッション |
---|---|
構文: | SuexecUserGroup User Group |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_suexec |
互換性: | SuexecUserGroup は 2.0 以降でのみ使用可能。 |
SuexecUserGroup
ディレクティブは CGI プログラム
- が実行されるユーザとグループを指定できるようにします。CGI 以外の
- リクエストは User ディレクティブで指定されたユーザのままで処理されます。
- このディレクティブは Apache 1.3 における VirtualHosts の中で
- User ディレクティブと Group ディレクティブを使う用法の代わりになります。
-
- SuexecUserGroup nobody nogroup
-
Apache HTTP 泣若 若吾с 2.3
+茯: | 絎若吟違若 CGI 鴻絎茵 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | suexec_module |
純若鴻<ゃ: | mod_suexec.c |
篋: | Apache 2.0 篁ラт戎 |
≪吾ャ若 suexec
泣若違
+ CGI 鴻絎若吟違若
+ 絎茵с障
茯: | CGI 違若吟若激с潟違若若激с |
---|---|
罕: | SuexecUserGroup User Group |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Extension |
≪吾ャ若: | mod_suexec |
篋: | SuexecUserGroup 2.0 篁ラс推戎純 |
SuexecUserGroup
cc CGI 違
+ 絎茵若吟違若絎с障CGI 篁ュ
+ 鴻 User ccф絎若吟障障у障
+ cc Apache 1.3 VirtualHosts 筝
+ User cc Group cc篏帥羈篁c障
+
+ SuexecUserGroup nobody nogroup
+
Apache HTTP サーバ バージョン 2.3
-説明: | それぞれのリクエストに対する一意な識別子の入った環境変数を -提供する |
---|---|
ステータス: | Extension |
モジュール識別子: | unique_id_module |
ソースファイル: | mod_unique_id.c |
このモジュールは非常に制限された条件下で、
- それぞれのリクエストに「すべて」のリクエストに対して
- 一意に決まることが保証されている魔法のトークンを提供します。
- この一意な識別子は、適切に設定されたクラスタでは複数の
- マシンの間でさえも一意になります。それぞれのリクエストに対して環境変数
- UNIQUE_ID
に識別子が設定されます。
- 一意な識別子が便利な理由はいろいろありますが、
- このドキュメントの目的からは外れるため、ここでは説明しません。
まずはじめに、Apache サーバが Unix - マシンでどのように動作をするかを簡単に説明します。 - この機能は現時点では Windows NT ではサポートされていません。 - Unix マシンでは Apache はいくつかの子プロセスを作成し、 - その子プロセスが一つずつリクエストを処理します。それぞれの子プロセスは、 - 生存期間中に複数のリクエストを扱うことができます。 - この議論では子プロセス間では一切データを共有しないことにします。 - 以後、この子プロセスのことを httpd プロセス と呼びます。
- -あなたのウェブサイトにはあなたが管理するいくつかのマシンがあるとします。 - それらをまとめてクラスタと呼ぶことにします。それぞれのマシンは複数の - Apache を実行することもできます。 - これらすべてをまとめたものが「宇宙」であると考えられます。 - いくつかの仮定の下で、クラスタのマシン間がたくさん通信をすることなく、 - この宇宙の中でそれぞれのリクエストに一意な識別子を生成できることを示します。 -
- -クラスタにあるマシンは以下の要求を見たさなければなりません。 - (マシンが一つだけだとしても、NTP で時計を合わせる方が良いです。)
- -オペレーティングシステムにおいては、pid (プロセス ID) が - 32 ビットの範囲内であることを仮定します。オペレーティングシステムの - pid が 32 ビットを超える場合は、簡単な修正ではありますが、 - コードを変更する必要があります。
- -これらの仮定が満たされていると、ある時点において、 - クラスタ内のどのマシンのどの httpd - プロセスでも、一意に同定することができます。これはマシンの IP - アドレスと httpd プロセスの pid で十分に行なうことができます。 - ですから、リクエストに一意な識別子を生成するためには、 - 時刻を区別する必要があるだけです。
- -時刻を区別するために、Unix のタイムスタンプ (UTC の 1970 年 - 1 月 1 日からの秒数) と、16 ビットのカウンタを使います。 - タイムスタンプの粒度は一秒ですので、一秒間の 65536 - までの値を表現するためにカウンタを使用します。四つの値 - ( ip_addr, pid, time_stamp, counter ) で各 httpd - プロセスで一秒の間に 65536 リクエストを数えあげることができます。 - 時間が経つと pid が再利用されるという問題がありますが、 - この問題を解決するためにカウンタが使用されます。
- -httpd の子プロセスが作成されると、カウンタは - (その時点のマイクロ秒 ÷ 10) modulo 65536 で初期化されます - (この式はいくつかのシステムにある、マイクロ秒の - タイマの下位ビットが異なるという問題を解決するために選ばれました)。 - 一意な識別子が生成されたとき、使用されるタイムスタンプは - ウェブサーバにリクエストが到着した時刻になります。 - カウンタは識別子が生成されるたびに増加します - (あふれた場合は 0 に戻ります)。
- -カーネルはプロセスをフォークすると、それぞれのプロセスのために - pid を生成します。pid は繰り返されることが許可されています - (pid の値は多くの Unix では 16 ビットですが、新しいシステムでは - 32 ビットに拡張されています)。 - ですから、ある程度の時間が経過すると同じ pid が再び使用されます。 - しかし、一秒内に再使用されなければ、 - 四つの値の一意性は保たれます。つまり、我々はシステムが一秒間 - に 65536 個のプロセスを起動しないと仮定しています (いくつかの Unix - では 32768 プロセスですが、それですらほとんどあり得ないでしょう)。
- -何らかの理由で、同じ時刻が繰り返されたとしましょう。 - つまり、システムの時計が狂っていて、もう一度過去の時刻になってしまった - (もしくは進みすぎていたときに、 - 正しい時刻に戻したために再び将来の時刻になってしまった) とします。 - この場合、pid とタイムスタンプが再使用されることが簡単に示されます。 - カウンタ初期化用の関数は、この問題の回避を手助けしようと選択されています。 - 本当はカウンタの初期化をするためにランダムな数字を使いたいのですが、 - ほとんどのシステムでは簡単に使用できる数は無いことに注意してください - (すなわち、rand ()は使えません。rand () には seed - を与える必要があり、seed には時刻を使えません。一秒単位では、 - その時刻はすでに繰り返されているからです)。 - これは、完璧な対策ではありません。
- -この対策はどのくらい効果があるでしょうか? - ここでは、マシン群の中の一つは最大で一秒に 500 - リクエストを扱うと仮定します (これを書いている時点では妥当な上限です。 - 通常システムがすることは静的なファイルを取りだすだけではありませんから)。 - それを行なうために、そのマシンは並行して来るクライアントの数に - 応じた数の子プロセスを要求します。 - しかしながら、悲観的に考えて、一つの子プロセスが一秒に 500 - リクエストを扱えるとします。そうすると、(一秒の精度において) - 時刻が同じ時を繰り返すと、この子プロセスがカウンタの値を再び使い、 - 一意性が壊れる可能性が 1.5% あります。 - これは非常に悲観的な例で、実世界の値では、ほとんど起こりそうにありません。 - それでもこれが起こる可能性のあるようなシステムなら、 - (プログラムコードを編集して) - カウンタを 32 ビットにするのが良いでしょう。 -
- -サマータイムにより時計が「戻される」ことを気にしている人が - いるかもしれません。ここで使用される時間は UTC であり、 - それは「常に」進むのでここでは問題になりません。x86 上の Unix - はこの条件を満たすために適切な設定が必要かもしれないことに - 注意してください。マザーボードの時計は UTC になっていて、 - 他の時間はそこから適切に補正されることを仮定できるように - 設定されなければなりません。そのような場合でさえ、NTP - を使っているならばリブート後にすぐ正しい UTC の時間になるでしょう。
- -UNIQUE_ID
環境変数は 112 ビット (32 ビット IP
- アドレス、32 ビット pid, 32 ビットタイムスタンプ、16
- ビットカウンタの四つの組) をアルファベット [A-Za-z0-9@-]
- を用いて MIME の base64 符号化と同様の方法により符号化し、19
- の文字を生成することにより作成されます。MIME の base64
- のアルファベットは実際は [A-Za-z0-9+/]
ですが、
- +
と /
とは URL
- では特別な符号化が必要なので、あまり望ましくありません。
- 全ての値はネットワークバイトオーダで符号化されますので、
- 符号は違ったバイトオーダのアーキテクチャ間で比較可能です。
- 実際の符号化の順番は: タイムスタンプ、IP アドレス、pid,
- カウンタです。この順には目的がありますが、
- アプリケーションは符号を解析するべきではないことを強調しておきます。
- アプリケーションは符号化された UNIQUE_ID
- 全体を透過的なトークンとして扱うべきです。
- UNIQUE_ID
は他の UNIQUE_ID
- との等価性を調べるためだけにのみ使用できます。
この順番は将来、既存の UNIQUE_ID
- のデータベースとの衝突を心配することなく符号を変更することが
- 可能になるように選択しています。
- 新しい符号はタイムスタンプを最初の要素として残すのが望ましく、
- それ以外は同じアルファベットとビット長を使うことができます。
- タイムスタンプは本質的に増加系列ですので、
- クラスタの全てのマシンがリクエストとサーバ機能を停止して、
- 古い符号化方式を使用するのをやめるフラグ秒があれば十分です。
- その後は、リクエストを再開し、
- 新しい符号を発行することができるようになります。
我々はこれが、 - この問題に対する比較的移植性の高い解決法だと考えています。 - Windows NT のようなマルチスレッドのシステムに拡張することができますし、 - 将来必要になればさらに増やすこともできます。 - ID は必要に応じて長くすることができますので、生成された ID - は実質上、無限に有効です。また、クラスタのマシン間の通信も事実上必要なく - (NTP による同期のみが必要で、これはオーバヘッドはあまりありません)、httpd - プロセス間の通信も必要ありません (通信はカーネルにより割り当てられた - pid の値により暗黙の内に行なわています)。 - さらに限られた状況下では、ID はさらに短くすることができますが、 - より多くの情報を仮定する必要がでてきます (例えば、32 ビット - IP アドレスはどのサイトにおいても過剰な情報ですが、 - それの代わりになる移植性のあるものはありません)。
-Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻絲障筝茘ュャc医紊違 +箴 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | unique_id_module |
純若鴻<ゃ: | mod_unique_id.c |
≪吾ャ若絽吾狗>散筝с
+ 鴻鴻鴻絲障
+ 筝羆冴障篆荐若薛羈若潟箴障
+ 筝茘ュ荐絎鴻帥с茲違
+ 激潟с筝障鴻絲障医紊
+ UNIQUE_ID
茘ュ荐絎障
+ 筝茘ュ箴水宴障
+ ャ<潟紊с茯障
障Apache 泣若 Unix + 激潟с篏膂≦茯障 + 罘純憝鴻с Windows NT с泣若障 + Unix 激潟с Apache ゃ絖祉鴻篏 + 絖祉鴻筝ゃゃ鴻障絖祉鴻 + 絖筝茲違鴻宴с障 + 茘域с絖祉拷с筝若帥掩障 + 篁ュ絖祉鴻 httpd 祉 若潟障
+ +с泣ゃ膊∞ゃ激潟障 + 障鴻帥若吟障激潟茲違 + Apache 絎茵с障 + 鴻障絎絎с障 + ゃ篁絎筝с鴻帥激渇篆< + 絎絎筝с鴻筝茘ュс腓冴障 +
+ +鴻帥激潟篁ヤ荀羆荀違障 + (激潟筝ゃNTP ф荐鴻с)
+ +若c潟違激鴻pid (祉 ID) + 32 膀峨с篁絎障若c潟違激鴻 + pid 32 莇翫膂≦篆罩cс障 + 潟若紊眼綽荀障
+ +篁絎羣鴻 + 鴻水激潟 httpd + 祉鴻с筝絎с障激潟 IP + ≪鴻 httpd 祉鴻 pid у茵с障 + с鴻筝茘ュ + 祉阪ャ綽荀с
+ +祉阪ャUnix 帥ゃ鴻帥潟 (UTC 1970 綛 + 1 1 ャ腱) 16 潟帥篏帥障 + 帥ゃ鴻帥潟膕綺筝腱сс筝腱 65536 + 障сゃ茵憗潟帥篏睡障ゃ + ( ip_addr, pid, time_stamp, counter ) у httpd + 祉鴻т腱 65536 鴻違с障 + 腟ゃ pid 馹障 + 馹茹f浦潟帥篏睡障
+ +httpd 絖祉鴻篏潟帥 + (鴻ゃ腱 歎 10) modulo 65536 у障 + (綣ゃ激鴻ゃ腱 + 帥ゃ筝篏違馹茹f浦吾違障) + 筝茘ュ篏睡帥ゃ鴻帥潟 + с泣若鴻亥祉障 + 潟帥茘ュ潟紜障 + (泣翫 0 祉障)
+ +若祉鴻若祉鴻 + pid 障pid 膵違菴荐怨障 + (pid ゃ紊 Unix с 16 с違激鴻с + 32 ≦宍障) + с腮綺腟 pid 割戎障 + 筝腱篏睡違 + ゃゃ筝с篆障ゃ障激鴻筝腱 + 65536 祉鴻莎桁篁絎障 (ゃ Unix + с 32768 祉鴻сс祉緇с)
+ +篏宴с祉膵違菴障 + ゃ障激鴻荐c筝綺サ祉c障c + (蚊帥 + 罩c祉祉喝ャ祉c障c) 障 + 翫pid 帥ゃ鴻帥潟篏睡膂≦腓冴障 + 潟水∽違馹帥御障 + 綵潟帥潟医篏帥с + 祉激鴻с膂≦篏睡с違<羈 + (rand ()篏帥障rand () seed + 筝綽荀seed 祉篏帥障筝腱篏с + 祉с膵違菴с) + 絎с絲丞с障
+ +絲丞号с? + с激括召筝筝ゃ紊ст腱 500 + 鴻宴篁絎障 (吾鴻с絋ュ筝с + 絽吾激鴻<ゃс障) + 茵激潟筝茵ャゃ≪潟違 + 綽違絖祉鴻荀羆障 + 画Τ筝ゃ絖祉鴻筝腱 500 + 鴻宴障(筝腱膕上墾) + 祉膵違菴絖祉鴻潟帥ゃ割戎 + 筝с紕醇с 1.5% 障 + 絽吾画Τ箴с絎筝ゃс祉莎激障 + с莎激醇с激鴻 + (違潟若膩) + 潟帥 32 с +
+ +泣若帥ゃ荐祉羂篋冴 + 障т戎 UTC с + 絽吾蚊сс馹障x86 筝 Unix + >散羣荐絎綽荀 + 羈吟若若荐 UTC c + 篁茖罩c篁絎с + 荐絎違障翫сNTP + 篏帥c違若緇罩c UTC с
+ +UNIQUE_ID
医紊違 112 (32 IP
+ ≪鴻32 pid, 32 帥ゃ鴻帥潟16
+ 潟帥ゃ腟) ≪< [A-Za-z0-9@-]
+ MIME base64 膃垸罕号膃垸19
+ 絖篏障MIME base64
+ ≪<絎 [A-Za-z0-9+/]
с
+ +
/
URL
+ с劫ャ膃垸綽荀с障障障
+ ゃ若ゃ若х垸障с
+ 膃垩cゃ若≪若iф莠純с
+ 絎膃垸: 帥ゃ鴻帥潟IP ≪鴻pid,
+ 潟帥с障
+ ≪宴若激с潟膃垩茹f鴻с綣決帥障
+ ≪宴若激с潟膃垸 UNIQUE_ID
+ 篏若潟宴鴻с
+ UNIQUE_ID
篁 UNIQUE_ID
+ 膈箴≧с茯帥鴻推戎с障
絨ャ√ UNIQUE_ID
+ 若帥若鴻茵腦綽霳垩紊眼
+ 純御障
+ 違膃垩帥ゃ鴻帥潟荀膣罧障
+ 篁ュ≪<激篏帥с障
+ 帥ゃ鴻帥潟莖紜膤糸сс
+ 鴻帥激潟鴻泣若罘純罩≪
+ ゃ膃垸劫篏睡亥医с
+ 緇鴻
+ 違膃垩肴с障
+ 馹絲障罸莠腱紙с蕭茹f浦羈障 + Windows NT 鴻激鴻≦宍с障 + 絨ュ荀違紜с障 + ID 綽荀綽激с障с ID + 絎莖筝♂鴻с障鴻帥激渇篆<篋絎筝綽荀 + (NTP 帥綽荀с若障障)httpd + 祉拷篆<綽荀障 (篆<若蚊綵 + pid ゃ藥茵障) + 倶筝сID с障 + 紊宴篁絎綽荀с障 (箴違32 + IP ≪鴻泣ゃ違宴с + 篁c腱紙с障)
+Apache HTTP サーバ バージョン 2.3
-説明: | ユーザ専用のディレクトリを提供 - |
---|---|
ステータス: | Base |
モジュール識別子: | userdir_module |
ソースファイル: | mod_userdir.c |
このモジュールは、
-http://example.com/~user/
-構文を使ってユーザ専用ディレクトリにアクセスできるようにします。
説明: | ユーザ専用ディレクトリの位置 |
---|---|
構文: | UserDir directory-filename |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Base |
モジュール: | mod_userdir |
UserDir
ディレクティブは、
- ユーザのドキュメントへのリクエストを受けた時に使う
- ユーザのホームディレクトリ中の、実際のディレクトリを
- 設定します。
- directory-filename には次のどれかを指定します:
disabled
キーワード。
- enabled
キーワード (下記参照) で明示的に
- 指定されたユーザ以外の
- 全てのユーザ名-ディレクトリ変換を
- しないようにします。disabled
キーワードと、スペース区切りのユーザ名リスト。
- このリスト中に含まれるユーザ名に対しては、たとえ
- enabled
節にあったとしても、
- 決してディレクトリ変換は行われません。enebled
キーワードとスペース区切りのユーザ名リスト。
- 全体では変換が無効になっていたといたとしても、
- これらのユーザ名にはディレクトリ変換が行われます。
- ただし、disabled
節にもあれば変換はされません。
- もし enabled
も disabled
- キーワードも UserDir
に現われていなければ、
- 引数はファイル名パターンとして扱われ、
- 名前からディレクトリへの変換の指定を行なう時に使われます。
- http://www.foo.com/~bob/one/two.html
- へのリクエストは次のように変換されます:
UserDir ディレクティブ | -変換後のパス |
---|---|
UserDir public_html | ~bob/public_html/one/two.html |
UserDir /usr/web | /usr/web/bob/one/two.html |
UserDir /home/*/www | /home/bob/www/one/two.html |
次のディレクティブはクライアントに対してリダイレクトを - 送信します:
- -UserDir ディレクティブ | -変換後のパス |
---|---|
UserDir http://www.foo.com/users | http://www.foo.com/users/bob/one/two.html |
UserDir -http://www.foo.com/*/usr | http://www.foo.com/bob/usr/one/two.html |
UserDir -http://www.foo.com/~*/ | http://www.foo.com/~bob/one/two.html |
UserDir ./
" は
- "/~root
" から "/
" へマップしますが、
- これは望ましい動作ではないでしょう。
- "UserDir disabled root
" 宣言を
- 設定の中に含めておくことを強くお薦めします。
- 追加情報に Directory
- ディレクティブや
- セキュリティ
- Tips のページもご覧下さい。
-追加の例:
- -少数のユーザのみが UserDir
-ディレクトリを利用し、それ以外には利用させたくない場合は
-次を使いましょう:
-UserDir disabled
-UserDir enabled user1 user2 user3
-
大部分のユーザは UserDir
ディレクトリを利用するけれど、
-少数の人は不許可にしたい場合は、次を使いましょう:
-UserDir enabled
-UserDir disabled user4 user5 user6
-
他のユーザディレクトリを指定することもできます。 -次のようなコマンドを使うと:
- -
-Userdir public_html /usr/web http://www.foo.com/
-
http://www.foo.com/~bob/one/two.html へのリクエストはまず -~bob/public_html/one/two.html のページを調べ、その次に -/usr/web/bob/one/two.html を調べ、最後に http://www.foo.com/bob/one/two.html -へのリダイレクトを送ります。
- -リダイレクトを加える場合は、リストの最後の選択肢でなければなりません。 -Apache はリダイレクトが成功するかどうかを決めることはできませんので、 -リストの前の方にリダイレクトを書くと、それが必ず使用される選択肢に -なってしまいます。
- -2.1.4 以降では、ユーザディレクトリ置換機能はデフォルトでは起動しません。
-それ以前のバージョンでは、UserDir
-ディレクティブが存在しなければ、UserDir public_html
-であると仮定されていました。
Apache HTTP 泣若 若吾с 2.3
+茯: | 若九c箴 + |
---|---|
鴻若帥: | Base |
≪吾ャ若茘ュ: | userdir_module |
純若鴻<ゃ: | mod_userdir.c |
≪吾ャ若
+http://example.com/~user/
+罕篏帥c若九c≪祉鴻с障
茯: | 若九c篏臀 |
---|---|
罕: | UserDir directory-filename |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻 |
鴻若帥: | Base |
≪吾ャ若: | mod_userdir |
UserDir
cc
+ 若吟ャ<潟吾鴻篏帥
+ 若吟若c筝絎c
+ 荐絎障
+ directory-filename 罨<絎障:
disabled
若若
+ enabled
若若 (筝荐) ф腓榊
+ 絎若銀札紊
+ 若九-c紊
+ 障disabled
若若鴻若劫阪若九鴻
+ 鴻筝障若九絲障
+ enabled
膀c
+ 羆冴c紊茵障enebled
若若鴻若劫阪若九鴻
+ 篏с紊≦鴻c
+ 若九c紊茵障
+ disabled
膀医障
+ enabled
disabled
+ 若若 UserDir
憗違
+ 綣違<ゃ帥若潟宴
+ c吾紊絎茵篏帥障
+ http://www.foo.com/~bob/one/two.html
+ 吾鴻罨<紊障:
UserDir cc | +紊緇 |
---|---|
UserDir public_html | ~bob/public_html/one/two.html |
UserDir /usr/web | /usr/web/bob/one/two.html |
UserDir /home/*/www | /home/bob/www/one/two.html |
罨<ccゃ≪潟絲障ゃ + 篆<障:
+ +UserDir cc | +紊緇 |
---|---|
UserDir http://www.foo.com/users | http://www.foo.com/users/bob/one/two.html |
UserDir +http://www.foo.com/*/usr | http://www.foo.com/bob/usr/one/two.html |
UserDir +http://www.foo.com/~*/ | http://www.foo.com/~bob/one/two.html |
UserDir ./
"
+ "/~root
" "/
" 吾障
+ 障篏сс
+ "UserDir disabled root
" 絎h
+ 荐絎筝綣激障
+ 菴遵宴 Directory
+ cc
+ 祉ャ
+ Tips 若吾荀т
+菴遵箴:
+ +絨違若吟帥 UserDir
+c篁ュ翫
+罨<篏帥障:
+UserDir disabled
+UserDir enabled user1 user2 user3
+
紊ч若吟 UserDir
c
+絨違篋冴筝荐怨翫罨<篏帥障:
+UserDir enabled
+UserDir disabled user4 user5 user6
+
篁若吟c絎с障 +罨<潟潟篏帥:
+ +
+Userdir public_html /usr/web http://www.foo.com/
+
http://www.foo.com/~bob/one/two.html 吾鴻障 +~bob/public_html/one/two.html 若吾茯帥鴻罨< +/usr/web/bob/one/two.html 茯帥鴻緇 http://www.foo.com/bob/one/two.html +吾ゃ障
+ +ゃ翫鴻緇御≪с違障 +Apache ゃ羆冴с障с +鴻鴻ゃ吾綽篏睡御≪ +c障障
+ +2.1.4 篁ラс若吟c臀罘純с莎桁障
+篁ュ若吾с潟сUserDir
+cc絖違UserDir public_html
+с篁絎障
Apache HTTP サーバ バージョン 2.3
-説明: | バージョン依存の設定 |
---|---|
ステータス: | Extension |
モジュール識別子: | version_module |
ソースファイル: | mod_version.c |
互換性: | バージョン 2.1 以降 |
様々なバージョンの httpd の異なる設定を扱うことになる、
- テストスイートや大規模ネットワークでの使用のために設計されています。
- このモジュールは新しいコンテナ ― <IfVersion>
を
- 提供します。これを使うと、数字の比較や正規表現による柔軟な
- バージョンチェックができるようになります。
- <IfVersion 2.1.0>
-
- # current httpd version is exactly 2.1.0
-
- </IfVersion>
-
- <IfVersion >= 2.2>
-
- # use really new features :-)
-
- </IfVersion>
-
詳細は以下を読んでください。
-説明: | バージョン依存の設定を入れる |
---|---|
構文: | <IfVersion [[!]operator] version> ...
-</IfVersion> |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | All |
ステータス: | Extension |
モジュール: | mod_version |
<IfVersion>
は httpd
のバージョン
- が基準を満たしたときにのみ実行させたいディレクティブを囲みます。
- 通常の (数値) 比較のときは version 引数は
- major[.minor[.patch]]
という
- 形式、例えば、2.1.0
や 2.2
となります。
- minor と patch は省略可能です。省略された場合は、
- 0 を指定したものとみなされます。比較には次の数値 operator を
- 指定できます:
operator | 説明 |
---|---|
= と == |
- 同じ httpd バージョン |
> |
- より大きい httpd バージョン |
>= |
- 指定以上の httpd バージョン |
< |
- 指定未満の httpd バージョン |
<= |
- 指定以下の httpd バージョン |
- <IfVersion >= 2.1>
-
- # this happens only in versions greater or
- # equal 2.1.0.
-
- </IfVersion>
-
数値比較に加えて、http のバージョン番号に対して正規表現による - マッチングができます。二種類の書き方があります:
- -operator | 説明 |
---|---|
= or == |
- version は
- /regex/ 形式 |
~ |
- version は
- regex 形式 |
- <IfVersion = /^2.1.[01234]$/>
-
- # e.g. workaround for buggy versions
-
- </IfVersion>
-
マッチングの否定を表現するために、すべてのオペレータは前に
- 感嘆符 (!
)を付けることができます:
- <IfVersion !~ ^2.1.[01234]$>
-
- # not for those versions
-
- </IfVersion>
-
operator が省略されたときは =
と
- みなされます。
Apache HTTP 泣若 若吾с 2.3
+茯: | 若吾с割絖荐絎 |
---|---|
鴻若帥: | Extension |
≪吾ャ若茘ュ: | version_module |
純若鴻<ゃ: | mod_version.c |
篋: | 若吾с 2.1 篁ラ |
罕若吾с潟 httpd 違荐絎宴
+ 鴻鴻ゃ若紊ц閞<若с篏睡荐荐障
+ ≪吾ャ若違潟潟 <IfVersion>
+ 箴障篏帥医罸莠罩h頫憗荵
+ 若吾с潟сс障
+ <IfVersion 2.1.0>
+
+ # current httpd version is exactly 2.1.0
+
+ </IfVersion>
+
+ <IfVersion >= 2.2>
+
+ # use really new features :-)
+
+ </IfVersion>
+
荅括完篁ヤ茯с
+茯: | 若吾с割絖荐絎ャ |
---|---|
罕: | <IfVersion [[!]operator] version> ...
+</IfVersion> |
潟潟鴻: | 泣若荐絎<ゃ, 若c鴻, c, .htaccess |
筝吾: | All |
鴻若帥: | Extension |
≪吾ャ若: | mod_version |
<IfVersion>
httpd
若吾с
+ 堺羣水茵cc蚊帥障
+ 絽吾 (医) 罸莠 version 綣違
+ major[.minor[.patch]]
+ 綵√箴違2.1.0
2.2
障
+ minor patch ュ純сャ翫
+ 0 絎帥障罸莠罨<医 operator
+ 絎с障:
operator | 茯 |
---|---|
= == |
+ httpd 若吾с |
> |
+ 紊с httpd 若吾с |
>= |
+ 絎篁ヤ httpd 若吾с |
< |
+ 絎羣 httpd 若吾с |
<= |
+ 絎篁ヤ httpd 若吾с |
+ <IfVersion >= 2.1>
+
+ # this happens only in versions greater or
+ # equal 2.1.0.
+
+ </IfVersion>
+
医ゆ莠http 若吾с括垩絲障罩h頫憗 + 潟違с障篋腮蕁吾鴻障:
+ +operator | 茯 |
---|---|
= or == |
+ version
+ /regex/ 綵√ |
~ |
+ version
+ regex 綵√ |
+ <IfVersion = /^2.1.[01234]$/>
+
+ # e.g. workaround for buggy versions
+
+ </IfVersion>
+
潟違絎茵憗鴻若帥
+ 膃 (!
)篁с障:
+ <IfVersion !~ ^2.1.[01234]$>
+
+ # not for those versions
+
+ </IfVersion>
+
operator ャ =
+ 帥障
Apache HTTP サーバ バージョン 2.3
-この文書は Apache の各 モジュール を説明するために - 使われている用語を説明します。
-モジュールの目的の短い説明。
-これは、そのモジュールが Apache - ウェブサーバにどれくらい密接に組み込まれているかを示します。 - 言い換えれば、モジュールを組み込み、その機能を利用するために、 - サーバを再コンパイルする必要があるかもしれないということを示します。 - この属性が取り得る値は以下のものです:
-これは単純に、
- そのモジュールに必要なコードを含むソースファイルの名前を列挙したものです。
- これは、<IfModule>
- ディレクティブで使用される名前でもあります。
-
この文字列は、モジュールの動的読み込みを行なうときに使用する LoadModule
- ディレクティブにおいて使用されるモジュールの識別子です。
- 詳しく書くと、ソースファイル内の module タイプの外部変数の名前です。
-
あるモジュールが Apache バージョン 2 - の配布に含まれていなかった場合、 - そのモジュールが導入されたバージョンがここに書かれています。 - また、モジュールが特定のプラットフォームにのみ存在するときも - 詳細はここに書かれています。
-Apache HTTP 泣若 若吾с 2.3
+≪吾ャ若茯
+≪吾ャ若 Apache + с泣若絲・腟粋昭障腓冴障 + 荐違≪吾ャ若腟粋昭帥罘純 + 泣若潟潟ゃ綽荀腓冴障 + 絮с緇ゃ篁ヤс:
+膣
+ ≪吾ャ若綽荀潟若純若鴻<ゃс
+ <IfModule>
+ ccт戎с障
+
絖≪吾ャ若茯粋昭帥茵篏睡 LoadModule
+ cc篏睡≪吾ャ若茘ュс
+ 荅潟吾純若鴻<ゃ module 帥ゃ紊紊違с
+
≪吾ャ若 Apache 若吾с 2 + 絽障c翫 + ≪吾ャ若絨ャ若吾с潟吾障 + 障≪吾ャ若劫若水 + 荅括完吾障
+Apache HTTP サーバ バージョン 2.3
-説明: | 二つ以上のマルチプロセッシングモジュール (MPM) -で実装されているディレクティブのコレクション |
---|---|
ステータス: | MPM |
説明: | 複数の子プロセスがネットワークソケットでリクエストを -accept しようとしているときに、Apache がそれらの子プロセスを直列化するために -使う方法 |
---|---|
構文: | AcceptMutex Default|method |
デフォルト: | AcceptMutex Default |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , perchild , prefork , threadpool , worker |
AcceptMutex
ディレクティブは、
- ネットワークソケットのリクエストを accept しようとしている複数の子プロセスを
- Apache が直列化するために使う方法(と必要ならロックファイルの場所)を設定します。
- Apache 2.0 以前は、このメソッドはコンパイル時にのみ選択できました。
- 最適な方法は、アーキテクチャやプラットホームに大きく依存します。
- 詳細に関しては、性能のチューニング
- ドキュメントをご覧下さい。
このディレクティブが Default
- に設定されていれば、コンパイル時に選択されたデフォルト値が使われます。
- 他の使用可能なメソッドの一覧は下にあります。
- 全てのメソッドが全てのプラットホームで使用可能であるわけではない、
- ということに注意してください。
- 使用可能でないメソッドが指定された場合は、
- 使用可能なメソッドの一覧を含んだメッセージが
- エラーログに出力されます。
flock<:/path/to/lockfile>
flock(2)
システムコールを使います。
- ロックファイルの指定には LockFile
- ディレクティブを使うことも出来ます(非推奨です)。fcntl<:/path/to/lockfile>
fcntl(2)
システムコールを使います。
- ロックファイルの指定には LockFile
- ディレクティブを使うことも出来ます(非推奨です)。file<:/path/to/lockfile>
fcntl
が使用可能な場合はそれを使い、そうでない場合は
- flock
を試します。
- この設定はプラットホームと APR が二つのうち少なくとも
- 一つをサポートしている場合のみ使用可能です。posixsem
sysvsem
sem
pthread
コンパイル時にシステムのデフォルトに選ばれたものが何かを見たい場合は、
- LogLevel
を debug
- に設定するとよいでしょう。デフォルトの AcceptMutex
- が ErrorLog
に書き込まれます。
ほとんどのシステムにおいては、pthread
オプションが
- 選ばれていると、子プロセスが AcceptCntl
mutex を
- 保持しているときに異常終了した場合、サーバはリクエストへの応答を
- 停止してしまいます。これが発生した場合は、サーバを復旧させるためには
- 手動で再起動させる必要があります。
Solaris は例外で、Apache も使用している、子プロセスが mutex を - 保持して異常終了した後に mutex を復旧させるための機構を提供をしています。
-御使用のシステムが pthread_mutexattr_setrobust_np()
関数を
- 実装している場合は、pthread
オプションを安全に使用できる
- 可能性があります。
説明: | Apache がコアダンプする前に移動を試みるディレクトリ - |
---|---|
構文: | CoreDumpDirectory directory |
デフォルト: | デフォルトの設定は説明文を読んでください |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpm_winnt , perchild , prefork , threadpool , worker |
Apache がコアダンプする前に移動を試みるディレクトリを制御します。
- デフォルト値は ServerRoot
- ディレクトリですが、このディレクトリはサーバの実行されているユーザ権限で
- 書き込み可能であるべきではないので、通常はコアダンプは書き込まれません。
- デバッグのためにコアダンプが必要であれば、
- このディレクティブを使って他の位置にコアダンプを書き出すようにできます。
Apache が root として起動されて、別のユーザの権限に以降した場合は
- Linux のカーネルはディレクトリがプロセスの権限で書き込み可能な場合でさえも
- コアダンプを無効にします。Apache (2.0.46 以降) は
- Linux 2.4 以降ではコアダンプを行なうように再指定しますが、それは
- CoreDumpDirectory
を明示的に設定したときに
- 限ります。
説明: | クラッシュの後に例外ハンドラを実行するフックを有効にする |
---|---|
構文: | EnableExceptionHook On|Off |
デフォルト: | EnableExceptionHook Off |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , perchild , prefork , threadpool , worker |
互換性: | 2.0.49 以降 |
安全上の理由から、--enable-exception-hook
configure
- オプションを有効にした場合にのみ、このディレクティブを利用できます。
- 外部モジュールをプラグインして、子がクラッシュした後に何か実行できるような
- フックを有効にします。
このような外部モジュールは、既に二つ存在していて、
- mod_whatkilledus
と mod_backtrace
- がこのフックを活用します。これらの詳細については Jeff Trawick
- さんの EnableExceptionHook site を参照してください。
説明: | 穏やかな停止をかけた後、終了するまで待つ時間 |
---|---|
構文: | GracefulShutDownTimeout seconds |
デフォルト: | GracefulShutDownTimeout 0 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | prefork , worker , event |
互換性: | 2.2 以降 |
GracefulShutdownTimeout
には
- サーバーが "graceful-stop" シグナルを受け取ってから現在の
- リクエストの処理を最大で何秒間続けるかを指定します。
この値をゼロに設定すると、処理中として残っているリクエストが - 全て完了するまでサーバーは終了しません。
- -説明: | リクエストに応答する際に所属するグループ |
---|---|
構文: | Group unix-group |
デフォルト: | Group #-1 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpmt_os2 , perchild , prefork , threadpool , worker |
互換性: | Apache 2.0 以降で、グローバル設定でのみ有効です。 |
Group
ディレクティブで、
- リクエストに応答する際に所属しておくグループを設定します。
- このディレクティブを使用するためには、
- サーバは最初に root
権限で起動されている必要があります。
- 非 root ユーザでサーバを起動した場合は、指定したグループに変化できずに、
- 結果的に起動したユーザの属するグループで実行されることになります。
- unix-group は次のうちのいずれかです:
#
に続いてグループ番号
- Group www-group
-
サーバを実行するために特定の新しいグループを設定することを
- お薦めします。nobody
を使用する管理者もいますが、
- 可能であったり望ましい訳では必ずしもありません。
正確にどんなことをやっているのか、その危険性を知らないで、
- Group
(や User
) を
- root
に 設定しないでください。
特記事項: このディレクティブを
- <VirtualHost>
- で使用することはサポートされなくなりました。Apache 2.0 で
- suexec
を設定したい場合は、
- SuexecUserGroup
- を使用してください。
説明: | サーバが listen するIP アドレスとポート番号 |
---|---|
構文: | Listen [IP-address:]portnumber [protocol] |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker , event |
互換性: | Apache 2.0 から必須ディレクティブ。protocol -引数は 2.1.5 で追加。 |
Listen
ディレクティブは Apache
- が特定の IP アドレスやポート番号だけを listen するように指定します。
- デフォルトでは全ての IP インターフェースのリクエストに応答します。
- Listen
ディレクティブは
- 現在は必須のディレクティブとなりました。
- もし設定ファイルになければ、サーバは起動に失敗します。
- これは以前のバージョンの Apache から変更のあった部分です。
Listen
ディレクティブでは、特定のポートあるいは
- アドレスとポートの組み合わせから入ってくるリクエストに対して
- 応答するように指定します。
- もしポート番号だけが指定された場合は、サーバは全インターフェースの
- 指定されたポート番号に対して listen します。
- IP アドレスがポートとともに指定された場合は、
- サーバは指定されたポートとインターフェースに対して listen
- します。
複数のアドレスとポートに対して listen するように、
- 複数の Listen
ディレクティブを使うこともできます。
- サーバは列挙されたアドレスとポート全てからのリクエストに対して
- 応答します。
例えば、サーバが 80 番ポートと 8000 番ポートの両方の - コネクションを受け入れる場合は、次のようにします。
- -
- Listen 80
- Listen 8000
-
二つの特定のインターフェースとポート番号からのコネクションを - 受け入れるようにするには、次のようにします。
- -
- Listen 192.170.2.1:80
- Listen 192.170.2.5:8000
-
IPv6 アドレスは角括弧で囲まなければなりません。 - 例えば次の例のようにです。
- -
- Listen [2001:db8::a00:20ff:fea7:ccea]:80
-
protocol オプション引数は通常の設定では必要ありません。
- 無指定の場合、443 番ポートには https
が、他のポートには
- http
がデフォルト値として使用されます。
- protocol 指定は、どのモジュールがリクエストを処理するかを決定し、
- AcceptFilter
- によるプロトコル特有の最適化を行うようにします。
非標準なポートで運用している際にのみ protocol 指定が必要になります。
- たとえば https
なサイトを 8443 番ポートで運用している場合 :
- Listen 192.170.2.1:8443 https
-
Listen
- ディレクティブを指定してしまうと、Address already in use
- というエラーメッセージを受けることになります。
- 説明: | 保留状態のコネクションのキューの最大長 |
---|---|
構文: | ListenBacklog backlog |
デフォルト: | ListenBacklog 511 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
保留状態のコネクションのキューの最大長です。
- 一般的には調整する必要はありませんし、調整は望ましくありません。
- しかし、TCP SYN フラッドアタックの状況下におかれる場合に、
- 増やした方が望ましいシステムもあります。
- listen(2)
システムコールのバックログパラメータを
- ご覧下さい。
この値は OS により、小さな数に抑えられます。 - 値は OS 毎に異なっています。また多くの OS では、 - バックログとして指定されている値ちょうどまで使っているわけではなく、 - 設定されている値に基づいて (通常は設定値よりも大きな値を) - 使っていることに注意してください。
- -説明: | 受付を直列化するためのロックファイルの位置(非推奨) |
---|---|
構文: | LockFile filename |
デフォルト: | LockFile logs/accept.lock |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , perchild , prefork , threadpool , worker |
AcceptMutex
- が fcntl
や flock
- に設定されて使用されている場合に、使用されるロックファイルへのパスを
- LockFile
ディレクティブで設定します。
- このディレクティブは通常はそのままにしておきます。
- 主に logs
ディレクトリが NFS
- でマウントされている場合などに値を変えます。
- なぜならロックファイルはローカルディスクに
- 保存されなければならないからです。
- メインサーバプロセスの PID がファイル名に自動的に付加されます。
/var/tmp
- といった、誰でも書き込めるディレクトリにファイルを
- 置かない方がよいです。なぜなら、サーバが起動時に作成する
- ロックファイルの作成自体を妨害することによって、
- 誰でもサービス拒否アタックを引き起こすことができるからです。
このディレクティブは非推奨です。 AcceptMutex
- ディレクティブで排他処理の方法の指定とともにロックファイルの場所も指定してください。
AcceptMutex
説明: | リクエストに応答するために作成される -子プロセスの最大個数 |
---|---|
構文: | MaxClients number |
デフォルト: | 詳細は使用法をご覧下さい。 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , prefork , threadpool , worker |
MaxClients
ディレクティブは、
- 応答することのできる同時リクエスト数を設定します。
- MaxClients
制限数を越えるコネクションは通常、
- ListenBacklog
- ディレクティブで設定した数までキューに入ります。
- 他のリクエストの最後まで達して子プロセスが空くと、
- 次のコネクションに応答します。
スレッドを用いないサーバ (すなわち prefork
)
- では、MaxClients
- は、リクエストに応答するために起動される
- 子プロセスの最大数となります。
- デフォルト値は 256
で、これを増加させたい場合は、
- ServerLimit
- の値も増加させる必要があります。
スレッドを用いるサーバや、ハイブリッドサーバ (すなわち
- beos
worker
)
- では、MaxClients
- は、クライアントに応答できるスレッドの総数を制限します。
- beos
でのデフォルト値は 50
です。
- ハイブリッド MPM でのデフォルト値は 16
- ServerLimit
- の 25
倍 (ThreadsPerChild
) です。
- MaxClients
- を 16 プロセス以上必要な値まで増加させたい場合は、
- ServerLimit
- も増加させる必要があります。
説明: | free() が呼ばれない限り、
-主メモリアロケータが保持し続けられるメモリの最大量 |
---|---|
構文: | MaxMemFree KBytes |
デフォルト: | MaxMemFree 0 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpm_netware , prefork , threadpool , worker , mpm_winnt |
MaxMemFree
ディレクティブは
- free()
が呼ばれない限り、
- 主アロケータが保持できる空のメモリの最大値をキロバイト単位で設定します。
- 設定されていないか、零に設定されているときは、無制限になります。
説明: | 個々の子サーバが稼働中に扱うリクエスト数の上限 |
---|---|
構文: | MaxRequestsPerChild number |
デフォルト: | MaxRequestsPerChild 10000 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
MaxRequestsPerChild
ディレクティブは、
- 個々の子サーバプロセスが扱うことのできるリクエストの制限数を
- 設定します。MaxRequestsPerChild
- 個のリクエストの後に、子プロセスは終了します。
- MaxRequestsPerChild
が 0
- に設定されている場合は、プロセスは期限切れにより終了することはありません。
mpm_netware
と mpm_winnt
- でのデフォルト値は 0
です。
MaxRequestsPerChild
- を非ゼロに制限することには、二つの利点があります:
KeepAlive
リクエストの場合は、
- 一つ目のリクエストだけがこの制限に該当します。
- 実効的には、一つの子プロセスあたりのコネクション数を
- 制限するように挙動が変化します。
説明: | アイドルスレッドの最大数 |
---|---|
構文: | MaxSpareThreads number |
デフォルト: | 詳細は使用法をご覧下さい。 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpm_netware , mpmt_os2 , perchild , threadpool , worker |
アイドルなスレッドの最大数です。異なる MPM ではそれぞれ、 - このディレクティブは異なる取り扱われ方をされます。
- -perchild
では、
- デフォルトは MaxSpareThreads 10
です。
- この MPM はアイドルスレッド数を、それぞれの子プロセスごとに監視します。
- 子プロセスにアイドルスレッドが多すぎる場合は、
- サーバはその子プロセスに含まれるスレッドを終了し始めます。
worker
, leader
,
- threadpool
では、
- デフォルトは MaxSpareThreads 250
です。
- この MPM はアイドルスレッド数をサーバ全体で監視します。
- サーバでアイドルスレッド数が多すぎる場合は、
- この数字よりも少ない数になるまで子プロセスを終了します。
mpm_netware
では、
- デフォルトは MaxSpareThreads 100
です。
- この MPM はシングルプロセスで実行されますので、
- スペアスレッド数もサーバ全体で勘定します。
beos
と mpmt_os2
は
- mpm_netware
と似た挙動をします。
- beos
でのデフォルト値は MaxSpareThreads 50
- です。mpmt_os2
でのデフォルト値は 10
- です。
MaxSpareThreads
の取る値には制限があります。
- Apache は次の規則に従って自動的に補正します。
perchild
では、
- MaxSpareThreads
が
- ThreadLimit
- と等しいかそれ以下である必要があります。mpm_netware
は
- MinSpareThreads
- よりも大きい必要があります。leader
, threadpool
,
- worker
では、
- MinSpareThreads
と
- ThreadsPerChild
- で決まる総和と等しいか大きい必要があります。説明: | リクエストに応答することのできる -アイドルスレッド数の最小数 |
---|---|
構文: | MinSpareThreads number |
デフォルト: | 詳細は使用方法をご覧下さい。 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpm_netware , mpmt_os2 , perchild , threadpool , worker |
リクエストに応答するスレッド数の最小値です。 - 異なる MPM ではそれぞれ、 - このディレクティブは異なる取り扱われ方をします。
- -perchild
では、
- デフォルトは MinSpareThreads 5
で、
- アイドルスレッド数を子プロセス毎に監視します。
- もし子プロセスに十分な数のスレッドがなければ、
- サーバはその子プロセスに新しいスレッドを作り始めます。
- ですから、NumServers
- を 10
に、MinSpareThreads
を
- 5
にした場合は、最小でも 50 のアイドルスレッドが
- システム上にあることになります。
worker
, leader
,
- threadpool
では、
- デフォルトは MinSpareThreads 75
で、
- アイドルスレッド数をサーバ全体で監視します。
- もしサーバに十分な数のアイドルスレッドがなければ、
- アイドルスレッド数がこの数よりも大きくなるまで
- 新しい子プロセスが生成されます。
mpm_netware
では、
- デフォルトは MinSpareThreads 10
で、
- シングルプロセス MPM ですので、サーバ全体で管理されます。
beos
と mpmt_os2
は、
- mpm_netware
によく似ています。
- beos
でのデフォルトは MinSpareThreads 1
- です。mpmt_os2
でのデフォルトは
- 5
です。
説明: | デーモンのプロセス ID -をサーバが記録するためのファイル |
---|---|
構文: | PidFile filename |
デフォルト: | PidFile logs/httpd.pid |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
PidFile
ディレクティブで、
- デーモンのプロセス ID をサーバが記録するファイルを設定します。
- ファイル名が絶対パスでない場合は、
- ServerRoot
- からの相対的なものとして扱われます。
- PidFile /var/run/apache.pid
-
サーバが ErrorLog
- や TransferLog
- を閉じて開き直したり、設定ファイルを
- 再読込したりさせるために、サーバにシグナルを送ることができると
- 便利なことがあります。
- これは SIGHUP (kill -1) シグナルを PidFile
- に書かれているプロセス ID に送ることでできます。
PidFile
には、ログファイルの設置位置や
- セキュリティ
- と全く同じ注意点があります。
Apache 2 では、
- apachectl
- スクリプトのみを使用してサーバの (再) 起動や停止を
- 行なうことを推奨しています。
説明: | TCP 受信バッファサイズ |
---|---|
構文: | ReceiveBufferSize bytes |
デフォルト: | ReceiveBufferSize 0 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , mpm_netware , mpm_winnt , mpmt_os2 , prefork , worker |
サーバは TCP 受信バッファサイズを指定されたバイト数に設定します。
- -0
にした場合、OS のデフォルト値が使用されます。
説明: | 子プロセスと連携するためのデータを保存する -ファイルの位置 |
---|---|
構文: | ScoreBoardFile file-path |
デフォルト: | ScoreBoardFile logs/apache_status |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpm_winnt , perchild , prefork , threadpool , worker |
Apache は親プロセスと子プロセス間の通信にスコアボードを用います。 - この通信機能にファイルを必要とするアーキテクチャもあります。 - ファイルが指定されていなければ、Apache はまずメモリ上 - (匿名共有メモリ) にスコアボードを作ろうとし、それが失敗すると - ディスク上にファイル (ファイルベースの共有メモリ) を作ろうとします。 - このディレクティブを指定すると、Apache - は必ずディスクにファイルを生成します。
- -
- ScoreBoardFile /var/run/apache_status
-
ファイルベースの共有メモリは、サードパーティー製のアプリケーションで - スコアボードに直接アクセスする必要がある場合に役に立ちます。
- -ScoreBoardFile
を使う場合、
- RAM ディスク上に置くとスピードが向上するでしょう。
- しかし、ログファイルの設置位置や
- セキュリティ
- と同様の注意点があるので、注意してください。
説明: | TCP バッファサイズ |
---|---|
構文: | SendBufferSize bytes |
デフォルト: | SendBufferSize 0 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
サーバは TCP 送信バッファサイズを指定されたバイト数に設定します。 - 高速で高レイテンシな環境で - (例 100ms 程度、大陸横断高速通信路など) - 古い一般的な OS のデフォルト値を増やすのに非常に便利です。
- -0
にした場合、OS のデフォルト値が使用されます。
説明: | 設定可能なサーバプロセス数の上限 |
---|---|
構文: | ServerLimit number |
デフォルト: | 詳細は使用法を参照 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , perchild , prefork , threadpool , worker |
prefork
MPM の場合は、このディレクティブは
- Apache プロセス稼働中における
- MaxClients
- に設定可能な上限値を設定することになります
- (訳注: prefork の場合は同時クライアント数 = サーバプロセス数なので) 。
- worker
MPM の場合には、このディレクティブは
- ThreadLimit
- ディレクティブと組み合わせて、
- Apache プロセス稼働中における
- MaxClients
- に設定可能な上限値を設定することになります。
- 再起動中にこのディレクティブを変更しても無視されますが、
- MaxClients
- は再起動中に修正することができます。
このディレクティブを使用する際は特に注意してください。
- ServerLimit
が必要以上に大きな値に
- 設定された場合は、余計な未使用共有メモリが割り当てられます。
- ServerLimit
と
- MaxClients
- がシステムの扱える範囲を越えた設定値になっていると、
- Apache は起動しないか、起動しても不安定になるでしょう。
prefork
MPM では、
- MaxClients
- を 256 (デフォルト) よりも大きな値に設定する必要がある時にだけ使用してください。
- 希望の MaxClients
- 数とくらべて、必要以上に大きな値を指定することは避けてください。
worker
, leader
,
- threadpool
MPM では、
- MaxClients
と
- ThreadsPerChild
- の設定で 16 サーバプロセス (デフォルト)
- 以上必要になる場合にのみ使用してください。希望の
- MaxClients
と
- ThreadsPerChild
- とくらべて、必要となるサーバプロセス数以上に大きな値を
- 設定することは避けてください。
perchild
MPM では、
- NumServers
を 8 (デフォルト)
- よろいも大きな値に設定する必要があるときにのみ使用してください。
ServerLimit 20000
という制限付きでコンパイルされています
- (prefork
MPM では 200000
) 。
- これはスペルミスによって誤って酷い状況になるのを、
- 回避するための処置です。
説明: | 起動時に生成される子サーバプロセスの数 |
---|---|
構文: | StartServers number |
デフォルト: | 詳細は使用方法を参照 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , mpmt_os2 , prefork , threadpool , worker |
StartServers
ディレクティブは、
- 起動時に生成される子サーバプロセスの数を設定します。
- プロセス数は負荷に応じて動的に制御されますので、
- 通常はこの値を調整する理由はあまりないでしょう。
デフォルト値は MPM ごとに異なります。
- leader
, threadpool
,
- worker
は StartServers 3
です。
- prefork
は 5
で、
- mpmt_os2
は 2
です。
説明: | 起動時に生成されるスレッドの数 |
---|---|
構文: | StartThreads number |
デフォルト: | 詳細は使用方法を参照 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | beos , mpm_netware , perchild |
起動時に生成されるスレッドの数です。 - スレッド数は負荷に応じて動的に制御されますので、 - 通常はこの値を調整する理由はあまりないでしょう。
- -perchild
でのデフォルトは
- StartThreads 5
で、このディレクティブは起動時に
- プロセス毎のスレッド数を追跡します。
mpm_netware
でのデフォルトは
- StartThreads 50
で、
- この場合プロセスは一つしかないので、
- 起動時にリクエストに応答するスレッドの総数となります。
beos
でのデフォルトは StartThreads
- 10
です。
- また、起動時に生成されるスレッドの総数にも反映されます。
説明: | 設定可能な子プロセス毎のスレッド数の上限を -設定します |
---|---|
構文: | ThreadLimit number |
デフォルト: | 詳細は使用方法を参照 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , mpm_winnt , perchild , threadpool , worker |
互換性: | Apache 2.0.41 とそれ以降の mpm_winnt
-で利用可能 |
このディレクティブは
- Apache プロセス稼働中における
- ThreadsPerChild
- に設定可能な上限値を設定します。再起動時にこのディレクティブの値を
- 変更しても無視されますが、
- ThreadsPerChild
- は再起動中に、このディレクティブで指定された上限値まで
- 変更することができます。
このディレクティブを使用する際は特に注意してください。
- ThreadLimit
が
- ThreadsPerChild
- よりもずっと大きな値に設定された場合は、
- 余計な未使用共有メモリが割り当てられてしまいます。
- ThreadLimit
が
- ThreadsPerChild
- の両方がシステムの扱える範囲を超えている場合は、
- Apache は起動しないか、起動したとしても不安定になるでしょう。
- このディレクティブの値は今使用している Apache の ThreadsPerChild
の予想上限値を
- 超えた値には設定しないでください。
-
ThreadLimit
のデフォルト値は
- mpm_winnt
のときは 1920
で、
- 他の場合は 64
です。
ThreadLimit 20000
(mpm_winnt
- の場合は ThreadLimit 15000
)
- という制限付きでコンパイルされています。
- これはスペルミスによって誤って酷い状況になるのを、
- 回避するための処置です。
説明: | 子プロセスそれぞれに生成されるスレッド数 |
---|---|
構文: | ThreadsPerChild number |
デフォルト: | 詳細は使用方法を参照 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , mpm_winnt , threadpool , worker |
このディレクティブは、それぞれの子プロセスで生成される
- スレッド数を設定します。
- 子プロセスは開始時にこれらのスレッドを生成して、
- その後は生成しません。mpm_winnt
のような、
- 子プロセスが一つしかないような MPM を利用しているのであれば、
- この値はサーバの負荷全体を十分取り扱える程度に、
- 大きくなければなりません。worker
のような、
- 子プロセスが複数あるような MPM を利用しているのであれば、
- サーバの通常負荷を十分扱える程度に、
- スレッド総数が多くなければなりません。
mpm_winnt
での ThreadsPerChild
- のデフォルト値は 64
で、他の場合は
- 25
です。
説明: | クライアントのコネクションを受け持つスレッドが使用する -スタックのバイト数 |
---|---|
構文: | ThreadStackSize size |
デフォルト: | NetWare では 65536。他の OS では違った値 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , mpm_netware , mpm_winnt , perchild , threadpool , worker |
互換性: | 2.1 以降 |
クライアントコネクションを受け持ち、コネクション処理に必要なモジュールの
- 呼び出しを行なっているスレッドの、(自動変数用の) スタックサイズは
- ThreadStackSize
ディレクティブで指定します。
- 大抵の場合 OS の指定しているスタックサイズのデフォルト値は
- 適切なものですが、調整が必要になる場合もあります:
ThreadStackSize
- で OS のデフォルト値より大きな値を指定することで解決します。
- サードパーティ製モジュールでこの処置が必要であると記載されている
- 場合か、Apache の出力するメッセージでスレッドスタックサイズが
- 小さすぎると指摘されている場合にのみ、この調整をしてください。ThreadStackSize
- を OS のデフォルト値よりも小さな値にすることで、子プロセスあたりの
- スレッド数をより多く持たせられるようになります。
- このタイプの調整は、テスト環境でウェブサーバを完全に
- テストできる場合に限って行なうべきです。
- まれに多数のスタックが要求されるリクエストを受けることがあるかも
- しれないからです。
- Web サーバの設定を変更すると、現在の ThreadStackSize
- の設定が取り消される場合があります。説明: | リクエストに応答する際に用いるユーザ ID |
---|---|
構文: | User unix-userid |
デフォルト: | User #-1 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | leader , perchild , prefork , threadpool , worker |
互換性: | Apache 2.0 以降で、グローバル設定でのみ有効です。 - |
User
ディレクティブは
- サーバがリクエストに応答する際に用いるユーザ ID を設定します。
- このディレクティブを使用するためには、スタンドアロン型の
- サーバは最初に root
権限で起動されている必要があります。
- 非 root ユーザでサーバを起動した場合は、
- 権限の低いユーザへと変わることができず、
- 結局元のユーザのプロセスとして実行され続けます。
- root
で起動した場合に親プロセスが root
- として実行されているのは正常な動作です。
- Unix-userid は次のどれかです。
このユーザは、外部に見せるように意図していないファイルに、
- アクセス可能になってしまうような権限を持つべきではないですし、
- 同様に HTTP リクエストに対して応答するように意図していない
- 実行コードを、実行できるような権限を持つべきではないです。
- サーバを実行するために特定の新しいユーザとグループを
- 設定することをお薦めいたします。
- nobody
ユーザを使用する管理者もいますが、
- これが常に望ましいわけではありません。
- なぜなら nobody
ユーザは、システムで
- 他の役割を担っているかも知れないからです。
正確にどんなことをやっているのか、その危険性を知らないで、
- User
(や Group
) を root
に
- 設定しないでください。
perchild
MPM では、異なるユーザ ID
- で複数のバーチャルホストを動かすことを目的としていますが、
- User
は、主サーバのユーザ ID
- と、AssignUserID
- ディレクティブを持たない <VirtualHost>
セクションへの
- フォールバックとを定義することになります。
特記事項: このディレクティブを
- <VirtualHost>
- で使用することはサポートされなくなりました。
- suexec
向けにサーバを設定するのであれば、
- SuexecUserGroup
- を使用してください。
Apache HTTP 泣若 若吾с 2.3
+茯: | 篋や札筝祉激潟違≪吾ャ若 (MPM) +у茖cc潟激с |
---|---|
鴻若帥: | MPM |
茯: | 茲違絖祉鴻若純宴с鴻 +accept Apache 絖祉鴻翫 +篏帥号 |
---|---|
罕: | AcceptMutex Default|method |
: | AcceptMutex Default |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , perchild , prefork , threadpool , worker |
AcceptMutex
cc
+ 若純宴鴻 accept 茲違絖祉鴻
+ Apache 翫篏帥号(綽荀<ゃ贋)荐絎障
+ Apache 2.0 篁ュ<純潟潟ゃ翠御с障
+ 号≪若c若紊с鋐絖障
+ 荅括完≪ц純ャ若潟
+ ャ<潟荀т
cc Default
+ 荐絎違潟潟ゃ御ゃ篏帥障
+ 篁篏睡純<純筝荀с筝障
+ <純若т戎純сс
+ 羈
+ 篏睡純с<純絎翫
+ 篏睡純<純筝荀с<祉若吾
+ 若違阪障
flock<:/path/to/lockfile>
flock(2)
激鴻潟若篏帥障
+ <ゃ絎 LockFile
+ cc篏帥堺ャ障(ィ絅с)fcntl<:/path/to/lockfile>
fcntl(2)
激鴻潟若篏帥障
+ <ゃ絎 LockFile
+ cc篏帥堺ャ障(ィ絅с)file<:/path/to/lockfile>
fcntl
篏睡純翫篏帥с翫
+ flock
荅障
+ 荐絎若 APR 篋ゃ≦
+ 筝ゃ泣若翫推戎純сposixsem
sysvsem
sem
pthread
潟潟ゃ激鴻吾違篏荀翫
+ LogLevel
debug
+ 荐絎с AcceptMutex
+ ErrorLog
吾莨若障障
祉激鴻pthread
激с潟
+ 吾違絖祉鴻 AcceptCntl
mutex
+ 篆医幻腟篋翫泣若鴻吾綽膈
+ 罩≪障障榊翫泣若緇с
+ у莎桁綽荀障
Solaris 箴紊сApache 篏睡絖祉鴻 mutex + 篆医幻腟篋緇 mutex 緇с罘罕箴障
+緇>戎激鴻 pthread_mutexattr_setrobust_np()
∽違
+ 絎茖翫pthread
激с潟絎篏睡с
+ 醇с障
茯: | Apache 潟≪潟腱糸荅帥c + |
---|---|
罕: | CoreDumpDirectory directory |
: | 荐絎茯茯с |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpm_winnt , perchild , prefork , threadpool , worker |
Apache 潟≪潟腱糸荅帥c九勝障
+ ゃ ServerRoot
+ cсc泣若絎茵若倶┤
+ 吾莨若水純с鴻сс絽吾潟≪潟吾莨若障障
+ 違潟≪潟綽荀с違
+ cc篏帥c篁篏臀潟≪潟吾冴с障
Apache root 莎桁ャ若吟罔篁ラ翫
+ Linux 若c祉鴻罔ф吾莨若水純翫с
+ 潟≪潟≦障Apache (2.0.46 篁ラ)
+ Linux 2.4 篁ラс潟≪潟茵絎障
+ CoreDumpDirectory
腓榊荐絎
+ 障
茯: | 激ャ緇箴紊潟絎茵鴻 |
---|---|
罕: | EnableExceptionHook On|Off |
: | EnableExceptionHook Off |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , perchild , prefork , threadpool , worker |
篋: | 2.0.49 篁ラ |
絎筝宴--enable-exception-hook
configure
+ 激с潟鴻翫帥ccс障
+ 紊≪吾ャ若違ゃ潟絖激ャ緇篏絎茵с
+ 鴻障
紊≪吾ャ若≪篋ゅ
+ mod_whatkilledus
mod_backtrace
+ 羇紫障荅括完ゃ Jeff Trawick
+ EnableExceptionHook site с
茯: | 腥罩≪緇腟篋障уゆ |
---|---|
罕: | GracefulShutDownTimeout seconds |
: | GracefulShutDownTimeout 0 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | prefork , worker , event |
篋: | 2.2 篁ラ |
GracefulShutdownTimeout
+ 泣若若 "graceful-stop" 激違c憜
+ 鴻紊ст腱膓絎障
ゃ若荐絎筝罧c鴻 + 絎篋障с泣若若腟篋障
+ +茯: | 鴻綽膈絮違若 |
---|---|
罕: | Group unix-group |
: | Group #-1 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpmt_os2 , perchild , prefork , threadpool , worker |
篋: | Apache 2.0 篁ラс違若荐絎с炊鴻с |
Group
ccс
+ 鴻綽膈絮違若荐絎障
+ cc篏睡
+ 泣若 root
罔ц儀綽荀障
+ root 若吟с泣若莎桁翫絎違若紊с
+ 腟莎桁若吟絮違若у茵障
+ unix-group 罨<<с:
#
膓違若
+ Group www-group
+
泣若絎茵劫違違若荐絎
+ 障nobody
篏睡膊∞障
+ 純сc障荐潟с綽障
罩g∈c演堺сャс
+ Group
( User
)
+ root
荐絎с
壕篋: cc
+ <VirtualHost>
+ т戎泣若障Apache 2.0
+ suexec
荐絎翫
+ SuexecUserGroup
+ 篏睡
茯: | 泣若 listen IP ≪鴻若 |
---|---|
罕: | Listen [IP-address:]portnumber [protocol] |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker , event |
篋: | Apache 2.0 綽ccprotocol +綣違 2.1.5 ц申 |
Listen
cc Apache
+ 劫 IP ≪鴻若垩 listen 絎障
+ с IP ゃ潟帥若с若鴻鴻綽膈障
+ Listen
cc
+ 憜綽cc障
+ 荐絎<ゃ違泣若莎桁紊掩障
+ 篁ュ若吾с潟 Apache 紊眼cс
Listen
ccс劫若
+ ≪鴻若腟水ャc鴻絲障
+ 綽膈絎障
+ 若垩絎翫泣若ゃ潟帥若с若鴻
+ 絎若垩絲障 listen 障
+ IP ≪鴻若絎翫
+ 泣若絎若ゃ潟帥若с若鴻絲障 listen
+ 障
茲違≪鴻若絲障 listen
+ 茲違 Listen
cc篏帥с障
+ 泣若≪鴻若鴻絲障
+ 綽膈障
箴違泣若 80 若 8000 若筝≧鴻 + 潟激с潟ャ翫罨<障
+ +
+ Listen 80
+ Listen 8000
+
篋ゃ劫ゃ潟帥若с若鴻若垩潟激с潟 + ャ罨<障
+ +
+ Listen 192.170.2.1:80
+ Listen 192.170.2.5:8000
+
IPv6 ≪鴻茹綣су蚊障違障 + 箴井<箴с
+ +
+ Listen [2001:db8::a00:20ff:fea7:ccea]:80
+
protocol 激с喝違絽吾荐絎с綽荀障
+ ≧絎翫443 若 https
篁若
+ http
ゃ篏睡障
+ protocol 絎≪吾ャ若鴻羆阪
+ AcceptFilter
+ 潟号茵障
罔羣若ч protocol 絎綽荀障
+ https
泣ゃ 8443 若ч翫 :
+ Listen 192.170.2.1:8443 https
+
Listen
+ cc絎障Address already in use
+ 若<祉若吾障
+ 茯: | 篆倶潟激с潟ャ若紊ч |
---|---|
罕: | ListenBacklog backlog |
: | ListenBacklog 511 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
篆倶潟激с潟ャ若紊ч激с
+ 筝茯炊眼綽荀障茯炊眼障障
+ TCP SYN ≪帥倶筝翫
+ 紜鴻障激鴻障
+ listen(2)
激鴻潟若違<若帥
+ 荀т
ゃ OS 絨違障 + ゃ OS 罸違c障障紊 OS с + 違絎ゃ<障т戎cс + 荐絎ゃ冴ャ (絽吾荐絎ゃ紊сゃ) + 篏帥c羈
+ +茯: | 篁翫<ゃ篏臀(ィ絅) |
---|---|
罕: | LockFile filename |
: | LockFile logs/accept.lock |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , perchild , prefork , threadpool , worker |
AcceptMutex
+ fcntl
flock
+ 荐絎篏睡翫篏睡<ゃ吾鴻
+ LockFile
ccц┃絎障
+ cc絽吾障障障
+ 筝祉 logs
c NFS
+ с潟翫ゃ紊障
+ <ゃ若c鴻
+ 篆絖違с
+ <ゃ潟泣若祉鴻 PID <ゃ篁障
/var/tmp
+ c茯違с吾莨若c<ゃ
+ 臀鴻с泣若莎桁篏
+ <ゃ篏篏絋絎潟c
+ 茯違с泣若号≪帥綣莎激сс
ccィ絅с AcceptMutex
+ ccф篁号絎<ゃ贋絎
AcceptMutex
茯: | 鴻綽膈篏 +絖祉鴻紊у |
---|---|
罕: | MaxClients number |
: | 荅括完篏睡羈荀т |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , prefork , threadpool , worker |
MaxClients
cc
+ 綽膈с鴻違荐絎障
+ MaxClients
狗違莇潟激с潟絽吾
+ ListenBacklog
+ ccц┃絎違障сャ若ャ障
+ 篁鴻緇障ч絖祉鴻腥冴
+ 罨<潟激с潟綽膈障
鴻泣若 ( prefork
)
+ сMaxClients
+ 鴻綽膈莎桁
+ 絖祉鴻紊ф違障
+ ゃ 256
с紜翫
+ ServerLimit
+ ゃ紜綽荀障
鴻泣若ゃ泣若 (
+ beos
worker
)
+ сMaxClients
+ ゃ≪潟綽膈с鴻膩違狗障
+ beos
сゃ 50
с
+ ゃ MPM сゃ 16
+ ServerLimit
+ 25
(ThreadsPerChild
) с
+ MaxClients
+ 16 祉剛札筝綽荀ゃ障у翫
+ ServerLimit
+ 紜綽荀障
茯: | free() 若違
+筝祉<≪≪宴若帥篆膓<≪紊ч |
---|---|
罕: | MaxMemFree KBytes |
: | MaxMemFree 0 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpm_netware , prefork , threadpool , worker , mpm_winnt |
MaxMemFree
cc
+ free()
若違
+ 筝祉≪宴若帥篆с腥冴<≪紊уゃゃ篏ц┃絎障
+ 荐絎吟荐絎≦狗障
茯: | 絖泣若腮弱筝宴鴻違筝 |
---|---|
罕: | MaxRequestsPerChild number |
: | MaxRequestsPerChild 10000 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
MaxRequestsPerChild
cc
+ 絖泣若祉鴻宴с鴻狗違
+ 荐絎障MaxRequestsPerChild
+ 鴻緇絖祉鴻腟篋障
+ MaxRequestsPerChild
0
+ 荐絎翫祉鴻腟篋障
mpm_netware
mpm_winnt
+ сゃ 0
с
MaxRequestsPerChild
+ 若狗篋ゃ鴻障:
KeepAlive
鴻翫
+ 筝ょ鴻狗荅峨障
+ 絎合筝ゃ絖祉鴻潟激с違
+ 狗紊障
茯: | ≪ゃ鴻紊ф |
---|---|
罕: | MaxSpareThreads number |
: | 荅括完篏睡羈荀т |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpm_netware , mpmt_os2 , perchild , threadpool , worker |
≪ゃ鴻紊ф違с違 MPM с + cc違宴鴻障
+ +perchild
с
+ MaxSpareThreads 10
с
+ MPM ≪ゃ鴻違絖祉鴻h障
+ 絖祉鴻≪ゃ鴻紊翫
+ 泣若絖祉鴻障鴻腟篋紮障
worker
, leader
,
+ threadpool
с
+ MaxSpareThreads 250
с
+ MPM ≪ゃ鴻違泣若篏хh障
+ 泣若с≪ゃ鴻違紊翫
+ 医絨違障у祉鴻腟篋障
mpm_netware
с
+ MaxSpareThreads 100
с
+ MPM 激潟違祉鴻у茵障с
+ 鴻≪鴻違泣若篏у絎障
beos
mpmt_os2
+ mpm_netware
篌若障
+ beos
сゃ MaxSpareThreads 50
+ сmpmt_os2
сゃ 10
+ с
MaxSpareThreads
ゃ狗障
+ Apache 罨<荀緇c茖罩c障
perchild
с
+ MaxSpareThreads
+ ThreadLimit
+ 膈篁ヤс綽荀障mpm_netware
+ MinSpareThreads
+ 紊с綽荀障leader
, threadpool
,
+ worker
с
+ MinSpareThreads
+ ThreadsPerChild
+ ф浦障膩膈紊с綽荀障茯: | 鴻綽膈с +≪ゃ鴻違絨 |
---|---|
罕: | MinSpareThreads number |
: | 荅括完篏睡号荀т |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpm_netware , mpmt_os2 , perchild , threadpool , worker |
鴻綽膈鴻違絨ゃс + 違 MPM с + cc違宴鴻障
+ +perchild
с
+ MinSpareThreads 5
с
+ ≪ゃ鴻違絖祉号h障
+ 絖祉鴻違鴻違
+ 泣若絖祉鴻違鴻篏紮障
+ сNumServers
+ 10
MinSpareThreads
+ 5
翫絨с 50 ≪ゃ鴻
+ 激鴻筝障
worker
, leader
,
+ threadpool
с
+ MinSpareThreads 75
с
+ ≪ゃ鴻違泣若篏хh障
+ 泣若違≪ゃ鴻違
+ ≪ゃ鴻違違紊с障
+ 違絖祉鴻障
mpm_netware
с
+ MinSpareThreads 10
с
+ 激潟違祉 MPM сс泣若篏х∞障
beos
mpmt_os2
+ mpm_netware
鋍若障
+ beos
с MinSpareThreads 1
+ сmpmt_os2
с
+ 5
с
茯: | 若≪潟祉 ID +泣若荐蚊<ゃ |
---|---|
罕: | PidFile filename |
: | PidFile logs/httpd.pid |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
PidFile
ccс
+ 若≪潟祉 ID 泣若荐蚊<ゃ荐絎障
+ <ゃ腟九障鴻с翫
+ ServerRoot
+ 後丞宴障
+ PidFile /var/run/apache.pid
+
泣若 ErrorLog
+ TransferLog
+ 眼荐絎<ゃ
+ 茯莨若泣若激違с
+ 箴水障
+ SIGHUP (kill -1) 激違 PidFile
+ 吾祉 ID сс障
PidFile
違<ゃ荐臀篏臀
+ 祉ャ
+ 羈鴻障
Apache 2 с
+ apachectl
+ 鴻帥篏睡泣若 () 莎桁罩≪
+ 茵ィ絅障
茯: | TCP 篆<<泣ゃ |
---|---|
罕: | ReceiveBufferSize bytes |
: | ReceiveBufferSize 0 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , mpm_netware , mpm_winnt , mpmt_os2 , prefork , worker |
泣若 TCP 篆<<泣ゃ冴絎ゃ違荐絎障
+ +0
翫OS ゃ篏睡障
茯: | 絖祉鴻f冴若帥篆絖 +<ゃ篏臀 |
---|---|
罕: | ScoreBoardFile file-path |
: | ScoreBoardFile logs/apache_status |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpm_winnt , perchild , prefork , threadpool , worker |
Apache 荀祉鴻絖祉拷篆<鴻潟≪若障 + 篆≧純<ゃ綽荀≪若c障 + <ゃ絎違Apache 障<≪筝 + (水掩<≪) 鴻潟≪若篏紊掩 + c鴻筝<ゃ (<ゃ若鴻掩<≪) 篏障 + cc絎Apache + 綽c鴻<ゃ障
+ +
+ ScoreBoardFile /var/run/apache_status
+
<ゃ若鴻掩<≪泣若若c取純≪宴若激с潟 + 鴻潟≪若贋・≪祉鴻綽荀翫綵鴻腴<障
+ +ScoreBoardFile
篏帥翫
+ RAM c鴻筝臀鴻若筝с
+ 違<ゃ荐臀篏臀
+ 祉ャ
+ 罕羈鴻с羈
茯: | TCP <泣ゃ |
---|---|
罕: | SendBufferSize bytes |
: | SendBufferSize 0 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
泣若 TCP 篆<<泣ゃ冴絎ゃ違荐絎障 + 蕭чゃ潟激医 + (箴 100ms 腮綺紊ч御┴蕭篆∴君) + ゃ筝 OS ゃ紜絽吾箴水с
+ +0
翫OS ゃ篏睡障
茯: | 荐絎純泣若祉号違筝 |
---|---|
罕: | ServerLimit number |
: | 荅括完篏睡羈 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , perchild , prefork , threadpool , worker |
prefork
MPM 翫cc
+ Apache 祉合┝筝
+ MaxClients
+ 荐絎純筝ゃ荐絎障
+ (荐恰絵: prefork 翫ゃ≪潟 = 泣若祉号違)
+ worker
MPM 翫cc
+ ThreadLimit
+ cc腟水
+ Apache 祉合┝筝
+ MaxClients
+ 荐絎純筝ゃ荐絎障
+ 莎桁筝cc紊眼∴障
+ MaxClients
+ 莎桁筝篆罩cс障
cc篏睡鴻羈
+ ServerLimit
綽荀篁ヤ紊сゃ
+ 荐絎翫篏荐篏睡掩<≪蚊綵障
+ ServerLimit
+ MaxClients
+ 激鴻宴膀蚊莇荐絎ゃc
+ Apache 莎桁莎桁筝絎絎с
prefork
MPM с
+ MaxClients
+ 256 () 紊сゃ荐絎綽荀篏睡
+ 絽 MaxClients
+ 違鴻綽荀篁ヤ紊сゃ絎帥
worker
, leader
,
+ threadpool
MPM с
+ MaxClients
+ ThreadsPerChild
+ 荐絎 16 泣若祉 ()
+ 篁ヤ綽荀翫推戎絽
+ MaxClients
+ ThreadsPerChild
+ 鴻綽荀泣若祉号遺札筝紊сゃ
+ 荐絎帥
perchild
MPM с
+ NumServers
8 ()
+ 紊сゃ荐絎綽荀推戎
ServerLimit 20000
狗篁с潟潟ゃ障
+ (prefork
MPM с 200000
)
+ 鴻鴻c茯ゃc激倶
+ 帥臀с
茯: | 莎桁絖泣若祉鴻 |
---|---|
罕: | StartServers number |
: | 荅括完篏睡号 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , mpmt_os2 , prefork , threadpool , worker |
StartServers
cc
+ 莎桁絖泣若祉鴻違荐絎障
+ 祉号違莢激綽九勝障с
+ 絽吾ゃ茯炊眼宴障с
ゃ MPM 違障
+ leader
, threadpool
,
+ worker
StartServers 3
с
+ prefork
5
с
+ mpmt_os2
2
с
茯: | 莎桁鴻 |
---|---|
罕: | StartThreads number |
: | 荅括完篏睡号 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | beos , mpm_netware , perchild |
莎桁鴻違с + 鴻違莢激綽九勝障с + 絽吾ゃ茯炊眼宴障с
+ +perchild
с
+ StartThreads 5
сcc莎桁
+ 祉号鴻違菴処掘障
mpm_netware
с
+ StartThreads 50
с
+ 翫祉鴻筝ゃс
+ 莎桁鴻綽膈鴻膩違障
beos
с StartThreads
+ 10
с
+ 障莎桁鴻膩違障
茯: | 荐絎純絖祉号鴻違筝 +荐絎障 |
---|---|
罕: | ThreadLimit number |
: | 荅括完篏睡号 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , mpm_winnt , perchild , threadpool , worker |
篋: | Apache 2.0.41 篁ラ mpm_winnt
+у |
cc
+ Apache 祉合┝筝
+ ThreadsPerChild
+ 荐絎純筝ゃ荐絎障莎桁ccゃ
+ 紊眼∴障
+ ThreadsPerChild
+ 莎桁筝ccф絎筝ゃ障
+ 紊眼с障
cc篏睡鴻羈
+ ThreadLimit
+ ThreadsPerChild
+ c紊сゃ荐絎翫
+ 篏荐篏睡掩<≪蚊綵障障
+ ThreadLimit
+ ThreadsPerChild
+ 筝≧鴻激鴻宴膀蚊莇翫
+ Apache 莎桁莎桁筝絎絎с
+ ccゃ篁篏睡 Apache ThreadsPerChild
篋割ゃ
+ 莇ゃ荐絎с
+
ThreadLimit
ゃ
+ mpm_winnt
1920
с
+ 篁翫 64
с
ThreadLimit 20000
(mpm_winnt
+ 翫 ThreadLimit 15000
)
+ 狗篁с潟潟ゃ障
+ 鴻鴻c茯ゃc激倶
+ 帥臀с
茯: | 絖祉鴻鴻 |
---|---|
罕: | ThreadsPerChild number |
: | 荅括完篏睡号 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , mpm_winnt , threadpool , worker |
cc絖祉鴻х
+ 鴻違荐絎障
+ 絖祉鴻紮鴻
+ 緇障mpm_winnt
+ 絖祉鴻筝ゃ MPM с違
+ ゃ泣若莢桁篏宴腮綺
+ 紊с違障worker
+ 絖祉鴻茲違 MPM с違
+ 泣若絽梧激宴腮綺
+ 鴻膩紊違障
mpm_winnt
с ThreadsPerChild
+ ゃ 64
с篁翫
+ 25
с
茯: | ゃ≪潟潟激с潟ゃ鴻篏睡 +鴻帥ゃ |
---|---|
罕: | ThreadStackSize size |
: | NetWare с 65536篁 OS сc |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , mpm_netware , mpm_winnt , perchild , threadpool , worker |
篋: | 2.1 篁ラ |
ゃ≪潟潟激с潟<潟激с喝綽荀≪吾ャ若
+ 若喝冴茵c鴻(紊亥) 鴻帥泣ゃ冴
+ ThreadStackSize
ccф絎障
+ 紊ф泣翫 OS 絎鴻帥泣ゃ冴ゃ
+ с茯炊眼綽荀翫障:
ThreadStackSize
+ OS ゃ紊сゃ絎цВ羆冴障
+ 泣若若h純≪吾ャ若с臀綽荀с荐莠
+ 翫Apache 阪<祉若吾с鴻鴻帥泣ゃ冴
+ 絨翫帥茯炊眼ThreadStackSize
+ OS ゃ絨ゃс絖祉鴻
+ 鴻違紊障
+ 帥ゃ茯炊眼鴻医сс泣若絎
+ 鴻с翫c茵鴻с
+ 障紊違鴻帥荀羆鴻
+ с
+ Web 泣若荐絎紊眼憜 ThreadStackSize
+ 荐絎羔翫障茯: | 鴻綽膈若 ID |
---|---|
罕: | User unix-userid |
: | User #-1 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | leader , perchild , prefork , threadpool , worker |
篋: | Apache 2.0 篁ラс違若荐絎с炊鴻с + |
User
cc
+ 泣若鴻綽膈若 ID 荐絎障
+ cc篏睡鴻帥潟≪喝
+ 泣若 root
罔ц儀綽荀障
+ root 若吟с泣若莎桁翫
+ 罔篏若吟吾紊с
+ 腟絮若吟祉鴻絎茵膓障
+ root
ц儀翫荀祉鴻 root
+ 絎茵罩e幻篏с
+ Unix-userid 罨<с
若吟紊荀潟<ゃ
+ ≪祉劫純c障罔ゃ鴻сс
+ 罕 HTTP 鴻絲障綽膈潟
+ 絎茵潟若絎茵с罔ゃ鴻сс
+ 泣若絎茵劫違若吟違若
+ 荐絎障
+ nobody
若吟篏睡膊∞障
+ 絽吾障с障
+ nobody
若吟激鴻
+ 篁綵劫蚊cャс
罩g∈c演堺сャс
+ User
( Group
) root
+ 荐絎с
perchild
MPM с違若 ID
+ ц違若c鴻障
+ User
筝祉泣若若 ID
+ AssignUserID
+ cc <VirtualHost>
祉激с潟吾
+ 若絎臂障
壕篋: cc
+ <VirtualHost>
+ т戎泣若障
+ suexec
泣若荐絎с違
+ SuexecUserGroup
+ 篏睡
Apache HTTP サーバ バージョン 2.3
+ +Apache HTTP 泣若 若吾с 2.3
説明: | Windows NT -向けに最適化されたマルチプロセッシングモジュール |
---|---|
ステータス: | MPM |
モジュール識別子: | mpm_winnt_module |
ソースファイル: | mpm_winnt.c |
茯: | Windows NT +祉激潟違≪吾ャ若 |
---|---|
鴻若帥: | MPM |
≪吾ャ若茘ュ: | mpm_winnt_module |
純若鴻<ゃ: | mpm_winnt.c |
このマルチプロセッシングモジュール (MPM) - は Windows NT でのデフォルトになります。 - 一つの制御用プロセスを用い、これが一つの子プロセスを起動し、 - そして子プロセスがリクエストを取り扱うためにスレッドを - 起動します。
+祉激潟違≪吾ャ若 (MPM) + Windows NT с障 + 筝ゃ九勝祉鴻筝ゃ絖祉鴻莎桁 + 絖祉鴻鴻宴鴻 + 莎桁障
説明: | ネットワーク接続の受け付けに accept() をAcceptEx の代わりに使う |
---|---|
構文: | Win32DisableAcceptEx |
デフォルト: | AcceptEx() はデフォルトで有効になっています。AcceptEx() を無効にする
-ためにこのディレクティブを使います。 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | mpm_winnt |
互換性: | 2.0.49 バージョン以降で使用可能 |
茯: | 若・膓篁 accept() AcceptEx 篁c篏帥 |
罕: | Win32DisableAcceptEx |
: | AcceptEx() ф鴻c障AcceptEx() ≦鴻
+cc篏帥障 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | mpm_winnt |
篋: | 2.0.49 若吾с割札т戎 |
AcceptEx() は Microsoft WinSock v2 API で、場合によっては
- BSD 形式の accept()
API よりもよい性能を発揮します。
- よく使われている Windows 製品の中で、特にウィルススキャナや VPN パッケージ
- の中には、バグが原因で AcceptEx()
の適切な動作を妨げるものがあります。
- 以下のようなエラーに遭遇した場合は、このディレクティブを使用して
- AcceptEx()
を使用しないようにしてください。
AcceptEx() Microsoft WinSock v2 API с翫c
+ BSD 綵√ accept()
API ц純堺障
+ 鋎帥 Windows 茖遵筝с鴻c鴻鴻c VPN 宴若
+ 筝違 AcceptEx()
篏絋障
+ 篁ヤ若翫cc篏睡
+ AcceptEx()
篏睡
[error] (730038)An operation was attempted on something that is
@@ -90,5 +90,5 @@
ja
Apache HTTP サーバ バージョン 2.3
-説明: | スレッドを使わず、先行して fork を行なうウェブサーバを実装 - |
---|---|
ステータス: | MPM |
モジュール識別子: | mpm_prefork_module |
ソースファイル: | prefork.c |
このマルチプロセッシングモジュール (MPM) は、 - Unix 上での Apache 1.3 のデフォルトの挙動と非常によく似た方法で - リクエストを処理する、スレッドを使わず、先行して fork を行なう - ウェブサーバを実装しています。 - スレッドセーフでないライブラリとの互換性をとるために、 - スレッドを避ける必要のあるサイトでは、このモジュールの使用が適切でしょう。 - あるリクエストで発生した問題が他のリクエストに影響しないように、 - 個々のリクエストを単離するのにも、最適な MPM です。
- -この MPM は非常に自律的なので、この MPM の設定ディレクティブを
- 調整する必要はほとんどないでしょう。もっとも重要なことは、
- MaxClients
- が、予想される同時リクエスト数を十分扱えるぐらいは大きいけれども、
- 全プロセスに十分な物理メモリが確実に行き渡る程度には小さい値にする、
- ということです。
一つのコントロールプロセスが、 - コネクションに対して listen して、しかるべき時に応答する - 子プロセスを起動します。Apache は常に幾つかのスペア - かアイドルなサーバプロセスを維持していて、それらは入ってきた - リクエストに応答できるように待機しています。 - このようにしてクライアントは、リクエストが応答される前に、 - 新しい子プロセスが fork されるのを待たなくてもよいように - なっています。
- -親プロセスがリクエストに応答するの子プロセスを
- どのように生成するかは、
- StartServers
,
- MinSpareServers
,
- MaxSpareServers
,
- MaxClients
- で調整します。一般的に、Apache は非常に自律的なので、
- 大抵のサイトではこれらのディレクティブをデフォルト値から調整する
- 必要はないでしょう。
- 同時に 256 を超えるリクエストに応答しないといけないサイトでは、
- MaxClients
- を増やす必要があるでしょう。
- 一方、メモリの限られているサイトでは、スラッシング
- (メモリとディスク間で何度もスワップ) が起こるのを防ぐために
- MaxClients
- を減らす必要があるでしょう。プロセス生成のチューニングに関する
- 詳しい情報は、性能に関するヒント
- にあります。
通常 Unix では親プロセスは 80 番ポートにバインドするために
- root
で起動されますが、子プロセスやスレッドは
- もっと低い権限のユーザで Apache によって起動されます。
- User
と
- Group
- ディレクティブは
- Apache の子プロセスの権限を設定するのに用いられます。
- 子プロセスはクライアントに送るコンテンツ全てを読めないといけませんが、
- 可能な限り必要最小限の権限のみを持っているようにするべきです。
MaxRequestsPerChild
- は、古いプロセスを停止して新しいプロセスを起動することによって、
- どの程度の頻度でサーバがプロセスをリサイクルするかを制御します。
説明: | アイドルな子サーバプロセスの最大個数 |
---|---|
構文: | MaxSpareServers number |
デフォルト: | MaxSpareServers 10 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | prefork |
MaxSpareServers
ディレクティブは、
- アイドルな子サーバプロセスの希望最大個数を設定します。
- アイドルプロセスとは、リクエストを扱っていないプロセスです。
- MaxSpareServers
よりも多い数がアイドルであれば、
- 親プロセスは超過プロセスを kill します。
非常に混んでいるサイトでのみ、このパラメータをチューニングするべきです。
- このパラメータを大きくするということは、大抵の場合は悪い発想です。
- MinSpareServers
- 以下に設定した場合、MinSpareServers
- +1
に自動調整されます。
説明: | アイドルな子サーバプロセスの最小個数 |
---|---|
構文: | MinSpareServers number |
デフォルト: | MinSpareServers 5 |
コンテキスト: | サーバ設定ファイル |
ステータス: | MPM |
モジュール: | prefork |
MaxSpareServers
ディレクティブは、
- アイドルな子サーバプロセスの希望最小個数を設定します。
- アイドルプロセスとは、リクエストを扱っていないプロセスです。
- MinSpareServers
よりも少ない数がアイドルであれば、
- 親プロセスは最高で 1 秒につき 1 個の割合で新しい子プロセスを生成します。
非常に混んでいるサイトでのみ、このパラメータをチューニングするべきです。 - このパラメータを大きくするということは、大抵の場合は悪い発想です。
- -Apache HTTP 泣若 若吾с 2.3
+茯: | 鴻篏帥茵 fork 茵с泣若絎茖 + |
---|---|
鴻若帥: | MPM |
≪吾ャ若茘ュ: | mpm_prefork_module |
純若鴻<ゃ: | prefork.c |
祉激潟違≪吾ャ若 (MPM) + Unix 筝с Apache 1.3 絽吾鋍若号 + 鴻鴻篏帥茵 fork 茵 + с泣若絎茖障 + 鴻祉若сゃ篋с + 鴻帥綽荀泣ゃс≪吾ャ若篏睡с + 鴻х榊馹篁鴻綵演帥 + 鴻≪ MPM с
+ + MPM 絽吾緇с MPM 荐絎cc
+ 茯炊眼綽荀祉сc荀
+ MaxClients
+ 篋潟鴻違宴紊с
+ 祉鴻<≪腆阪茵羝<腮綺絨ゃ
+ с
筝ゃ潟潟若祉鴻 + 潟激с潟絲障 listen 鴻綽膈 + 絖祉鴻莎桁障Apache 絽吾綛障ゃ鴻 + ≪ゃ泣若祉鴻膓ャc + 鴻綽膈с緇罘障 + ゃ≪潟鴻綽膈 + 違絖祉鴻 fork 緇 + c障
+ +荀祉鴻鴻綽膈絖祉鴻
+
+ StartServers
,
+ MinSpareServers
,
+ MaxSpareServers
,
+ MaxClients
+ ц炊眼障筝Apache 絽吾緇с
+ 紊ф泣泣ゃсccゃ茯炊眼
+ 綽荀с
+ 256 莇鴻綽膈泣ゃс
+ MaxClients
+ 紜綽荀с
+ 筝鴻<≪泣ゃс鴻激潟
+ (<≪c鴻т綺鴻) 莎激蚊
+ MaxClients
+ 羝綽荀с祉合ャ若潟違≪
+ 荅潟宴ц純≪潟
+ 障
絽 Unix с荀祉鴻 80 若ゃ潟
+ root
ц儀障絖祉鴻鴻
+ c篏罔若吟 Apache c莎桁障
+ User
+ Group
+ cc
+ Apache 絖祉鴻罔荐絎障
+ 絖祉鴻ゃ≪潟潟潟潟茯障
+ 純綽荀絨罔帥c鴻с
MaxRequestsPerChild
+ ゃ祉鴻罩≪違祉鴻莎桁c
+ 腮綺糸墾с泣若祉鴻泣ゃ九勝障
茯: | ≪ゃ絖泣若祉鴻紊у |
---|---|
罕: | MaxSpareServers number |
: | MaxSpareServers 10 |
潟潟鴻: | 泣若荐絎<ゃ |
鴻若帥: | MPM |
≪吾ャ若: | prefork |
MaxSpareServers
cc
+ ≪ゃ絖泣若祉鴻絽紊у違荐絎障
+ ≪ゃ祉鴻鴻宴c祉鴻с
+ MaxSpareServers
紊違≪ゃс違
+ 荀祉鴻莇祉鴻 kill 障
絽吾羞激с泣ゃс帥<若帥ャ若潟違鴻с
+ <若帥紊с紊ф泣翫堺潟с
+ MinSpareServers
+ 篁ヤ荐絎翫MinSpareServers
+ +1
茯炊眼障
Apache HTTP サーバ バージョン 2.3
+ +Apache HTTP 泣若 若吾с 2.3
ディレクティブ クイックリファレンスでは、各 Apache 設定ディレクティブの - 使用方法、デフォルト値、ステータスとコンテキストを示しています。 - 各ディレクティブの、より詳しい情報に関しては - ディレクティブ辞書を - ご覧下さい。
+cc ゃ<潟鴻с Apache 荐絎cc + 篏睡号ゃ鴻若帥鴻潟潟鴻腓冴障 + cc荅潟宴≪ + cc莨 + 荀т
-第 1 列目はディレクティブの名前と使用方法です。 - 第 2 列目は (もしあれば) デフォルト値となっています。 - デフォルト値が長すぎて表示しきれない場合は、最初の文字列の後ろに - 「 + 」が続きます。
+膃 1 cc篏睡号с + 膃 2 () ゃc障 + ゃ激茵腓冴翫絖緇 + + 膓障
-第 3, 4 列は、下の表の注釈に従って、 - ディレクティブの使用できるコンテキストと、 - ディレクティブのステータスが示されています。
+膃 3, 4 筝茵羈緇c + cc篏睡с潟潟鴻 + cc鴻若帥鴻腓冴障
A | B | C | D | E | F | G | H | I | K | L | M | N | O | P | R | S | T | U | V | W | X | -
-
-
-
-
-Apache HTTP サーバ バージョン 2.3 -
-
-
-
\ No newline at end of file
diff --git a/docs/manual/mod/worker.html.ja.utf8 b/docs/manual/mod/worker.html.ja.utf8
new file mode 100644
index 0000000000000000000000000000000000000000..a6cd35c29cca980e417f4db39ae9e883ddd078f6
--- /dev/null
+++ b/docs/manual/mod/worker.html.ja.utf8
@@ -0,0 +1,188 @@
+
+
+
+Apache MPM worker- -This translation may be out of date. Check the
- English version for recent changes.
-
概要- -このマルチプロセッシングモジュール (MPM) - は、マルチスレッドとマルチプロセスのハイブリッド型サーバを - 実装しています。リクエストの応答にスレッドを使うと、 - プロセスベースのサーバよりも少ないシステム資源で、 - 多くのリクエストに応答することができます。 - さらに、多くのスレッドを持った複数のプロセスを維持することで、 - プロセスベースのサーバの持つ安定性を保持しています。 - -この MPM を制御するのに使われる最も重要なディレクティブは、
- ディレクティブ-
トピック-
参照-
-
-動作方法-一つの制御用プロセス (親) が子プロセスを起動します。
- 子プロセスは
- Apache はスペアの、つまりアイドルなサーバスレッドの
- プールを常に維持していて、それらは入ってくるリクエストに
- 答えられるように待機しています。
- このようにして、クライアントはリクエストの応答が得られるようになるために
- 新しいスレッドやプロセスが生成されるのを
- 待たなくてもよいようになっています。
- 起動初期時のプロセス総数は、
- 活動中の子プロセスの数と子プロセス中のサーバスレッドの数の越えられない
- 上限を設定するディレクティブが二つあります。これらはサーバを
- 完全に停止して、再起動することでしか変更することはできません。
- 活動中の子プロセス群に加えて、少なくとも一つのサーバスレッドが
- 既存のクライアントからの接続を扱っている終了しようとしている
- 子プロセスがある可能性があります。終了中のプロセスは
通常 Unix では親プロセスは 80 番ポートにバインドするために
-
+
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +
+
+
+
\ No newline at end of file
diff --git a/docs/manual/mpm.html b/docs/manual/mpm.html
index 52d9e78e9e1e3fa76f26445cb7ea9a3356a42a3f..d0437aaf5868879ebef3c75bf8ae4e3577975c22 100644
--- a/docs/manual/mpm.html
+++ b/docs/manual/mpm.html
@@ -14,9 +14,9 @@ URI: mpm.html.fr
Content-Language: fr
Content-type: text/html; charset=ISO-8859-1
-URI: mpm.html.ja.euc-jp
+URI: mpm.html.ja.utf8
Content-Language: ja
-Content-type: text/html; charset=EUC-JP
+Content-type: text/html; charset=UTF-8
URI: mpm.html.ko.euc-kr
Content-Language: ko
diff --git a/docs/manual/mpm.html.ja.euc-jp b/docs/manual/mpm.html.ja.euc-jp
deleted file mode 100644
index 502d08e8b5334187abc988eafbecb889951eee54..0000000000000000000000000000000000000000
--- a/docs/manual/mpm.html.ja.euc-jp
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
-Apache MPM worker+ +This translation may be out of date. Check the
+ English version for recent changes.
+
网荀+ +祉激潟違≪吾ャ若 (MPM) + 鴻祉鴻ゃ泣若 + 絎茖障鴻綽膈鴻篏帥 + 祉鴻若鴻泣若絨激鴻莖羣с + 紊鴻綽膈с障 + 紊鴻c茲違祉鴻膓с + 祉鴻若鴻泣若ゅ絎с篆障 + + MPM 九勝篏帥荀cc
+ cc+
+
+篏号+筝ゃ九勝祉 (荀) 絖祉鴻莎桁障
+ 絖祉鴻
+ Apache 鴻≪ゃ障≪ゃ泣若鴻
+ 若絽吾膓ャc鴻
+ 膈緇罘障
+ ゃ≪潟鴻綽膈緇
+ 違鴻祉鴻
+ 緇c障
+ 莎桁祉合違
+ 羇糸筝絖祉鴻違絖祉剛賢泣若鴻違莇
+ 筝荐絎cc篋ゃ障泣若
+ 絎罩≪莎桁с紊眼с障
+ 羇糸筝絖祉合召絨筝ゃ泣若鴻
+ √ゃ≪潟・膓宴c腟篋
+ 絖祉鴻醇с障腟篋筝祉鴻
絽 Unix с荀祉鴻 80 若ゃ潟
+
-
-
-
-Apache HTTP サーバ バージョン 2.3 -マルチプロセッシングモジュール (MPM)- -This translation may be out of date. Check the
- English version for recent changes.
-
-この文書ではマルチプロセッシングモジュールがどのようなもので、 -Apache HTTP サーバでどのように使用されるかについて解説しています。 -
-
-はじめに- -Apache HTTP サーバは異なる幅広い環境、多種多様なプラットホームで - 動作するように、パワフルで柔軟性に富んだ設計になっています。 - 異なるプラットホーム・異なる環境ではしばしば、 - 異なる機能が必要になったり、 - 同じ機能でも効率のために異なる実装が必要になったりします。 - Apache ではモジュール化された設計により幅広い環境に適応してきました。 - この設計のおかげで、管理者は - コンパイル時または実行時にどのモジュールをロードするか選ぶことによって、 - どの機能をサーバに取り込むか選択することがができます。 - -Apache 2.0 では、 - このモジュール化された設計をサーバの基本機能にまで拡張しました。 - サーバには精選されたマルチプロセッシングモジュール (MPM) - が付いてきて、これらはマシンのネットワークポートをバインドしたり、 - リクエストを受け付けたり、リクエストを扱うよう子プロセスに割り当てたり、 - といった役割を持ちます。 - -モジュール化された設計をサーバのこのレベルまで拡張することで - 二つの重要な利点が生まれます: - -
ユーザレベルでは、MPM は他の Apache - モジュールと同等に見えます。 - 主な違いは、いつでも唯一の MPM - がロードされなければならないという点です。 - 利用可能な MPM は - module インデックスにあります。 - -
-
-MPM を選ぶ- -MPM は設定中に選択して、サーバ内部にコンパイルされなければ - なりません。 - コンパイラは、スレッドが使用されている場合に様々な機能を最適化できますが、 - そのためにはそもそもスレッドが使われているということを知る必要があります。 - -望みの MPM を実際に選ぶためには、 サーバコンパイル後は、どの MPM が選択されたかを
-
- MPM デフォルト値- -次表に様々な OS 向けのデフォルトの MPM 一覧を掲載しています。 -コンパイル時に意図的に他を選択しなければ、自動的にこれらの MPM -が選択されます。 - -
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +祉激潟違≪吾ャ若 (MPM)+ +This translation may be out of date. Check the
+ English version for recent changes.
+
+吾с祉激潟違≪吾ャ若с +Apache HTTP 泣若с篏睡ゃ茹h障 +
+
+
++ +Apache HTTP 泣若違綛綺医紊腮紊罕若 + 篏ф荵с絲荐荐c障 + 違若紫違医с違違 + 違罘純綽荀c + 罘純с合違絎茖綽荀c障 + Apache с≪吾ャ若荐荐綛綺医綽障 + 荐荐с膊∞ + 潟潟ゃ障絎茵≪吾ャ若若吾吟c + 罘純泣若莨若御с障 + +Apache 2.0 с + ≪吾ャ若荐荐泣若堺罘純障ф≦宍障 + 泣若膕冗吾祉激潟違≪吾ャ若 (MPM) + 篁激潟若若ゃ潟 + 鴻篁鴻宴絖祉鴻蚊綵 + c綵劫蚊<障 + +≪吾ャ若荐荐泣若障ф≦宍 + 篋ゃ荀鴻障障: + +
若吟сMPM 篁 Apache + ≪吾ャ若膈荀障 + 筝祉ゃс筝 MPM + 若違鴻с + 純 MPM + module ゃ潟障 + +
-
-
-
-Apache HTTP サーバ バージョン 2.3 -Apache 2.0 の新機能の概要- - -この文書では、Apache HTTP サーババージョン 1.3 と 2.0 - の主な違いについて記述しています。 -
-
-コア機能の拡張- - -
- モジュールの拡張- - -
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +Apache 2.0 井純网荀+ + +吾сApache HTTP 泣若若吾с 1.3 2.0 + 筝祉ゃ荐菴違障 +
+
+潟∽純≦宍+ + +
+ ≪吾ャ若≦宍+ + +
-
-
-
-Apache HTTP サーバ バージョン 2.3 -セクションの設定- -This translation may be out of date. Check the
- English version for recent changes.
- 設定ファイル中のディレクティブは
-サーバ全体に適用されたり、特定のディレクトリやファイル、ホスト、URL にのみ
-適用されるように制限したりすることができます。この文書は設定用のセクションの
-コンテナや
-
-設定用セクションコンテナの種類- -
コンテナには二つの基本となる種類があります。ほとんどのコンテナは
-各リクエストに対して評価されます。その場合、コンテナ中のディレクティブは
-コンテナにマッチするリクエストにのみ適用されます。
-一方、
次の例では、
-
-ファイルシステムとウェブ空間- -最もよく使われる設定のセクションコンテナはファイルシステムやウェブ空間の
-特定の場所の設定を変更するものです。まず、この二つの違いを理解することが
-大切です。ファイルシステムはオペレーティングシステムから見たディスクの内容です。
-たとえば、デフォルトのインストールでは Apache は Unix ファイルシステムでは
- ファイルシステムコンテナ- -
ファイルシステムの特定の場所にあるファイルを指定するために、
-
ウェブ空間コンテナ- -一方、
ワイルドカードと正規表現- -
これより柔軟なマッチングが必要な場合は、これらのコンテナに正規表現
-(regex) 版である
- 全ユーザディレクトリの設定を変更する、非 regex -ワイルドカードセクションは次のようになります。 - -
regex セクションを使用することで、画像ファイルの多くのタイプに対する -アクセスを一度に拒否できます。 -
いつ何を使うか- -ファイルシステムコンテナとウェブ空間コンテナを使い分けるのは、
-実際には非常に簡単です。ファイルシステムに依存する
-オブジェクトにディレクティブを適応する場合は、必ず
- ファイルシステム上のオブジェクトへのアクセスを制限するために、
-
大文字小文字を区別するファイルシステムを使用しているから上記のことは
-無関係だと思われるかもしれませんが、
-同一のファイルシステム位置に複数のウェブ空間位置をマップする方法は、
-他にいくらでもあるということを覚えていてください。
-ですからできる限りファイルシステムコンテナを使用してください。
-しかしながら一つだけ例外があります。
-
-
-バーチャルホスト- -
-
-プロクシ- -
-
-どのディレクティブが使えるの?- -どのタイプの設定セクションでどのディレクティブが使用できるかは、
-ディレクティブの Context
-を見てください。
-
- セクションのマージ方法- -マージの順番は以下のようになっています: - -
後のセクションのディレクティブが前のセクションのものを上書きします。 - - -技術メモ- 実際には、名前を変換する段階 (URL - をファイル名にマップするためにAlias や
- DocumentRoot が使用されるところ) の直前に
- <Location> /<LocationMatch>
- が行なわれます。
- これらを適用した結果は変換が終わった後に完全に捨てられます。
-例- -次はマージの順番を示すための恣意的な例になっています。 -リクエスト全てに適用されるとして、本例のディレクティブは -A > B > C > D > E の順番に適用されます。 - -
もっと具体的な、次の例を考えてみましょう。
-
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +祉激с潟荐絎+ +This translation may be out of date. Check the
+ English version for recent changes.
+ 荐絎<ゃ筝cc
+泣若篏劫c<ゃ鴻URL
+狗с障吾荐絎祉激с潟
+潟潟
+
+荐絎祉激с潟潟潟腮蕁+ +
潟潟篋ゃ堺腮蕁障祉潟潟
+鴻絲障荅箴<障翫潟潟筝cc
+潟潟鴻翠障
+筝鴻
罨<箴с
+
+<ゃ激鴻с腥咲+ +鋎帥荐絎祉激с潟潟潟<ゃ激鴻с腥咲
+劫贋荐絎紊眼с障篋ゃ茹c
+紊ус<ゃ激鴻若c潟違激鴻荀c鴻絎鴻с
+違ゃ潟鴻若с Apache Unix <ゃ激鴻с
+ <ゃ激鴻潟潟+ +
<ゃ激鴻劫贋<ゃ絎
+
с腥咲潟潟+ +筝鴻
ゃ若罩h頫+ +
荵潟違綽荀翫潟潟罩h頫
+(regex) с
+ 若吟c荐絎紊眼 regex +ゃ若祉激с潟罨<障 + +
regex 祉激с潟篏睡с糸<ゃ紊帥ゃ絲障 +≪祉鴻筝綺с障 +
や篏帥+ +<ゃ激鴻潟潟с腥咲潟潟篏帥
+絎絽吾膂≦с<ゃ激鴻箴絖
+吾сcc綽翫綽
+ <ゃ激鴻筝吾с吾≪祉鴻狗
+
紊ф絖絨絖阪ャ<ゃ激鴻篏睡筝荐
+♂≫障
+筝<ゃ激鴻篏臀茲違с腥咲篏臀号
+篁с荀
+сс<ゃ激鴻潟潟篏睡
+筝ゃ箴紊障
+
+
+若c鴻+ +
+
++ +
+
+cc篏帥?+ +帥ゃ荐絎祉激с潟сcc篏睡с
+cc Context
+荀
+
+ 祉激с潟若御号+ +若吾篁ヤc障: + +
緇祉激с潟cc祉激с潟筝吾障 + + + +箴+ +罨<若吾腓冴f箴c障 +鴻箴cc +A > B > C > D > E 障 + +
c隙罨<箴帥障
+
-
-
-
-Apache HTTP サーバ バージョン 2.3 -サーバ全体の設定- -This translation may be out of date. Check the
- English version for recent changes.
-
-このドキュメントでは
-
-サーバ ID- - -
-
-ファイルの位置- - -
これらのディレクティブは Apache
- が適切な動作をするために必要な各種ファイルの位置を制御します。
- パスがスラッシュ (/) で始まっていないときは、ファイルは
-
- リソースの制限- - -
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +泣若篏荐絎+ +This translation may be out of date. Check the
+ English version for recent changes.
+
+ャ<潟с
+
+泣若 ID+ + +
+
+<ゃ篏臀+ + +
cc Apache
+ 篏綽荀腮<ゃ篏臀九勝障
+ 鴻鴻激 (/) у障c<ゃ
+
+ 純若鴻狗+ + +
-
-
-
-
-Apache HTTP サーバ バージョン 2.3 -Site Map- -This translation may be out of date. Check the
- English version for recent changes.
-
-このページは現時点で利用可能な -Apache HTTP サーババージョン 2.3 のドキュメンテーション -の一覧です。 -
-
-
-
-Apache HTTP サーバの使用-
ガイド、チュートリアル、ハウツー- -プラットフォーム固有の情報- -Apache その他- -Apache モジュール-
開発者のためのドキュメント- -用語集と索引- -
+
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +Site Map+ +This translation may be out of date. Check the
+ English version for recent changes.
+
+若吾憝鴻у純 +Apache HTTP 泣若若吾с 2.3 ャ<潟若激с +筝荀сс +
Apache HTTP 泣若篏睡+ +Apache 若c鴻ャ<潟+
Apache 泣若莖+ +ゃャ若≪+
若堺+ +Apache ≪吾ャ若+
肴ャ<潟+ +
-
-
Apache HTTP サーバ バージョン 2.3 + +Apache HTTP 泣若 若吾с 2.3 Apache SSL/TLS 垸-Apache HTTP サーバモジュール Apache HTTP 泣若≪吾ャ若
mod_ssl-このモジュールで提供されるディレクティブや環境変数に関する -詳しい文書は、mod_ssl -リファレンスをご覧下さい。 +≪吾ャ若ф箴cc医紊違≪ +荅潟吾mod_ssl +<潟荀т
-
-
-
-Apache HTTP サーバ バージョン 2.3 -SSL/TLS 暗号化: はじめに- -This translation may be out of date. Check the
- English version for recent changes.
-
--- - -入門ということで、この章は Web、HTTP、Apache に通じている -読者向けですが、セキュリティ専門家向けではありません。 -SSL プロトコルの決定的な手引きであるつもりはありません。 -また、組織内の認証管理のための特定のテクニックや、 -特許や輸出規制などの重要な法的な問題についても扱いません。 -むしろ、更なる研究への出発点として色々な概念、定義、例を並べることで - mod_ssl のユーザに基礎知識を提供する事を目的としています。 - -ここに示された内容は主に、原著者の許可の下
-The Open Group Research Institute の Frederick J. Hirsch
- 氏の記事
-Introducing SSL and Certificates using SSLeay を基にしています。
-氏の記事は Web Security: A Matter of
-Trust, World Wide Web Journal, Volume 2, Issue 3, Summer 1997
-に掲載されました。
-肯定的な意見は Frederick Hirsch 氏
- (元記事の著者) へ全ての苦情は Ralf S. Engelschall (
-
-
-暗号化技術- -SSL を理解するには、暗号アルゴリズム、 -メッセージダイジェスト関数(別名: 一方向関数、ハッシュ関数)、 -電子署名などへの理解が必要です。 -これらの技術は本が丸ごと必要な題目で -(例えば [AC96] を参照)、 -プライバシー、信用、認証などの技術の基礎となっています。 - -暗号アルゴリズム- -例えば、アリスが送金のために銀行にメッセージを送りたいとします。 - 口座番号や送金の金額が含まれるため、 - アリスはそのメッセージを秘密にしたいと思います。 - 解決方法の一つは暗号アルゴリズムを使って、メッセージを - 読ませたい人以外は読むことができない暗号化された - 形態に変えてしまうことです。 - その形態になると、 - メッセージは秘密の鍵によってのみ解釈することができます。 - 鍵なしでは、メッセージは役に立ちません。 - 良い暗号アルゴリズムは、侵入者が元のテキストを解読することを - 非常に難しくするため、努力が割に合わなくさせます。 - -暗号アルゴリズムには - 従来型と公開鍵の二つの種類があります。 - -
誰もが暗号化されたメッセージを公開鍵によって暗号化 - することができますが、秘密鍵の持ち主だけがそれを読むことが - できます。 - この方法で、銀行の公開鍵を使って暗号化することで、 - アリスは秘密のメッセージを送ることができます。 - 銀行のみが復号することができます。 - - -メッセージダイジェスト- -アリスはメッセージを秘密にすることができますが、 - 誰かが例えば自分に送金するようにメッセージを変更したり、 - 別のものに置き換えてしまうかもしれないという問題があります。 - アリスのメッセージの信用を保証する方法の一つは、 - メッセージの簡潔なダイジェストを作って、それも銀行に送るというものです。 - メッセージを受け取ると銀行もダイジェストを作成し、 - アリスが送ったものと比べます。もし一致したなら、 - 受け取ったメッセージは無傷だということになります。 - -このような要約はメッセージダイジェスト、 - 一方行関数、またはハッシュ関数と呼ばれます。 - メッセージダイジェストは長い可変長のメッセージから - 短い固定長の表現を作るのに使われます。 - ダイジェストアルゴリズムはメッセージから - 一意なダイジェストを生成するように作られています。 - メッセージダイジェストはダイジェストから元のメッセージを - 判定するのがとても難しいようにできています。 - また、同じ要約を作成する二つのメッセージを探すのは不可能です。 - よって、同じ要約を使ってメッセージを置き換えるという - 可能性を排除しています。 - -アリスへのもう一つの問題は、このダイジェストを安全に送る方法を探すことです。 -これができれば、メッセージの信用が保証されます。 -一つの方法はこのダイジェストに電子署名を含むことです。 - - -電子署名-アリスが銀行にメッセージを送ったとき、銀行は、 -侵入者が彼女になりすまして彼女の口座への取引を申請していないか、 -メッセージが本当に彼女からのものか確実に分からなければいけません。 -アリスによって作成され、メッセージに含まれた -電子署名がここで役に立ちます。 - -電子署名はメッセージのダイジェストやその他の情報(処理番号など)を -送信者の秘密鍵で暗号化することで作られます。 -誰もが公開鍵を使って署名を復号することができますが、 -署名者のみが秘密鍵を知っています。 -これは、彼らのみが署名しえたことを意味します。 -ダイジェストを電子署名に含むことは、 -その署名がそのメッセージのみに有効であることを意味します。 -これは、誰もダイジェストを変えて署名をすることができないため、 -メッセージの信用も保証します。 - -侵入者が署名を傍受して後日に再利用するのを防ぐため -電子署名には一意な処理番号が含まれます。 -これは、アリスがそんなメッセージは送っていないと言う詐欺 -から銀行を守ります。 -彼女だけが署名しえたからです。(否認防止) - -
-
-証明書- -アリスは秘密のメッセージを銀行に送り、 -署名をして、メッセージの信用を保証することができるおうになりましたが、 -通信している相手が本当に銀行なのか確かめなくてはいけません。 -これは、彼女が使う公開鍵が銀行の秘密鍵と対になっているものか、 -彼女は確かめなくてはいけないということを意味します。 -同様に、銀行はメッセージの署名が本当にアリスの署名か確認する必要が -あります。 - -もし両者に身元を証明し、公開鍵を確認し、また信頼された機関が署名 -した証明書があれば、両者とも通信相手について正しい相手だと -確信することができます。 -そのような信頼された機関は認証局 - (Certificate Authority または CA) と呼ばれ、 -証明書 (certificate) が認証 (authentication) に使われます。 - -証明書の内容- -証明書は公開鍵と個人、サーバ、その他の主体の実在の身元を - 関連付けます。 - 表1に示されるように証明対象の情報は - 身元証明の情報(識別名)と公開鍵が含まれます。 - 証明書はまた、認証局の身元証明と署名、そして証明書の有効期間を - 含みます。 - シリアルナンバーなどの認証局の管理上の情報や - その他の追加の情報が含まれているかもしれません。 - -表1: 証明書情報- -
識別名(ディスティングイッシュ・ネーム)は特定の状況における - 身分証明を提供するのに使われています。例えば、ある人は - 私用と会社とで別々の身分証明を持つかもしれません。 - - 識別名は X.509 標準規格 [X509] で定義されています。 - X.509 標準規格は、項目、項目名、そして項目の略称を定義しています。(表 - 2 参照) - -表 2: 識別名情報- -
認証局はどの項目が省略可能でどれが必須かの方針を定義する
- かもしれません。項目の内容についても認証局や証明書のユーザからの
- 要件があるかもしれません。
- 例えば、ネットスケープのブラウザはサーバの証明書の
- Common Name (コモンネーム)がサーバのドメイン名の
- バイナリ形式の証明書は ASN.1 表記法 - [X208] [PKCS] で - 定義されています。 - この表記法は内容をどのように記述するかを定義し、 - 符号化の規定がこの情報がどのようにバイナリ形式に変換されるかを - 定義します。 - 証明書のバイナリ符号化は Distinguished Encoding - Rules (DER) で定義され、それはより一般的な Basic Encoding Rules - (BER) に基づいています。 - バイナリ形式を扱うことのできない送信では、 - バイナリ形式は Base64 符号化 [MIME] で - ASCII 形式に変換されることがあります。 - このように符号化され、以下の例に示されるように区切り行に - 挟まれたものは PEM 符号化されたと言います。 - (PEM の名前は "Privacy Enhanced Mail" に由来します) - -PEM 符号化された証明書の例 (example.crt)-----BEGIN CERTIFICATE----- -MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCWFkx -FTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25ha2UgVG93bjEXMBUG -A1UEChMOU25ha2UgT2lsLCBMdGQxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhv -cml0eTEVMBMGA1UEAxMMU25ha2UgT2lsIENBMR4wHAYJKoZIhvcNAQkBFg9jYUBz -bmFrZW9pbC5kb20wHhcNOTgxMDIxMDg1ODM2WhcNOTkxMDIxMDg1ODM2WjCBpzEL -MAkGA1UEBhMCWFkxFTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25h -a2UgVG93bjEXMBUGA1UEChMOU25ha2UgT2lsLCBMdGQxFzAVBgNVBAsTDldlYnNl -cnZlciBUZWFtMRkwFwYDVQQDExB3d3cuc25ha2VvaWwuZG9tMR8wHQYJKoZIhvcN -AQkBFhB3d3dAc25ha2VvaWwuZG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB -gQDH9Ge/s2zcH+da+rPTx/DPRp3xGjHZ4GG6pCmvADIEtBtKBFAcZ64n+Dy7Np8b -vKR+yy5DGQiijsH1D/j8HlGE+q4TZ8OFk7BNBFazHxFbYI4OKMiCxdKzdif1yfaa -lWoANFlAzlSdbxeGVHoT0K+gT5w3UxwZKv2DLbCTzLZyPwIDAQABoyYwJDAPBgNV -HRMECDAGAQH/AgEAMBEGCWCGSAGG+EIBAQQEAwIAQDANBgkqhkiG9w0BAQQFAAOB -gQAZUIHAL4D09oE6Lv2k56Gp38OBDuILvwLg1v1KL8mQR+KFjghCrtpqaztZqcDt -2q2QoyulCgSzHbEGmi0EsdkPfg6mp0penssIFePYNI+/8u9HT4LuKMJX15hxBam7 -dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ== ------END CERTIFICATE----- 認証局- -まず証明書の申請の情報を確認することで、 - 認証局は秘密鍵の持ち主の身元を保証します。 - 例えば、アリスが個人証明書を申請したとすると、 - 認証局はアリスが証明書の申請が主張する通りの - 人物だということを確認しなくてはいけません。 - -証明書階層構造- -認証局は他の認証局への証明書を発行することができます。 - 未知の証明書を調べる時に、アリスはその証明書の発行者 - に自信が持てるまで、発行者の証明書を - その上位階層の認証局をたどって調べる必要があります。 - 「悪質な」証明書の危険性を減らすため、 - 彼女は限られた連鎖の発行者のみ信頼するように - 決めることもできます。 - - -最上位認証局の作成- -前に述べたように、全ての証明書について、 - 最上位の認証局(CA)までそれぞれの発行者が - 対象の身元証明の有効性を明らかにする必要があります。 - 問題は、誰がその最上位の認証機関の証明書を保証するのか、 - ということです。 - このような場合に限り、証明書は「自己署名」されます。 - つまり、証明書の発行者と証明対象が同じということになります。 - その結果、自己署名された証明書を信用するには - 細心の注意が必要です。 - 最上位認証局が公開鍵を広く公表することで、 - その鍵を信頼するリスクを低くすることができます。 - もし、他人がその認証局になりすました時に、それが露見しや - すいからです。 - 多くのブラウザは有名な認証局を信頼するように - 設定されています。 - -Thawte - や VeriSign - のような多くの会社が認証局として開設しました。 - このような会社は以下のサービスを提供します: - -
自分で認証局を作ることも可能です。 - インターネット環境では危険ですが、 - 個人やサーバの身元証明が簡単に行える組織の - イントラネット内では役に立つかもしれません。 - - -証明書管理- -認証局の開設は徹底した管理、技術、運用の体制を必要とする - 責任のある仕事です。 - 認証局は証明書を発行するだけでなく、 - 管理もしなければなりません。 - 具体的には、証明書がいつまで有効かを決定し、更新し、 - また既に発行されたが失効した証明書のリスト - (Certificate Revocation Lists または CRL) - を管理しなければいけません。 - 例えば、アリスが会社から社員として証明書を与えられたとします。 - そして、アリスが会社を辞めるときには証明書を取り消さなければ - いけないとします。 - 証明書は次々と人に渡されていくものなので、 - 証明書そのものから、それが取り消されたか判断することは - 不可能です。 - よって、証明書の有効性を調べるときには、 - 認証局に連絡して CRL を照合する必要があります。 - 普通この過程は自動化されているものではありません。 - -注意-デフォルトでブラウザに設定されていない認証局を使った場合、 - 認証局の証明書をブラウザに読み込んで、 - ブラウザがその認証局によって署名されたサーバの証明書を - 有効化する必要があります。 - 一度読み込まれると、その認証局によって署名された全ての - 証明書を受け入れるため、危険を伴います。 -
-
-Secure Sockets Layer (SSL)- -Secure Sockets Layer プロトコルは信頼性のあるコネクション型の -ネットワーク層のプロトコル(例えば、TCP/IP)と -アプリケーション層のプロトコル(例えば、HTTP) -の間に置くことができます。 -SSL は、相互認証によってサーバとクライアント間の安全な通信を、 -電子署名によってデータの完全性を、 -そして暗号化によってプライバシを提供します。 - -SSL プロトコルは暗号化、ダイジェスト、電子署名について、 -様々なアルゴリズムをサポートするようにできています。 -こうすることで、法や輸出の規制を考慮に入れて、サーバに合わせた -アルゴリズムを選ぶことができ、また、新しいアルゴリズムを -利用していくことも可能にしています。 -アルゴリズムの選択はプロトコルセッション開始時に -サーバとクライアント間で取り決められます。 - -表4: SSL プロトコルのバージョン- -
表4に示されるとおり、SSL プロトコルには -いくつものバージョンがあります。 -表にも書かれているように、SSL 3.0 の利点の一つは -証明書階層構造をサポートすることです。 -この機能によって、サーバは自分の証明書に加えて、 -発行者の証明書をブラウザに渡すことができます。 -証明書階層構造によって、 -ブラウザに発行者の証明書が直接登録されていなくても、 -階層の中に含まれていれば、 -ブラウザはサーバの証明書を有効化することができます。 -SSL 3.0 は現在 Internet Engineering Task Force (IETF) -によって開発されている Transport Layer Security -[TLS] プロトコル標準規格の基礎となっています。 - -セッションの確立- -図1で示されるように、 - セッションの確立はクライアントとサーバ間の - ハンドシェークシークエンスによって行なわれます。 - サーバが証明書を提供するか、クライアントの証明書をリクエストするか - というサーバの設定により、このシークエンスは異なるものとなります。 - 暗号情報の管理のために、追加のハンドシェーク過程が必要になる - 場合もありますが、この記事では - よくあるシナリオを手短に説明します。 - 全ての可能性についは、SSL 仕様書を参照してください。 - -注意-一度 SSL セッションが確立すると、セッションを再利用することで、 - セッションを開始するための多くの過程を繰り返すという - パフォーマンスの損失を防ぎます。 - そのため、サーバは全てのセッションに一意なセッション識別名を - 割り当て、サーバにキャッシュし、クライアントは次回から - (識別名がサーバのキャッシュで期限切れになるまでは) - ハンドシェークなしで接続することができます。 -
- サーバとクライアントで使われる - ハンドシェークシークエンスの要素を以下に示します: - -
第一ステップの暗号スイート取り決めによって、 - サーバとクライアントはそれぞれにあった - 暗号スイートを選ぶことができます。 - SSL3.0 プロトコルの仕様書は 31 の暗号スイートを定義しています。 - 暗号スイートは以下のコンポーネントにより定義されています: - -
これらの三つの要素は以下のセクションで説明されています。 - - -鍵の交換手段- -鍵の交換手段はアプリケーションのデータ通信に使われ、 - 共有される対称暗号鍵をどのようにがクライアントとサーバで - 取り決めるかを定義します。 - SSL 2.0 は RSA 鍵交換しか使いませんが、 - SSL 3.0 は証明書が使われるときは RSA 鍵交換を使い、 - 証明書が無く、クライアントとサーバの事前の通信が無い場合は - Diffie-Hellman 鍵交換を使う - など様々な鍵交換アルゴリズムをサポートします。 - -鍵の交換方法における一つの選択肢は電子署名です。 - 電子署名を使うかどうか、また、 - どの種類の署名を使うかという選択があります。 - 秘密鍵で署名することで共有鍵を生成すし、情報交換する時の - マン・イン・ザ・ミドル攻撃を防ぐことができます。 - [AC96, p516] - - -データ通信の暗号術- -SSL はセッションのメッセージの暗号化に前述した - 従来型暗号(対称暗号)を用います。 - 暗号化しないという選択肢も含め九つの選択肢があります: - -
ここでの CBC とは暗号ブロック連鎖 (Cipher Block Chaining) - の略で、一つ前の暗号化された暗号文の一部が - ブロックの暗号化に使われることを意味します。 - DES はデータ暗号化標準規格 (Data Encryption Standard) - [AC96, ch12] の略で、 - DES40 や 3DES_EDE を含むいくつもの種類があります。 - Idea は最高なものの一つで、暗号術的には現在ある中で - 最も強力なものです。 - RC2 は RSA DSI による独占的なアルゴリズムです。 - [AC96, - ch13] - - -ダイジェスト関数- -- ダイジェスト関数の選択はレコードユニットからどのようにダイジェストが生成されるかを決定します。 - SSL は以下をサポートします: - -
メッセージダイジェストは Message Authentication Code (MAC) - の生成に使われ、メッセージと共に暗号化され、メッセージの信用を - 提供し、リプレイ攻撃を防ぎます。 - - -ハンドシェークシークエンスプロトコル- -ハンドシェークシークエンスは三つのプロトコルを使います: - -
三つのプロトコルは、アプリケーションプロトコルデータとともに、 - 図2に示すとおり SSL レコードプロトコル - でカプセル化されます。 - カプセル化されたプロトコルはデータを検査しない - 下層のプロトコルによってデータとして伝達されます。 - カプセル化されたプロトコルは下層のプロトコルに関して一切関知しません。 - -
- - レコードプロトコルによる SSL コントロールプロトコルのカプセル化は、 - アクティブなセッションの二回目の通信があった場合、 - コントロールプロトコルが安全であることを意味します。 - 既にセッションが無い場合は、Null 暗号スイートが使われ、 - 暗号化は行なわれず、セッションが確立するまでは - ダイジェストも無い状態となります。 - - -データ通信- -図3に示される SSL レコードプロトコル - はクライアントとサーバ間のアプリケーションや - SSL コントロールデータの通信に使われます。 - このデータはより小さいユニットに分けられたり、 - いくつかの高級プロトコルをまとめて一ユニットとして通信が - 行なわれることもあります。 - データを圧縮し、ダイジェスト署名を添付して、 - これらのユニットを暗号化したのち、ベースとなっている - 信頼性のあるトランスポートプロトコルを用いるかもしれません。 - (注意: 現在メジャーな SLL 実装で圧縮をサポートしているものはありません) - -
- HTTP 通信の安全化- -よくある SSL の使い方はブラウザとウェブサーバ間の HTTP 通信
- の安全化です。
- これは、従来の安全ではない HTTP の使用を除外するものではありません。
- 安全化されたものは主に SSH 上の普通の HTTP で、HTTPS と呼ばれます。
- 大きな違いは、URL スキームに
- 参考文献- -
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +SSL/TLS 垸:+ +This translation may be out of date. Check the
+ English version for recent changes.
+
+++ + +ラс腴 WebHTTPApache +茯с祉ャe絎九с障 +SSL 潟羆阪綣сゃ障 +障腟膵茯荐主∞劫 +壕┗莠後肴吟荀羈馹ゃ宴障 +眼腥吟吾榊榊鴻蚊网綽泣絎臂箴筝鴻 + mod_ssl 若吟榊ヨ箴篋障 + +腓冴絎鴻筝祉荐怨筝
+The Open Group Research Institute Frederick J. Hirsch
+ 羂荐篋
+Introducing SSL and Certificates using SSLeay 冴障
+羂荐篋 Web Security: A Matter of
+Trust, World Wide Web Journal, Volume 2, Issue 3, Summer 1997
+イ莠障
+絎頳 Frederick Hirsch 羂
+ (荐篋) 後 Ralf S. Engelschall (
+
+
+垸茵+ +SSL 茹c垩≪眼冴 +<祉若吾ゃ吾с鴻∽(ュ: 筝劫∽違激ラ∽) +糸臀峨吾茹c綽荀с +茵筝吾綽荀蕁 +(箴 [AC96] ) +ゃ激若篆∞茯荐若茵榊c障 + +垩≪眼冴+ +箴違≪鴻茵<祉若吾障 + e婚垩蕁障 + ≪鴻<祉若吾腱絲障 + 茹f浦号筝ゃ垩≪眼冴篏帥c<祉若吾 + 茯障篋坂札紊茯с垸 + 綵∽紊障с + 綵∽ + <祉若吾腱絲泣c粋Вс障 + 泣с<祉若吾綵鴻腴<障 + 垩≪眼冴箴球ヨ鴻茹h + 絽吾c蚊障 + +垩≪眼冴 + 緇ュ泣篋ゃ腮蕁障 + +
茯違垸<祉若吾泣c垸 + с障腱絲泣>源茯 + с障 + 号с茵泣篏帥c垸с + ≪鴻腱絲<祉若吾с障 + 茵帥緇垩с障 + + +<祉若吾ゃ吾с鴻+ +≪鴻<祉若吾腱絲с障 + 茯違箴域<祉若吾紊眼 + ャ臀障馹障 + ≪鴻<祉若吾篆∞篆荐若号筝ゃ + <祉若吾膂≧ゃ吾с鴻篏c茵с + <祉若吾茵ゃ吾с鴻篏 + ≪鴻c罸鴻障筝眼 + c<祉若吾≦激障 + +荀膣<祉若吾ゃ吾с鴻 + 筝壕∽障激ラ∽若違障 + <祉若吾ゃ吾с鴻激紊激<祉若吾 + 阪激茵憗篏篏帥障 + ゃ吾с鴻≪眼冴<祉若吾 + 筝ゃ吾с鴻篏障 + <祉若吾ゃ吾с鴻ゃ吾с鴻<祉若吾 + ゅcс障 + 障荀膣篏篋ゃ<祉若吾「筝純с + c荀膣篏帥c<祉若吾臀 + 醇сゃ障 + +≪鴻吾筝ゃ馹ゃ吾с鴻絎号「с +с違<祉若吾篆∞篆荐若障 +筝ゃ号ゃ吾с鴻糸臀峨с + + +糸臀峨+≪鴻茵<祉若吾c茵 +箴球ヨ綵弱コ障綵弱コe婚吾綣活 +<祉若吾綵綵弱コ腆阪違障 +≪鴻c篏<祉若吾障 +糸臀峨у醜腴<障 + +糸臀峨<祉若吾ゃ吾с鴻篁(垩) +篆∴腱絲泣ф垸т障 +茯違泣篏帥c臀峨緇с障 +臀峨帥腱絲泣ャc障 +綵若帥臀峨潟障 +ゃ吾с鴻糸臀峨 +臀峨<祉若吾帥鴻с潟障 +茯違ゃ吾с鴻紊臀峨с +<祉若吾篆∞篆荐若障 + +箴球ヨ臀峨緇ャ蚊 +糸臀峨筝垩障障 +≪鴻<祉若吾c荐荅罨 +茵絎障 +綵弱コ臀峨с(茯我) + +
+
+荐惹+ +≪鴻腱絲<祉若吾茵 +臀峨<祉若吾篆∞篆荐若с障 +篆<御綵茵腆冴障 +綵弱コ篏帥泣茵腱絲泣絲障c +綵弱コ腆冴潟障 +罕茵<祉若吾臀峨綵≪鴻臀峨腆肴綽荀 +障 + +筝∴荳荐惹泣腆肴障篆♂若罘≪臀峨 +荐惹吾違筝∴篆∞御ゃ罩c御 +腆坂拭с障 +篆♂若罘≪茯荐弱 + (Certificate Authority 障 CA) 若違 +荐惹 (certificate) 茯荐 (authentication) 篏帥障 + +荐惹吾絎+ +荐惹吾泣篋冴泣若篁筝私絎荳 + ∫d障 + 茵1腓冴荐惹絲乗院宴 + 荳荐惹(茘ュ)泣障障 + 荐惹吾障茯荐弱荳荐惹臀峨荐惹吾号 + 帥障 + 激≪潟若茯荐弱膊∞筝宴 + 篁菴遵宴障障 + +茵1: 荐惹御+ +
茘ュ(c鴻c潟違ゃ激ャ祉若)劫倶 + 荳荐惹箴篏帥障箴違篋冴 + 腱篌腓障уャ荳荐惹ゃ障 + + 茘ュ X.509 罔羣荀 [X509] у臂障 + X.509 罔羣荀若ョО絎臂障(茵 + 2 ) + +茵 2: 茘ュ+ +
茯荐弱ュ純с綽拷絎臂
+ 障絎鴻ゃ茯荐弱荐惹吾若吟
+ 荀篁吟障
+ 箴違鴻宴若吟泣若荐惹吾
+ Common Name (潟≪潟若)泣若<ゃ喝
+ ゃ綵√荐惹吾 ASN.1 茵荐羈 + [X208] [PKCS] + 絎臂障 + 茵荐羈絎鴻荐菴違絎臂 + 膃垸荀鎘宴ゃ綵√紊 + 絎臂障 + 荐惹吾ゃ膃垸 Distinguished Encoding + Rules (DER) у臂筝 Basic Encoding Rules + (BER) 冴ャ障 + ゃ綵√宴с篆<с + ゃ綵√ Base64 膃垸 [MIME] + ASCII 綵√紊障 + 膃垸篁ヤ箴腓冴阪茵 + 障 PEM 膃垸荐障 + (PEM "Privacy Enhanced Mail" 掩ャ障) + +PEM 膃垸荐惹吾箴 (example.crt)-----BEGIN CERTIFICATE----- +MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCWFkx +FTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25ha2UgVG93bjEXMBUG +A1UEChMOU25ha2UgT2lsLCBMdGQxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhv +cml0eTEVMBMGA1UEAxMMU25ha2UgT2lsIENBMR4wHAYJKoZIhvcNAQkBFg9jYUBz +bmFrZW9pbC5kb20wHhcNOTgxMDIxMDg1ODM2WhcNOTkxMDIxMDg1ODM2WjCBpzEL +MAkGA1UEBhMCWFkxFTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25h +a2UgVG93bjEXMBUGA1UEChMOU25ha2UgT2lsLCBMdGQxFzAVBgNVBAsTDldlYnNl +cnZlciBUZWFtMRkwFwYDVQQDExB3d3cuc25ha2VvaWwuZG9tMR8wHQYJKoZIhvcN +AQkBFhB3d3dAc25ha2VvaWwuZG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB +gQDH9Ge/s2zcH+da+rPTx/DPRp3xGjHZ4GG6pCmvADIEtBtKBFAcZ64n+Dy7Np8b +vKR+yy5DGQiijsH1D/j8HlGE+q4TZ8OFk7BNBFazHxFbYI4OKMiCxdKzdif1yfaa +lWoANFlAzlSdbxeGVHoT0K+gT5w3UxwZKv2DLbCTzLZyPwIDAQABoyYwJDAPBgNV +HRMECDAGAQH/AgEAMBEGCWCGSAGG+EIBAQQEAwIAQDANBgkqhkiG9w0BAQQFAAOB +gQAZUIHAL4D09oE6Lv2k56Gp38OBDuILvwLg1v1KL8mQR+KFjghCrtpqaztZqcDt +2q2QoyulCgSzHbEGmi0EsdkPfg6mp0penssIFePYNI+/8u9HT4LuKMJX15hxBam7 +dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ== +-----END CERTIFICATE----- 茯荐弱+ +障荐惹吾活宴腆肴с + 茯荐弱腱絲泣>源荳篆荐若障 + 箴違≪鴻篋肴┝吾活 + 茯荐弱≪鴻荐惹吾活筝糸宍 + 篋榊腆肴障 + +荐惹檎絮ゆ+ +茯荐弱篁茯荐弱吾荐惹吾肴с障 + ャ荐惹吾茯帥鴻≪鴻荐惹吾肴 + 篆<障с肴荐惹吾 + 筝篏絮ゃ茯荐弱c茯帥鴻綽荀障 + 莖荐惹吾演堺с羝 + 綵弱コi肴推拭若 + 羆冴с障 + + +筝篏茯荐弱篏+ +菴違鴻荐惹吾ゃ + 筝篏茯荐弱(CA)障с肴 + 絲乗院荳荐惹号с綽荀障 + 馹茯違筝篏茯荐惹≪荐惹吾篆荐若 + с + 翫荐惹吾綏援讐障 + ゃ障荐惹吾肴荐惹絲乗院障 + 腟綏援讐荐惹吾篆∞ + 膣医羈綽荀с + 筝篏茯荐弱泣綺茵с + 泣篆♂若鴻篏с障 + 篁篋冴茯荐弱障画 + с + 紊吟茯荐弱篆♂若 + 荐絎障 + +Thawte + VeriSign + 紊篌腓障茯荐弱荐障 + 篌腓障篁ヤ泣若鴻箴障: + +
ц荐弱篏純с + ゃ潟帥若医с演冴с + 篋冴泣若荳荐惹膂≦茵腟膵 + ゃ潟с綵鴻腴ゃ障 + + +荐惹悟∞+ +茯荐弱荐緇劫膊∞茵篏吟綽荀 + 莢篁祉篁篋с + 茯荐弱荐惹吾肴с + 膊∞違障 + 隙荐惹吾ゃ障ф鴻羆阪贋違 + 障≪肴紊怨鴻荐惹吾鴻 + (Certificate Revocation Lists 障 CRL) + 膊∞違障 + 箴違≪鴻篌腓障腓上<荐惹吾筝障 + ≪鴻篌腓障莨荐惹吾羔 + 障 + 荐惹吾罨<篋冴羝<с + 荐惹吾羔ゆ + 筝純с + c荐惹吾号с茯帥鴻 + 茯荐弱g機 CRL у綽荀障 + 腮с障 + +羈+с吟荐絎茯荐弱篏帥c翫 + 茯荐弱荐惹吾吟茯粋昭с + 吟茯荐弱c臀峨泣若荐惹吾 + 劫綽荀障 + 筝綺茯粋昭障茯荐弱c臀峨 + 荐惹吾ャ演冴篌眼障 +
+
+Secure Sockets Layer (SSL)+ +Secure Sockets Layer 潟篆♂惹с潟激с喝 +若絮ゃ潟(箴違TCP/IP) +≪宴若激с喝韻潟(箴違HTTP) +臀с障 +SSL 娯茯荐若c泣若ゃ≪潟絎篆< +糸臀峨c若帥絎с +垸cゃ激箴障 + +SSL 潟垸ゃ吾с鴻糸臀峨ゃ +罕≪眼冴泣若с障 +с羈莠後冴荀吟ャ泣若 +≪眼冴吾吟с障違≪眼冴 +純障 +≪眼冴御潟祉激с渇紮 +泣若ゃ≪潟у羆冴障 + +茵4: SSL 潟若吾с+ +
茵4腓冴SSL 潟 +ゃ若吾с潟障 +茵吾SSL 3.0 鴻筝ゃ +荐惹檎絮ゆ泣若с +罘純c泣若荐惹吾 +肴荐惹吾吟羝<с障 +荐惹檎絮ゆc +吟肴荐惹吾贋・脂蚊 +絮ゃ筝障違 +吟泣若荐惹吾劫с障 +SSL 3.0 憜 Internet Engineering Task Force (IETF) +c冴 Transport Layer Security +[TLS] 潟罔羣荀若榊c障 + +祉激с潟腆榊+ +1хず + 祉激с潟腆榊ゃ≪潟泣若 + 潟激с若激若潟鴻c茵障 + 泣若荐惹吾箴ゃ≪潟荐惹吾鴻 + 泣若荐絎激若潟鴻違障 + 垽宴膊∞菴遵潟激с若腮綽荀 + 翫障荐篋с + 激茯障 + 醇сゃSSL 篁罕吾с + +羈+筝綺 SSL 祉激с潟腆榊祉激с潟с + 祉激с潟紮紊腮膵違菴 + 若潟鴻紊宴蚊障 + 泣若祉激с潟筝祉激с活ュ + 蚊綵泣若c激ャゃ≪潟罨≦ + (茘ュ泣若c激ャф障с) + 潟激с若ф・膓с障 +
+ 泣若ゃ≪潟т戎 + 潟激с若激若潟鴻荀膣篁ヤ腓冴障: + +
膃筝鴻垩鴻ゃ若羆冴c + 泣若ゃ≪潟c + 垩鴻ゃ若吾吟с障 + SSL3.0 潟篁罕吾 31 垩鴻ゃ若絎臂障 + 垩鴻ゃ若篁ヤ潟潟若潟絎臂障: + +
筝ゃ荀膣篁ヤ祉激с潟ц障 + + +泣篋ゆ罧+ +泣篋ゆ罧泣≪宴若激с潟若翠篆<篏帥 + 掩絲丞О埌泣ゃ≪潟泣若 + 羆冴絎臂障 + SSL 2.0 RSA 灸困篏帥障 + SSL 3.0 荐惹吾篏帥 RSA 灸困篏帥 + 荐惹吾<ゃ≪潟泣若篋篆<<翫 + Diffie-Hellman 灸困篏帥 + 罕灸困≪眼冴泣若障 + +泣篋ゆ号筝ゃ御≪糸臀峨с + 糸臀峨篏帥障 + 腮蕁臀峨篏帥御障 + 腱絲泣х讐у掩泣延困 + 潟祉ゃ潟祉吟祉紙蚊с障 + [AC96, p516] + + +若翠篆<埈+ +SSL 祉激с潟<祉若吾垸菴違 + 緇ュ(絲丞О)障 + 垸御≪箙ゃ御≪障: + +
с CBC 垩i (Cipher Block Chaining) + ャс筝ゅ垸垽筝 + 垸篏帥潟障 + DES 若炊垸罔羣荀 (Data Encryption Standard) + [AC96, ch12] ャс + DES40 3DES_EDE ゃ腮蕁障 + Idea 蕭筝ゃс埈憜筝 + 綣桁с + RC2 RSA DSI ≪眼冴с + [AC96, + ch13] + + +ゃ吾с鴻∽+ ++ ゃ吾с鴻∽違御潟若ゃ吾с鴻羆阪障 + SSL 篁ヤ泣若障: + +
<祉若吾ゃ吾с鴻 Message Authentication Code (MAC) + 篏帥<祉若吾宴垸<祉若吾篆∞ + 箴ゆ紙蚊障 + + +潟激с若激若潟鴻潟+ +潟激с若激若潟鴻筝ゃ潟篏帥障: + +
筝ゃ潟≪宴若激с潟潟若帥 + 2腓冴 SSL 潟若潟 + с祉障 + 祉潟若帥罎祉 + 筝絮ゃ潟c若帥篌障 + 祉潟筝絮ゃ潟≪筝∝ャ障 + +
+ + 潟若潟 SSL 潟潟若潟祉 + ≪c祉激с潟篋篆<c翫 + 潟潟若潟絎с潟障 + ≪祉激с潟<翫Null 垩鴻ゃ若篏帥 + 垸茵祉激с潟腆榊障с + ゃ吾с鴻<倶障 + + +若翠篆+ +3腓冴 SSL 潟若潟 + ゃ≪潟泣若≪宴若激с潟 + SSL 潟潟若若帥篆<篏帥障 + 若帥絨 + ゃ蕭膣潟障筝篆< + 茵障 + 若帥х軒ゃ吾с鴻臀峨羞私 + 垸<若鴻c + 篆♂惹с潟鴻若潟障 + (羈: 憜<吾c若 SLL 絎茖ух軒泣若障) + +
+ HTTP 篆<絎+ + SSL 篏帥鴻吟с泣若 HTTP 篆
+ 絎с
+ 緇ャ絎с HTTP 篏睡ゅс障
+ 絎筝祉 SSH 筝 HTTP сHTTPS 若違障
+ 紊сURL 鴻若
+ + +
-
-
-
-Apache HTTP サーバ バージョン 2.3 -停止と再起動- -This translation may be out of date. Check the
- English version for recent changes.
-
- この文書では Unix に類似したシステムでの - Apache の停止と再起動について扱っています。 - Windows NT, 2000, XP ユーザはサービスとして - Apache を実行するで、Windows 9x, MEユーザはコンソールアプリケーションとして - Apache を実行するで、 - これらのプラットホームでの使用方法をご覧下さい。 -
-
-イントロダクション- -Apache を停止したり再起動したりするためには、実行されている
- 親プロセスにシグナルを送るには、 - 次のようなコマンドを発行して下さい: - -
ここに挙げた例は、各自の
-
-
-急な停止- -
-
-緩やかな再起動- -
親プロセスは 特定のプラットホームでは
-
- USR1
- を緩やかな再起動のために使うことができませんが、代わりのシグナル
- (例えば WINCH) が使用できるでしょう。
- apachectl graceful
- というコマンドはプラットホームに合ったシグナルを送ります。このコードは常に
- MPM のプロセス制御ディレクティブの設定を重視しますので、
- クライアントのリクエストを扱うプロセスとスレッドの数を再起動の処理中も
- 適切な値に維持されます。。また、次のようにして
-
status モジュールは、緩やかな再起動以前から開始して
- リクエストに応答し続けている子プロセスを特定するために、
- 現在、 再起動時に設定ファイルに誤りがあると、
- 親プロセスは再起動せずにエラーとともに終了します。
- 緩やかな再起動の場合は、親プロセスが終了した後でも子プロセスが
- 実行されたまま放置されたりもします。
- (最後のリクエストを処理した後「緩やかに終了」する
- 子プロセスとなります。)
- サーバを再起動する際に、これが問題になるかもしれません
- -- サーバは listen するポートにバインドできないかもしれません。
- 再起動する前に、設定ファイルの構文を
--t
- コマンドライン引数
- (httpd をご覧下さい)
- を使って検証することができます。
- 設定ファイルの意味的な内容を構文と同様に検証したい場合は、
- 非 root ユーザで httpd を起動しようとすればわかります。
- もしエラーがなければ、ソケットやログを開こうとして
- root でないため
- (もしくは実行中の httpd
- が既に必要なポートにバインドしているため)
- に失敗するでしょう。
- これ以外の理由で起動に失敗したのであれば、
- それは設定ファイルのエラーで、
- 緩やかな再起動を行う前にその誤りを修正しなければなりません。
-
-急な再起動- -
再起動時に設定ファイルに誤りがあると、
- 親プロセスは再起動せずにエラーとともに終了します。
- これを避けるには次の方法をご覧下さい。
-
- 付録: シグナルと競合状態- -Apache 1.2b9 以前は、再起動や停止のシグナルを含む競合状態 - (競合状態を簡単に説明すると: タイミンにグよる問題で、 - 具合の悪い時間帯にちょうど何かが起こると予想外の動作をする - ようなことを指します) がありました。 - 「正しい」機能を持っているアーキテクチャでは、できるだけ - このようなことが起こらないようにしています。 - しかし、ある種のアーキテクチャでは競合状態は未だ確実に起こりえる - ということに注意してください。 - -ディスク上で
- 全てのアーキテクチャにおいて、個々の子プロセスで - 継続的な HTTP コネクション (KeepAlive) - に関する小さな競合状態が起こりえます。 - リクエスト行を読んだ後、そしてリクエストヘッダを読む前に - 子プロセスは終了するかも知れません。 - これに対する修正がありますが 1.2 で修正するには発見が遅すぎました。 - 理論的には、これは問題ではありません。 - なぜなら KeepAlive のクライアントは、ネットワーク遅延や - サーバのタイムアウトなどに備えていなければならないからです。 - 実際にも何か影響があるようには見えません - -- テストケースでサーバを 1 秒間に 20 回再起動しても - クライアントは壊れた画像や空のドキュメントを受け取ることなく - 正常に閲覧できています。 -
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +罩≪莎桁+ +This translation may be out of date. Check the
+ English version for recent changes.
+
+ 吾с Unix 蕁篌若激鴻с + Apache 罩≪莎桁ゃ宴c障 + Windows NT, 2000, XP 若吟泣若鴻 + Apache 絎茵сWindows 9x, ME若吟潟潟純若≪宴若激с潟 + Apache 絎茵с + 若с篏睡号荀т +
+
+ゃ潟激с+ +Apache 罩≪莎桁絎茵
+ 荀祉鴻激違 + 罨<潟潟肴筝: + +
箴
+
+
+ャ罩+ +
+
+膩莎桁+ +
荀祉鴻 劫若с
+
+ USR1
+ 膩莎桁篏帥с障篁c激違
+ (箴 WINCH) 篏睡сс
+ apachectl graceful
+ 潟潟若c激違障潟若絽吾
+ MPM 祉劫九勝cc荐絎荀障с
+ ゃ≪潟鴻宴祉鴻鴻違莎桁筝
+ ゃ膓障障罨<
+
status ≪吾ャ若膩莎桁篁ュ紮
+ 鴻綽膈膓絖祉鴻劫
+ 憜
+
+ャ莎桁+ +
莎桁荐絎<ゃ茯ゃ
+ 荀祉鴻莎桁若腟篋障
+ 帥罨<号荀т
+
+ 篁: 激違腴九倶+ +Apache 1.2b9 篁ュ莎桁罩≪激違腴九倶 + (腴九倶膂≦茯: 帥ゃ潟違馹с + 桁絽<篏莎激篋喝篏 + 障) 障 + 罩c罘純c≪若cсс + 莎激障 + 腮≪若cс腴九倶腆阪莎激 + 羈 + +c鴻筝
+ ≪若c絖祉鴻 + 膓膓 HTTP 潟激с (KeepAlive) + ≪絨腴九倶莎激障 + 鴻茵茯緇鴻茯 + 絖祉鴻腟篋ャ障 + 絲障篆罩c障 1.2 т信罩c肴障 + 茫馹с障 + KeepAlive ゃ≪潟若綮吟 + 泣若帥ゃ≪違с + 絎篏綵演帥荀障 + -- 鴻宴若鴻с泣若 1 腱 20 莎桁 + ゃ≪潟紕糸腥冴ャ<潟 + 罩e幻画Ηс障 +
-
-
-
-Apache HTTP サーバ バージョン 2.3 -suEXEC サポート- -This translation may be out of date. Check the
- English version for recent changes.
-
- suEXEC - 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは - 異なるユーザ ID で CGI プログラムや SSI - プログラムを実行することができます。CGI プログラムまたは SSI - プログラムを実行する場合、通常は web サーバと同じユーザで実行されます。 - - -適切に使用すると、この機能によりユーザが個別の CGI - や SSI プログラムを開発し実行することで生じるセキュリティ上の危険を、 - かなり減らすことができます。しかし、suEXEC の設定が不適切だと、 - 多くの問題が生じ、あなたのコンピュータに新しいセキュリティホールを - 作ってしまう可能性があります。あなたが setuid root - されたプログラムと、それらから生じるセキュリティ上の問題の管理に - 詳しくないようなら、suEXEC の使用を検討しないように強く推奨します。 - -
-
-
-
-始める前に- -この文書の先頭に飛ぶ前に、Apache - グループとこの文書での仮定を知っておくべきでしょう。 - - -第 1 に、あなたが setuid と - setgid 操作が可能な UNIX - 由来のオペレーティングシステムを使っていることを想定しています。 - これは、すべてのコマンド例にあてはまります。 - その他のプラットホームでは、もし suEXEC - がサポートされていたとしても設定は異なるかもしれません。 - -第 2 に、あなたが使用中のコンピュータの - セキュリティに関する基本的な概念と、それらの管理について詳しいことを - 想定しています。これは、setuid/setgid - 操作、あなたのシステム上でのその操作による様々な効果、 - セキュリティレベルについてあなたが理解しているということを含みます。 - - -第 3 に、改造されていない suEXEC - コードの使用を想定しています。suEXEC のコードは、 - 多くのベータテスタだけでなく、開発者によっても注意深く精査され - テストされています。それらの注意により、簡潔で信頼できる安全な - コードの基盤が保証されます。このコードを改変することで、 - 予期されない問題や新しいセキュリティ上の危険が生じることがあります。 - セキュリティプログラミングの詳細に通じていて、 - 今後の検討のために成果を Apache - グループと共有しようと思うのでなければ、suEXEC - コードは変えないことを 強く推奨します。 - -第 4 に、これが最後ですが、suEXEC を Apache - のデフォルトインストールには含めないことが - Apache グループで決定されています。これは、suEXEC - の設定には管理者の詳細にわたる慎重な注意が必要だからです。 - suEXEC の様々な設定について検討が終われば、管理者は suEXEC - を通常のインストール方法でインストールすることができます。 - これらの設定値は、suEXEC - 機能の使用中にシステムセキュリティを適切に保つために、 - 管理者によって慎重に決定され指定されることが必要です。 - この詳細な手順により、Apache グループは、suEXEC - のインストールについて、注意深く十分に検討してそれを使用することを - 決定した場合に限っていただきたいと考えています。 - - -それでも進みますか? よろしい。では、先へ進みましょう! -
-
-suEXEC セキュリティモデル- -suEXEC の設定とインストールを始める前に、 - まず実装しようとしているセキュリティモデルについて論じておきます。 - それには、suEXEC の内部で行なわれていること、 - システムのセキュリティを保証するために警告されることを - よく理解しておいた方がよいでしょう。 - -suEXEC は、Apache web - サーバから呼び出される setuid された "wrapper" - プログラムが基本となっています。設計した CGI、または SSI - プログラムへの HTTP リクエストがあると、この wrapper - が呼び出されます。このようなリクエストがあると、Apache - はそのプログラムが実行される際のプログラム名とユーザ ID とグループ - ID を指定して suEXEC wrapper を実行します。 - - -それから、wrapper は成功または失敗を決定するため - 以下の処理を行ないます。これらの状態のうち一つでも失敗した場合、 - プログラムは失敗をログに記録してエラーで終了します。 - そうでなければ、後の処理が続けられます。 - -
ここまでが suEXEC の wrapper - におけるセキュリティモデルの標準的な動作です。もう少し厳重に - CGI/SSI 設計についての新しい制限や規定を取り入れることもできますが、 - suEXEC はセキュリティに注意して慎重に少しずつ開発されてきました。 - - -このセキュリティモデルを用いて - サーバ設定時にどのように許すことを制限するか、また、suEXEC - を適切に設定するとどのようなセキュリティ上の危険を避けられるかに - 関するより詳しい情報については、"とかげに注意" - (Beware the Jabberwock) の章を参照してください。 - -
-
-suEXEC - の設定とインストール- -ここから楽しくなります。 - -suEXEC
- 設定オプション
suEXEC wrapper
- のコンパイルとインストール 安全なパーミッションを設定する たとえば、次のようにサーバが設定されていたとします。 - -
これで Apache が実行されるグループのみが - suEXEC ラッパーを実行できるということを - 確証します。 -
-
-suEXEC - の有効化と無効化- -起動時に、Apache は
サーバ起動時にこのメッセージが出ない場合、 - 大抵はサーバが想定した場所で wrapper プログラムが見つからなかったか、 - setuid root としてインストールされていないかです。 - -suEXEC の仕組みを使用するのが初めてで、Apache が既に動作中であれば、 - Apache を kill して、再起動しなければなりません。HUP シグナルや - USR1 シグナルによる単純な再起動では不十分です。 -suEXEC を無効にする場合は、
-
-suEXEC の使用- -CGI プログラムへのリクエストが suEXEC ラッパーを呼ぶのは、
- 仮想ホスト: ユーザディレクトリ:
-
-suEXEC のデバッグ- -suEXEC wrapper は、上記で述べた
- とかげに注意: 警告と事例- -注意! - この章は完全ではありません。この章の最新改訂版については、 - Apache グループの - オンラインドキュメント版を参照してください。 - - -サーバの設定に制限をもうける wrapper について、 - いくつか興味深い点があります。suEXEC に関する "バグ" - を報告する前にこれらを確認してください。 - -
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +suEXEC 泣若+ +This translation may be out of date. Check the
+ English version for recent changes.
+
+ suEXEC + 罘純Apache 若吟 Web 泣若絎茵若 ID + 違若 ID CGI 違 SSI + 違絎茵с障CGI 違障 SSI + 違絎茵翫絽吾 web 泣若若吟у茵障 + + +篏睡罘純若吟ャ CGI + SSI 違冴絎茵х祉ャd演冴 + 羝с障suEXEC 荐絎筝 + 紊馹潟潟ャ若帥違祉ャc若 + 篏c障醇с障 setuid root + 違祉ャd馹膊∞ + 荅潟suEXEC 篏睡罎荐綣激ィ絅障 + +
+
+紮+ +吾蕋九Apache + 違若吾с篁絎ャc鴻с + + +膃 1 setuid + setgid 篏純 UNIX + 掩ャ若c潟違激鴻篏帥c喝障 + 鴻潟潟箴障障 + 篁若с suEXEC + 泣若荐絎違障 + +膃 2 篏睡筝潟潟ャ若帥 + 祉ャc≪堺网綽泣膊∞ゃ荅潟 + 喝障setuid/setgid + 篏激鴻筝с篏罕号 + 祉ャcゃ茹c帥障 + + +膃 3 拷 suEXEC + 潟若篏睡喝障suEXEC 潟若 + 紊若帥鴻帥с肴c羈闋宴靕丈祉 + 鴻障羈膂≧т拭若с絎 + 潟若榊ゃ篆荐若障潟若劫с + 篋馹違祉ャd演冴障 + 祉ャc違潟違荅括完 + 篁緇罎荐 Apache + 違若掩с違suEXEC + 潟若紊 綣激ィ絅障 + +膃 4 緇сsuEXEC Apache + ゃ潟鴻若 + Apache 違若ф浦絎障suEXEC + 荐絎膊∞荅括完羈綽荀с + suEXEC 罕荐絎ゃ罎荐腟違膊∞ suEXEC + 絽吾ゃ潟鴻若号сゃ潟鴻若с障 + 荐絎ゃsuEXEC + 罘純篏睡筝激鴻祉ャc篆ゃ + 膊∞c羆阪絎綽荀с + 荅括完Apache 違若suEXEC + ゃ潟鴻若ゃ羈闋宴罎荐篏睡 + 羆阪翫c障 + + +с蚊帥障? с檎蚊帥障! +
+
+suEXEC 祉ャc≪+ +suEXEC 荐絎ゃ潟鴻若紮 + 障絎茖祉ャc≪ゃ茫障 + suEXEC ц + 激鴻祉ャc篆荐若茘 + 茹c鴻с + +suEXEC Apache web + 泣若若喝冴 setuid "wrapper" + 違堺c障荐荐 CGI障 SSI + 違吾 HTTP 鴻 wrapper + 若喝冴障鴻Apache + 違絎茵違若 ID 違若 + ID 絎 suEXEC wrapper 絎茵障 + + +wrapper 障紊掩羆阪 + 篁ヤ茵障倶>ゃс紊掩翫 + 違紊掩違荐蚊若х篋障 + с違緇膓障 + +
障с suEXEC wrapper + 祉ャc≪罔羣篏с絨ウ + CGI/SSI 荐荐ゃ違狗荀鎘ャс障 + suEXEC 祉ャc羈絨ら冴障 + + +祉ャc≪ + 泣若荐絎荐宴狗障suEXEC + 荐絎祉ャd演冴帥 + ≪荅潟宴ゃ"羈" + (Beware the Jabberwock) 腴с + +
+
+suEXEC + 荐絎ゃ潟鴻若+ +罐純障 + +suEXEC
+ 荐絎激с
suEXEC wrapper
+ 潟潟ゃゃ潟鴻若 絎若激с潟荐絎 違罨<泣若荐絎障 + +
Apache 絎茵違若帥 + suEXEC 若絎茵с + 腆肴┝障 +
+
+suEXEC + 劫≦劫+ +莎桁Apache
泣若莎桁<祉若吾冴翫 + 紊ф泣泣若喝贋 wrapper 違荀ゃc + setuid root ゃ潟鴻若с + +suEXEC 篁腟帥篏睡сApache ≪篏筝с違 + Apache kill 莎桁違障HUP 激違 + USR1 激違膣莎桁с筝с +suEXEC ≦鴻翫
+
+suEXEC 篏睡+ +CGI 違吾鴻 suEXEC 若若吟
+ 篁潟鴻: 若吟c:
+
+suEXEC+ +suEXEC wrapper 筝荐ц唇鴻
+ 羈: 茘篋箴+ +羈! + 腴絎с障腴井壕ゃ + Apache 違若 + 潟ゃ潟ャ<潟с + + +泣若荐絎狗 wrapper ゃ + ゃ恰訓鴻障suEXEC ≪ "" + 怨腆肴 + +
-
-
-
-Apache HTTP サーバ バージョン 2.3 -1.3 から 2.0 へのアップグレード- -This translation may be out of date. Check the
- English version for recent changes.
-
- アップグレードを簡単にするために、既存の Apache ユーザに
- 非常に重要な情報をこの文書にまとめています。これは短い
- 注意書きとして書かれています。より詳しい情報は
- 新機能の文書や
-
-
-コンパイル時の設定の変更- - -
-
-実行時の設定の変更- - -
-
-その他の変更- - -
- サードパーティモジュール- - -Apache 2.0 のサーバ API には多くの変更が加えられました。 - Apache 1.3 用の既存のモジュールは Apache 2.0 では修正なしでは - 動きません。詳細は 開発者向け文書 にあります。 -
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +1.3 2.0 吾≪違若+ +This translation may be out of date. Check the
+ English version for recent changes.
+
+ ≪違若膂≦√ Apache 若吟
+ 絽吾荀宴吾障障
+ 羈吾吾障荅潟宴
+ 井吾
+
+
+
+
+潟潟ゃ荐絎紊+ + +
+
+絎茵荐絎紊+ + +
+
+篁紊+ + +
-
-
-
-Apache HTTP サーバ バージョン 2.3 -URL からファイルシステム上の位置へのマップ- -This translation may be out of date. Check the
- English version for recent changes.
-
- この文書は Apache がリクエストの URL から送信するファイルの - ファイルシステム上の位置を決定する方法を説明します。 -
-
-
-
-関連するモジュールとディレクティブ- -
-
-DocumentRoot- -リクエストに対してどのファイルを送信するかを決定するときの
- Apache のデフォルトの動作は、リクエストの URL-Path (URL のホスト名と
- ポート番号の後に続く部分) を取り出して設定ファイルで指定されている
- Apache にはサーバが複数のホストへのリクエストを受け取る
- バーチャルホスト の機能もあります。
- この場合、それぞれのバーチャルホストに対して違う
-
-
-DocumentRoot 外のファイル- -ファイルシステム上の、
- 厳密には 代わりの方法として、
という設定のときは、URL
- もっと柔軟な設定が必要な状況では、
-
は
-
-ユーザディレクトリ- -伝統的に Unix システムではユーザ user のホームディレクトリを
-
セキュリティの観点から、ウェブからユーザのホームディレクトリへ
- 直接アクセスできるようにすることは適切ではありません。ですから、
-
中にはシンボル "~" (
-
-URL リダイレクション- -上の節で説明した設定用のディレクティブは Apache に
- ファイルシステムの特定の場所からコンテンツを取ってきて
- クライアントに送り返すようにします。ときには、その代わりに
- クライアントにリクエストされたコンテンツは別の URL にあることを
- 知らせて、クライアントが新しい URL へ新しいリクエストを行なうように
- する方が望ましいことがあります。これはリダイレクションと
- 呼ばれていて、
これは、 Apache はより複雑な書き換えの問題のために、
-
あるいは、一時的にサイトのすべてのページを他のサイトの特定の - ページへリダイレクトするときは、以下を使います: - -
-
-リバースプロキシ- -Apache は遠隔地にあるドキュメントをローカルのサーバの URL 空間に -持ってくることもできます。この手法はリバースプロキシと呼ばれています。 -ウェブサーバが遠隔地のドキュメントを取得してクライアントに送り返すのが -プロキシサーバの動作のように見えるからです。クライアントにはドキュメントが -リバースプロキシサーバから送られてきているように見える点が通常の -プロキシとは異なります。 - -次の例では、クライアントが
ただし、ドキュメントの中のリンクは書き換えられない、
-ということは知っておいてください。
-ですから、
-
-リライトエンジン- -より一層強力な置換が必要なときは、
- File Not Found- -必ず、リクエストされた URL に対応するファイルがファイルシステムに - 無いという場合が発生します。これが起こるのにはいくつかの理由があります。 - 場合によっては、ドキュメントを別の場所に移動した結果であることがあります。 - この場合は、クライアントにリソースの新しい位置を知らせるために - URL リダイレクションを使うのが最善の方法です。 - そうすることによって、リソースは新しい位置に移動しているけれども、 - 古いブックマークやリンクが動作し続けるようにすることができます。 - -"File Not Found" エラーのもう一つのよくある理由は、
- ブラウザへの直接入力や HTML リンクからの偶発的な URL の入力間違いです。
- Apache はこの問題を改善するために、 mod_speling の非常に有用な機能は、大文字小文字を区別せずに - ファイル名を比較するものです。これは URL と unix の - ファイルシステムが両方とも大文字小文字を区別するものである、 - ということをユーザが知らないシステムで役に立ちます。ただし、 - 時折の URL 訂正程度で済まず、mod_speling をより多く使用すると、サーバに - さらなる負荷がかかります。すべての「正しくない」リクエストの後に - URL のリダイレクトとクライアントからの新しいリクエストがくることに - なりますから。 - -コンテンツの位置を決めようとするすべての試みが失敗すると、
- Apache は、HTTP ステータスコード 404 (file not found) と共に
- エラーページを返します。このエラーページの外観は
-
+
+
+
+Apache HTTP 泣若 若吾с 2.3 +URL <ゃ激鴻筝篏臀吾+ +This translation may be out of date. Check the
+ English version for recent changes.
+
+ 吾 Apache 鴻 URL 篆<<ゃ + <ゃ激鴻筝篏臀羆阪号茯障 +
+
+∫c≪吾ャ若cc+ +
+
+DocumentRoot+ +鴻絲障<ゃ篆<羆阪
+ Apache 篏鴻 URL-Path (URL 鴻
+ 若垩緇膓) 冴荐絎<ゃф絎
+ Apache 泣若茲違鴻吾鴻
+ 若c鴻 罘純障
+ 翫若c鴻絲障
+
+
+DocumentRoot 紊<ゃ+ +<ゃ激鴻筝
+ ウ絲 篁c号
荐絎URL
+ c荵荐絎綽荀倶с
+
+
+若吟c+ +篌腟援 Unix 激鴻с若 user 若c
+
祉ャc荀括鴻с若吟若c
+ 贋・≪祉鴻сс障с
+
筝激潟 "~" (
+
+URL ゃ激с+ +筝膀ц荐絎cc Apache
+ <ゃ激鴻劫贋潟潟潟c
+ ゃ≪潟菴障篁c
+ ゃ≪潟鴻潟潟潟ャ URL
+ ャゃ≪潟違 URL 御違鴻茵
+ 鴻障障ゃ激с
+ 若違
Apache 茲吾馹
+
筝泣ゃ鴻若吾篁泣ゃ劫 + 若吾吾ゃ篁ヤ篏帥障: + +
+
+若鴻+ +Apache 違ャ<潟若泣若 URL 腥咲 +cс障羈若鴻若違障 +с泣若違ャ<潟緇ゃ≪潟菴 +激泣若篏荀сゃ≪潟ャ<潟 +若鴻激泣若荀鴻絽吾 +激違障 + +罨<箴сゃ≪潟
ャ<潟筝潟吾
+ャc
+с
+
+ゃ潟吾+ +筝絮ゅ七臀綽荀
+ File Not Found+ +綽鴻 URL 絲上<ゃ<ゃ激鴻 + <翫榊障莎激ゃ宴障 + 翫cャ<潟ャ贋腱糸腟с障 + 翫ゃ≪潟純若鴻違篏臀ャ + URL ゃ激с篏帥号с + c純若鴻違篏臀腱糸 + ゃ若潟篏膓с障 + +"File Not Found" 若筝ゃ宴
+ 吟吾贋・ュ HTML 潟句榊 URL ュс
+ Apache 馹劫 mod_speling 絽吾罘純紊ф絖絨絖阪ャ + <ゃ罸莠с URL unix + <ゃ激鴻筝≧鴻紊ф絖絨絖阪ャс + 若吟ャ激鴻у醜腴<障 + URL 荐罩g綺ф障mod_speling 紊鋎睡泣若 + 莢激障鴻罩c鴻緇 + URL ゃゃ≪潟違鴻 + 障 + +潟潟潟篏臀羆冴鴻荅帥紊掩
+ Apache HTTP 鴻若帥鴻潟若 404 (file not found) 宴
+ 若若吾菴障若若吾紊荀潟
+
-
-
-
-Apache HTTP サーバ バージョン 2.3 -バーチャルホストの例- -This translation may be out of date. Check the
- English version for recent changes.
-
-
- この文書は、バーチャルホストの設定の際に - よくある質問に答えるものです。想定している対象は 名前ベース や IP ベース のバーチャルホストを使って - 一つのサーバで複数のウェブサイトを運用している状況です。 - - -
-
-一つの IP アドレスでいくつかの名前ベースの - ウェブサイトを実行する- -サーバは IP アドレスを一つ割り当てられていて、DNS でマシンに
- 複数の名前 (CNAME) が指定されています。このマシンで
- 注
- Apache サーバの設定でバーチャルホストの設定をしただけで、
- 知らない間にそのホスト名に対応する DNS のエントリが
- 作成されたりはしません。そのサーバの IP アドレスに解決される
- ように DNS に名前を登録しなければなりません。
- そうでないと誰もあなたのウェブサイトを見ることはできません。
- ローカルでのテストのために サーバ設定
アスタリスクはすべてのアドレスにマッチしますので、主サーバは
- リクエストを扱いません。 注- -
しかし、IP アドレスが予測不可能なシステム
- ――例えばプロバイダから動的に IP アドレスを取得して何らかの
- ダイナミック DNS を使っている場合など――においては、 名前ベースのバーチャルホスティングではほぼすべての状況で、 - 上記の設定で希望の設定になっていることでしょう。 - 実際この設定が動作しないのは、IP アドレスやポートの違いによって - 違うコンテンツを送るときだけです。 - -
-
-複数の IP アドレスのあるホストで名前ベースの - ホスティングを行なう- -
-
-
- 注ここで説明されている方法は IP アドレスが - 何個あっても同様にできます。 -サーバには二つ IP アドレスがついています。一つ目
- ( サーバの設定
-
-違う IP アドレス (例えば、内部と外部アドレス) - で同じコンテンツを送る- -サーバマシンは IP アドレスを二つ (
サーバの設定
これでどちらのネットワークからのリクエストも同じ 注:内部ネットワークでは完全なホスト名の
- 上の例では、IP アドレスのリストを、すべてのアドレスに
- 同じコンテンツで応答する
-
-違うポートで違うサイトを運営する- -同じ IP に複数のドメインがあり、さらに複数のポートを使って - リクエストを扱いたいときがあります。"NameVirtualHost" タグの中で - ポートを定義することで、これを動作させられます。 - NameVirtualHost name:port 無しや Listen ディレクティブで - <VirtualHost name:port> を使おうとしても、その設定は動作しません。 - -サーバの設定
-
-IP ベースのバーチャルホスティング- -サーバは サーバの設定
-
-ポートベースと IP ベースの混ざった - バーチャルホスト- -サーバマシンはそれぞれ サーバの設定
-
-名前ベースと IP ベースを混ぜた - バーチャルホスト- -いくつかのマシンでは名前ベースの、その他では IP ベースのバーチャル - ホストをします。 - -サーバの設定
-
-
-
- |
関連モジュール | 関連ディレクティブ |
---|---|
名前ベースのバーチャルホストを使うには、そのホストへの
- リクエストを受け付けるサーバの IP アドレス (もしかしたらポートも)
- を指定する必要があります。
- これは NameVirtualHost
- ディレクティブで設定します。通常、NameVirtualHost
で
- *
の属性を使ってサーバの全ての IP アドレスを使います。
- (例えば SSL の使用などで) 複数のポートを使うことを計画しているのであれば、
- 引数に *:80
のようにポートも含めるようにしてください。
- NameVirtualHost
ディレクティブで
- IP アドレスを書いても、
- 自動的にサーバがその IP アドレスをリッスンするということはないことに
- 注意してください。詳細は「Apache の使うアドレスと
- ポートを設定する」を読んでください。さらに、ここで指定された
- IP アドレスは全てサーバのネットワークインターフェースと関連付けられて
- いなければなりません。
次は、扱うホストそれぞれに対して <VirtualHost>
ブロックを
- 作成してください。<VirtualHost>
- ディレクティブの引数は NameVirtualHost
- ディレクティブの引数と同じにしてください (すなわち、IP アドレスか、全てのアドレスを意味する
- *
)。それぞれの <VirtualHost>
- ディレクティブの中には、最低限、どのホストが扱われるかを示す ServerName
ディレクティブと、
- そのホスト用のコンテンツがファイルシステム上のどこにあるかを示す
- DocumentRoot
ディレクティブを
- 書く必要があります。
既にあるウェブサーバにバーチャルホストを追加する場合、
- 既存のウェブサーバに対しても <VirtualHost>
- ブロックを作らなければなりません。このバーチャルホストの
- ServerName
と
- DocumentRoot
- は、グローバルな ServerName
と
- DocumentRoot
- と同じものにします。また、このバーチャルホストを設定ファイルの中で
- 先頭に置いて、デフォルトホストとして動作するようにします。
たとえば、www.domain.tld
を動かしていて、
- さらにバーチャルホスト www.otherdomain.tld
- を追加するとしましょう。このバーチャルホストは同一 IP を指しているとします。
- そのような場合は、httpd.conf
- に以下のようなコードを追加するだけです
- NameVirtualHost *:80
-
- <VirtualHost *:80>
-
- ServerName www.domain.tld
- ServerAlias domain.tld *.domain.tld
- DocumentRoot /www/domain
-
- </VirtualHost>
-
- <VirtualHost *:80>
- ServerName www.otherdomain.tld
- DocumentRoot /www/otherdomain
-
- </VirtualHost>
-
NameVirtualHost
及び
- VirtualHost
のどちらの場合も、
- * の部分には明示的に IP アドレスを指定することができます。
- 例えば、ある IP アドレスでは名前ベースのバーチャルホストを使いたい一方で、
- 別の IP アドレスでは、他の IP ベースのバーチャルホストや
- 別組の名前ベースのバーチャルホストを使いたい場合、
- そう設定することになるでしょう。
複数の名前でサーバアクセスができるようにしたいことも多いでしょう。
- このようなことは、ServerAlias
ディレクティブを <VirtualHost>
- セクションに記述することで実現できます。
- 例えば上記の <VirtualHost>
の例であれば、
- 次のように一覧に挙げられた名前が、
- ユーザが同一のウェブサイトとして目にして使用できるサーバ名である、
- と ServerAlias
- ディレクティブで指定できます。
- ServerAlias domain.tld *.domain.tld
-
domain.tld
ドメインへの全てのホストへのリクエストは
- www.domain.tld
のバーチャルホストが処理します。
- 名前をマッチさせるために、ワイルドカード文字 * や ?
- を使用することもできます。もちろん思いつきの名前を作って、
- ServerName
や
- ServerAlias
- にその名前を書くといったことはできません。まずは、
- これらの名前が サーバに付けられた IP アドレスにマップされるように
- DNS サーバを適切に設定しなければなりません。
最後に、<VirtualHost>
コンテナの中に
- 他のディレクティブを書くことで、バーチャルホストの設定を細かく調整
- することができます。
- ほとんどのディレクティブはこれらのコンテナに設置することができて、
- 変更点はそのバーチャルホストに対してのみ有効になります。
- どのディレクティブを書くことができるかは、ディレクティブの コンテキスト を
- 調べてください。主サーバコンテキスト
- (<VirtualHost>
- コンテナの外) の設定用ディレクティブはバーチャルホストでの設定で
- 上書きされない場合のみ使用されます。
リクエストが来ると、サーバはまず最初に <NameVirtualHost>
- にマッチする IP アドレスかどうかをチェックします。マッチすれば
- マッチした IP アドレスの <VirtualHost>
- のそれぞれのセクションの中から
- ServerName
か
- ServerAlias
- に要求されたホスト名があるか探します。
- 見つかればそのサーバ用の設定を使います。マッチするバーチャルホスト
- が見つからなければ、マッチした IP アドレスの
- リストの最初にあるバーチャルホスト が使われます。
結果として、リストの最初のバーチャルホストが デフォルト の
- バーチャルホストになります。IP アドレスが NameVirtualHost
- ディレクティブにマッチした場合は、メインのサーバ の
- DocumentRoot
- は決して使われません
- どのバーチャルホストにもマッチしないリクエストに対して、
- 特別な設定をしたいのであれば、設定ファイル中の最初の
- <VirtualHost>
コンテナにそれを記述してください。
以前述べたように、名前ベースのバーチャルホストが正しく動作する - ために必要な情報を送ってこないクライアントが依然として存在しています。 - そのようなクライアントに対しては、該当する IP アドレスについて、 - 一番最初に設定されているバーチャルホスト - (プライマリの名前ベースのバーチャルホスト) - からページが送り返されます。
- -「古い」と表現している場合、本当に古いことを意味して使っています。
- 不幸にして今現在でもこのような古いブラウザに遭遇することがあります。
- 現在のブラウザは全て、名前ベースのバーチャルホストに必要な
- Host
ヘッダを送ります。
ServerPath
- ディレクティブで対処が可能です。ちょっと不格好ですけれども。
設定例
- -
- NameVirtualHost 111.22.33.44
-
- <VirtualHost 111.22.33.44>
-
- ServerName www.domain.tld
- ServerPath /domain
- DocumentRoot /web/domain
-
- </VirtualHost>
-
この例にはどういう意味があるでしょうか? これは
- "/domain
" で始まる URI へのリクエストはすべて、
- バーチャルホスト www.domain.tld
で処理される、
- という意味です。つまり、すべてのクライアントで
- http://www.domain.tld/domain/
でアクセスできるページが、
- Host:
ヘッダを送ってくるクライアントであれば
- http://www.domain.tld/
としてもアクセスできる、
- という意味です。
これが動作するようにするには、
- プライマリのバーチャルホストのページに
- http://www.domain.tld/domain/
へのリンクを設置します。
- そして、バーチャルホストのページでは、純粋な相対リンク (例:
- "file.html
" や "../icons/image.gif
")、
- あるいは /domain/
で始まるリンク (例:
- "http://www.domain.tld/domain/misc/file.html
" や
- "/domain/misc/file.html
") だけを設置します。
これには、幾分かの規律が必要となりますが、 - このようなガイドラインを忠実に守ることにより、たいていの場合、 - すべてのブラウザで ― 新しいブラウザでも古いものでも ― - 作成したページが見えるということを保証します。
- -Apache HTTP 泣若 若吾с 2.3
+吾с若鴻若c鴻 + c篏帥茯障
+IP 若鴻若c鴻с綽膈 + 若c鴻吾潟激с潟羆阪 IP + ≪鴻篏睡障с鴻 IP + ≪鴻綽荀障絲障若鴻若c鴻с + ゃ≪潟 HTTP 筝鴻 + 箴絖障茵у筝 IP + ≪鴻違紊違鴻у掩障
+ +若鴻若c鴻絽後膣с鴻 + 絲上罩g∈ IP ≪鴻 DNS ц┃絎違 + 鴻阪ャ Apache HTTP 泣若荐絎с + 若鴻若c鴻筝莇潟 IP + ≪鴻荀膩障cIP 若鴻若c鴻 + 御鴻劫宴医若鴻若c鴻篏帥鴻с + IP 若鴻若c鴻篏睡宴
+ +∫c≪吾ャ若 | ∫ccc |
---|---|
若鴻若c鴻篏帥鴻吾
+ 鴻篁泣若 IP ≪ (若)
+ 絎綽荀障
+ NameVirtualHost
+ ccц┃絎障絽吾NameVirtualHost
+ *
絮с篏帥c泣若 IP ≪鴻篏帥障
+ (箴 SSL 篏睡) 茲違若篏帥荐祉с違
+ 綣違 *:80
若
+ NameVirtualHost
cc
+ IP ≪鴻吾
+ 泣若 IP ≪鴻鴻潟
+ 羈荅括完Apache 篏帥≪鴻
+ 若荐絎茯сф絎
+ IP ≪鴻泣若若ゃ潟帥若с若鴻∫d
+ 違障
罨<宴鴻絲障 <VirtualHost>
+ 篏<VirtualHost>
+ cc綣違 NameVirtualHost
+ cc綣違 (<IP ≪鴻≪鴻潟
+ *
) <VirtualHost>
+ cc筝篏鴻宴腓冴 ServerName
cc
+ 鴻潟潟潟<ゃ激鴻筝腓冴
+ DocumentRoot
cc
+ 吾鏆荀障
≪с泣若若c鴻菴遵翫
+ √с泣若絲障 <VirtualHost>
+ 篏違障若c鴻
+ ServerName
+ DocumentRoot
+ 違若 ServerName
+ DocumentRoot
+ 障障若c鴻荐絎<ゃ筝
+ 臀鴻篏障
違www.domain.tld
+ 若c鴻 www.otherdomain.tld
+ 菴遵障若c鴻筝 IP 障
+ 翫httpd.conf
+ 篁ヤ潟若菴遵с
+ NameVirtualHost *:80
+
+ <VirtualHost *:80>
+
+ ServerName www.domain.tld
+ ServerAlias domain.tld *.domain.tld
+ DocumentRoot /www/domain
+
+ </VirtualHost>
+
+ <VirtualHost *:80>
+ ServerName www.otherdomain.tld
+ DocumentRoot /www/otherdomain
+
+ </VirtualHost>
+
NameVirtualHost
+ VirtualHost
<翫
+ * 腓榊 IP ≪鴻絎с障
+ 箴違 IP ≪鴻с若鴻若c鴻篏帥筝鴻с
+ ャ IP ≪鴻с篁 IP 若鴻若c鴻
+ ョ若鴻若c鴻篏帥翫
+ 荐絎с
茲違с泣若≪祉鴻с紊с
+ ServerAlias
cc <VirtualHost>
+ 祉激с潟荐菴違у憗с障
+ 箴遺荐 <VirtualHost>
箴с違
+ 罨<筝荀с
+ 若吟筝с泣ゃ篏睡с泣若с
+ ServerAlias
+ ccф絎с障
+ ServerAlias domain.tld *.domain.tld
+
domain.tld
<ゃ潟吾鴻吾鴻
+ www.domain.tld
若c鴻障
+ ゃ若絖 * ?
+ 篏睡с障<ゃ篏c
+ ServerName
+ ServerAlias
+ 吾cс障障
+ 泣若篁 IP ≪鴻
+ DNS 泣若荐絎違障
緇<VirtualHost>
潟潟筝
+ 篁cc吾с若c鴻荐絎膣違顄炊
+ с障
+ 祉cc潟潟荐臀с
+ 紊雁鴻若c鴻絲障炊鴻障
+ cc吾сcc 潟潟鴻
+ 茯帥鴻筝祉泣若潟潟鴻
+ (<VirtualHost>
+ 潟潟紊) 荐絎cc若c鴻с荐絎
+ 筝吾翫推戎障
鴻ャ泣若障 <NameVirtualHost>
+ IP ≪鴻с障
+ IP ≪鴻 <VirtualHost>
+ 祉激с潟筝
+ ServerName
+ ServerAlias
+ 荀羆鴻「障
+ 荀ゃ違泣若荐絎篏帥障若c鴻
+ 荀ゃ違 IP ≪鴻
+ 鴻若c鴻 篏帥障
腟鴻若c鴻
+ 若c鴻障IP ≪鴻 NameVirtualHost
+ cc翫<ゃ潟泣若
+ DocumentRoot
+ 羆冴篏帥障
+ 若c鴻鴻絲障
+ 劫ャ荐絎с違荐絎<ゃ筝
+ <VirtualHost>
潟潟荐菴違
篁ュ菴違鴻若鴻若c鴻罩c篏 + 綽荀宴cゃ≪潟箴吟絖障 + ゃ≪潟絲障荅峨 IP ≪鴻ゃ + 筝荐絎若c鴻 + (ゃ若鴻若c鴻) + 若吾菴障
+ +ゃ茵憗翫綵ゃ潟篏帥c障
+ 筝綛吾篁憜сゃ吟障
+ 憜吟若鴻若c鴻綽荀
+ Host
障
ServerPath
+ ccу上純с<c筝弱ソс
荐絎箴
+ +
+ NameVirtualHost 111.22.33.44
+
+ <VirtualHost 111.22.33.44>
+
+ ServerName www.domain.tld
+ ServerPath /domain
+ DocumentRoot /web/domain
+
+ </VirtualHost>
+
箴潟с?
+ "/domain
" у障 URI 吾鴻鴻
+ 若c鴻 www.domain.tld
у
+ 潟сゃ障鴻ゃ≪潟
+ http://www.domain.tld/domain/
с≪祉鴻с若吾
+ Host:
cゃ≪潟с
+ http://www.domain.tld/
≪祉鴻с
+ 潟с
篏
+ ゃ若c鴻若吾
+ http://www.domain.tld/domain/
吾潟荐臀障
+ 若c鴻若吾с膣膕後障潟 (箴:
+ "file.html
" "../icons/image.gif
")
+ /domain/
у障潟 (箴:
+ "http://www.domain.tld/domain/misc/file.html
"
+ "/domain/misc/file.html
") 荐臀障
綛上荀鏅綽荀障 + ゃゃ潟綽絎絎翫 + 鴻吟 違吟сゃс + 篏若吾荀篆荐若障
+ +