Apache HTTP サーバーの設定ファイルは/etc/httpd/conf/httpd.confです。httpd.confファイルは十分にコメントが記入されており改めて説明する必要はないでしょう。 デフォルトの設定でほとんどの状況に機能しますが、 より重要となる設定オプションを理解しておいた方が良いでしょう。
![]() | 警告 |
---|---|
Apache HTTP サーバー 2.0 のリリースで、多くの設定オプションが変更しています。 バージョン1.3 の設定ファイルを2.0形式に移行する場合は、 項10.2を参照してください。 |
Apache HTTP サーバーを設定する場合、/etc/httpd/conf/httpd.confを編集し、次に項10.4 に概略されているように、httpdプロセスの再ロード、再起動、 停止して起動、のいずれかを行ないます。
httpd.confを編集する前に、まず、オリジナルファイルをコピーする必要があります。バックアップを作成することにより、 設定ファイルの編集中に生じた間違いを元に戻す作業が楽になります。
編集を間違ってしまいWebサーバーが正常に機能しなくなった場合は、 まず、最近httpd.confで編集したパッセージを見直し、 タイプミスがないことを確認します。
次に、Webサーバーのエラーログ/var/log/httpd/error_logを調べます。 エラーログは、経験が少ない方には解釈が難しいかもしれませんが、 エラーログ内の最後のエントリで役に立つ情報を提示しているはずです。
次のサブセクションには、httpd.confに含まれている 多くのディレクティブに関する簡単な説明の一覧があります。 この説明は完全な詳細ではありません。詳しい詳細については、 オンラインのApacheドキュメント、http://httpd.apache.org/docs-2.0/で参照してください。
mod_sslディレクティブについての詳細は、 オンラインのドキュメント、http://httpd.apache.org/docs-2.0/mod/mod_ssl.html で参照してください。
ServerRootディレクティブは、ウェブサイトのコンテントを含む トップレベルのディレクトリです。デフォルトでは、 セキュアサーバー、非セキュアサーバーいずれに対しても、 ServerRootは"/etc/httpd"に 設定されます。
Timeoutは、サーバーが通信中に送受信を待つ時間を秒単位で定義します。デフォルトでは、Timeoutは300秒に設定されており、 ほとんどの場合変更する必要はないでしょう。
KeepAliveは、 サーバーが接続あたり複数の要求を許可するかどうかを設定し、 あるクライアントがサーバーのリソースを消費しすぎないようにするために 使用することができます。
デフォルトでは、Keepaliveはoffに設定されます。 Keepaliveをonに設定し サーバーが非常にビージーになると、サーバーは素早く最大数の子プロセスを生成します。 この状況では、サーバーは重大なスローダウンに陥ります。 Keepaliveを有効にする場合は、KeepAliveTimeout (項10.5.7を参照)を低く設定し、 サーバー上の/var/log/httpd/error_logログファイルを監視します。 このログは、サーバーに子プロセスが不足した時にレポートします。
このディレクティブは、永続的な接続ごとに可能な最大要求数を設定します。 Apache Projectでは、サーバーのパフォーマンスを向上する高い設定を推奨しています。MaxKeepAliveRequestsはデフォルトで100に設定されますが、ほとんどの場合変更する必要はないでしょう。
KeepAliveTimeoutは、要求がなされてから接続を閉じるまでの、サーバーが待機する時間を秒数で設定します。サーバーが要求を受信すると、 代わりにTimeoutディレクティブが適用されます。 デフォルトでは、KeepAliveTimeoutは15秒に設定されます。
<IfModule>タグと</IfModule>タグは、条件付きのコンテナを作成し、指定されたモジュールが読み込まれる場合にのみ 起動されます。IfModuleコンテナ内のディレクティブは、 2つの条件のうちの1つで処理されます。 ディレクティブは、開始<IfModule>タグ内のモジュールが 読み込まれると処理されます。または、モジュール名の前に「!」(感嘆符)が付いて指定されている場合、<IfModule>タグに指定されている モジュールが読み込まれなかった場合にのみ ディレクティブは処理されます。
Apache HTTP サーバーモジュールの詳細については、項10.7を参照してください。
項10.2.1.2で説明されているように、 Apache HTTP サーバー 2.0 稼動環境下では、サーバープールの特性を管理するのは、 MPMと呼ばれるモジュールグループに任されます。 サーバープールの特性は使用されるMPMによって異なります。 このため、使用中のMPM用のサーバープールを定義するために、 IfModuleコンテナが必要となります。
デフォルトでは、Apache HTTP サーバー 2.0 は、preforkとworker、両方のMPMのサーバープールを定義します。
MPM固有サーバープールのコンテナ内にあるディレクティブの一覧を以下に示します。
StartServersは、起動時に作成されるサーバープロセス数を設定します。Webサーバーがトラフィックの負荷に基づいて動的にサーバープロセスを停止したり作成したりするので、このパラメータを変更する必要はありません。 Webサーバーは、起動時に、preforkMPMには 8サーバープロセスを、 workerMPMには 2サーバープロセスを起動するように設定されます。
MaxRequestsPerChildは、子プロセスが停止するまでそれぞれの子サーバープロセスが処理する要求の総数を設定します。MaxRequestsPerChildを設定する主な理由は、長期に生き続けるプロセスで誘導されるメモリリークを回避するためです。 prefork MPMのデフォルトのMaxRequestsPerChildは1000で、worker MPMの デフォルトは0です。
MaxClientsは、サーバープロセスの総数または同時に接続される クライアントの数に制限を設定します。これは一度に実行できます。 このディレクティブの主な目的は、Apache HTTP サーバーがオペレーティングシステムをクラッシュさせる のを防ぐためです。ビジーなサーバーの場合には、この値を高く設定する必要があります。 サーバーのデフォルトは使用中のMPMに関わらず150に設定されます。 ただし、preforkMPMを使用するときには、 MaxClientsの値が256を超えることは おすすめできません。
これらの値はprefork MPMでのみ使用されます。これらの値は、着信要求の数に基づいて適切な数のスペアサーバープロセスを維持することで、 Apache HTTP サーバー が検出された負荷に対して動的に適応する方法を調整します。このサーバーは要求を待つサーバーの数をチェックして、 MaxSpareServers以上ある場合にはいくつかのサーバーを停止し、 MinSpareServers以下の場合にはいくつかのサーバーを作成します。
デフォルトのMinSpareServers値は5で、デフォルトのMaxSpareServers値は20です。 ほとんどの場合、これらのデフォルト設定を変更する必要はないでしょう。MinSpareServersを大きい数字にしないよう注意してください。 数字を大きくすると、トラフィックが軽くてもサーバーに重い処理負荷がかかることになります。
これらの値はworker MPMでのみ使用されます。 これらの値は、着信要求の数に基づいて適切な数のスペアサーバースレッドを維持することで、 Apache HTTP サーバー が検出された負荷に動的に適応する方法を調整します。このサーバーは要求を待つサーバースレッドの数をチェックして、 MaxSpareThreads以上ある場合にはいくつかのサーバーを停止し、 MinSpareThreads以下の場合にはいくつかのサーバーを作成します。
デフォルトのMinSpareThreads値は25で、デフォルトのMaxSpareThreads値は75です。 ほとんどの場合、これらのデフォルト設定を変更する必要はないでしょう。MaxSpareThreadsの値は、MinSpareThreads とThreadsPerChildの合計値と同等またはそれ以上にしてください。 あるいは、Apache HTTP サーバーが自動的に調整します。
Listenコマンドは、着信要求を受けるWebサーバー上のポートを 識別します。デフォルトでは、Apache HTTP サーバーは、非セキュアWeb通信用のポート80と、 (セキュアサーバーを定義する/etc/httpd/conf.d/ssl.conf ファイル内で)セキュアWeb通信用のポート443をリスニングするように設定されます。
1024の下のポートをリスニングするようにApache HTTP サーバーを設定する場合、 起動できるのはrootユーザーのみです。ポート1024以上の場合は、 通常のユーザーとしてhttpdを起動できます。
また、Listenディレクティブは、 接続を受けるサーバーで特定のIPアドレスを指定するのに使用することもできます。
Includeで、実行時に他の設定ファイルを含むようにすることができます。
これらの設定ファイルへのパスは絶対パスかServerRoot に対する相対パスにします。
![]() | 重要 | |
---|---|---|
個別にパッケージ化されたモジュールを使用するサーバーの場合、 mod_ssl、mod_perl、 phpなど、以下のディレクティブがhttpd.confのSection 1: Global Environmentに含まれる必要があります。
|
LoadModuleは、ダイナミック共有オブジェクト(DSO)モジュールでロードするのに使用します。LoadModuleディレクティブの使用方法など、Apache HTTP サーバーのDSOサポートの詳細は、項10.7を参照してください。Apache HTTP サーバー 2.0では、 モジュールをロードする順序は重要ではなくなりました。 Apache HTTP サーバー 2.0 DSO サポートについての詳細は、項10.2.1.3 を参照してください。
ExtendedStatusディレクティブは、 server-statusハンドラが呼び出されるときに、 Apacheが基本サーバーステータス情報を作成するか(off)、 詳細なサーバーステータス情報を作成するか(on)を管理します。 Server-statusは、Locationタグで呼び出されます。 server-statusを呼び出す手順の詳細については、 項10.5.59に示されています。
IfDefineタグは、「テスト」でIfDefineタグ が真である場合に、適用される設定ディレクティブを囲みます。 「テスト」が偽である場合には、ディレクティブは無視されます。
IfDefineタグ内のテストはパラメータ名です (例、HAVE_PERL)。パラメータが定義される、 つまりサーバーの起動コマンドに対して引数として与えられる場合、 テストは真になります。この場合、Webサーバーが起動すると、 テストは真になり、IfDefineタグを含むディレクティブが適用されます。
Userディレクティブは、サーバープロセスのユーザー名を設定し、 サーバーがアクセスを許可されるファイルを決定します。 このユーザーにアクセスできないファイルはすべて、Apache HTTP サーバーに接続しているクライアントにも アクセスできません。
デフォルトで、Userはapacheに設定されます。
![]() | 注記 |
---|---|
安全上の理由で、Apache HTTP サーバーはrootユーザーとしての実行を拒否します。 |
ServerAdminディレクティブをWebサーバー管理者の電子メールアドレス に設定します。このメールアドレスは、サーバーが生成したWebページのエラーメッセージ に表示されるので、ユーザーが電子メールをサーバー管理者に送信することで問題を報告する ことができます。
デフォルトで、ServerAdminはroot@localhostに 設定されます。
ServerAdminを設定する一般的な方法は、 webmaster@example.comに設定することです。 次に、webmasterを/etc/aliases のWebサーバー担当者にエイリアスし、 /usr/bin/newaliasesを実行します。
ServerNameは、サーバーのホスト名とポート番号 (Listenディレクティブと合致する)を指定します。 ServerNameは、マシンの実際のホスト名と合致する必要はありません。 例えば、Webサーバーはwww.example.comで、 サーバーのホスト名は実際にはfoo.example.com であっても構いません。ServerNameで指定される値は、 システムで解決できる有効な DNS (Domain Name Service) 名でなければなりません。 — 無効な値を作成しないでください。
以下にServerNameディレクティブの例を示します。
ServerName www.example.com:80 |
ServerNameを指定する場合は、そのIPアドレスとサーバー名の組が/etc/hostsファイルに含まれていることを確認してください。
onに設定すると、 このディレクティブは、ServerNameディレクティブと Portディレクティブで指定された値を使って、Apache HTTP サーバーが自身を参照するよう設定します。 UseCanonicalNameがoffに設定されると、 代わりにサーバーは自身を参照するときにクライアントの要求で使われる 値を使用します。
デフォルトで、UseCanonicalNameはoff に設定されます。
DocumentRootは、要求に対する応答に処理されるほとんどのHTMLファイルを含むディレクトリです。非セキュアWebサーバー及びセキュアWebサーバーの デフォルトのDocumentRootはいずれも/var/www/html/ディレクトリです。たとえば、サーバーは次のドキュメントに対する要求を受信したとします。
http://example.com/foo.html |
サーバーは、デフォルトのディレクトリで次のファイルを探します。
/var/www/html/foo.html |
セキュアWebサーバーと非セキュアWebサーバーで共有されないように、 DocumentRootを変更するには、項10.8を参照してください。
<Directory /path/to/directory>タグと</Directory>タグは、特定ディレクトリとそのサブディレクトリだけに適用する 設定ディレクティブのグループを囲むのに使用されるコンテナを作成します。 ディレクトリに適用できるディレクティブはすべて、Directoryタグで 囲んで使用できます。
デフォルトでは、Optionsディレクティブ(項10.5.22を参照)とAllowOverrideディレクティブ(項10.5.23を参照)を使って、非常に制限的なパラメータがルートディレクトリに適用されます。この設定では、寛容な設定を必要とするシステム上のすべてのディレクトリにこれらの設定を明示的に与える必要があります。
デフォルトの設定では、別のDirectoryコンテナが、 厳密ではないパラメータをディレクトリツリーに割り当てるDocumentRoot 用に設定されます。これにより、Apache HTTP サーバーがそこにあるファイルにアクセスすることができます。
また、Directoryコンテナは、ScriptAliasディレクティブで指定されているディレクトリの外にある サーバー側アプリケーション用の追加cgi-binディレクトリを 設定するのに使用することもできます。
これを行なうには、Directoryコンテナが、 そのディレクトリにExecCGIオプションを設定する必要があります。
例えば、CGIスクリプトが/home/my_cgi_directoryにある場合、 以下のDirectoryコンテナをhttpd.confファイル に追加します。
<Directory /home/my_cgi_directory> Options +ExecCGI </Directory> |
次に、AddHandlerディレクティブのコメントを外して、 .cgi拡張子を持つファイルをCGIスクリプトとして 認識する必要があります。AddHandlerの設定方法については、 項10.5.55を参照してください。
これを機能させるには、 CGIスクリプトのパーミッションとスクリプトへのパス全体を0755に設定する必要があります。
Optionsディレクティブは、どのサーバー機能が特定のディレクトリで使用できるかを制御します。たとえば、ルートディレクトリに対して指定された制限的なパラメータで、OptionsはFollowSymLinksだけに設定されます。サーバーはルートディレクトリ内のシンボリックリンクをたどることが許されているという点以外、有効にされる機能はありません。
デフォルトでは、DocumentRootディレクトリで、IndexesとFollowSymLinksを含むように Optionsが設定されます。Indexesを使用すると、 指定されたDirectoryIndex(例、index.html) がない場合、サーバーはディレクトリ一覧を表示するディレクトリを作成します。 FollowSymLinksを使用すると、 サーバーはそのディレクトリ内のシンボリックリンクをたどることができます。
![]() | 注記 |
---|---|
メインサーバーの設定セクションにあるOptionsステートメントが、 各VirtualHostコンテナに複製される必要があります。 VirtualHostコンテナについての詳細は、 項10.5.65を参照してください。 |
AllowOverrideディレクティブは、.htaccessファイル内の宣言でOptionsをオーバーライドできるかどうかを設定します。デフォルトでは、rootディレクトリとDocumentRootはともに.htaccessのオーバーライドを可能にしないように設定されます。
Orderディレクティブは、allowディレクティブとdenyディレクティブが評価される順序を制御します。 サーバーは、DocumentRootのDenyディレクティブの前にAllowディレクティブを評価するように設定されます。
Allowは、特定のディレクトリにアクセスできるクライアントを指定します。 クライアントは、all、ドメイン名、IPアドレス、部分的なIPアドレス、 ネットワーク/ネットマスクのペアなどで指定することができます。 DocumentRootディレクトリはall、 つまりすべての人からの要求をAllow(許可)するように 設定されます。
DenyはAllowと似たような機能ですが、 誰がアクセスを拒否されるかを指定します。DocumentRootは、デフォルトでは誰からの要求もDeny (拒否する)ようには設定されていません。
UserDirは、Webサーバーで処理されるパーソナルHTMLファイルを 配置する各ユーザーのホームディレクトリ内のサブディレクトリです。 このディレクティブはデフォルトではdisableに設定されます。
デフォルトの設定では、サブディレクトリの名前はpublic_htmlに 設定されます。たとえば、サーバーは次のような要求を受信する場合があります。
http://example.com/~username/foo.html |
この場合、サーバーは次のファイルを探します。
/home/username/public_html/foo.html |
上記の例では、/home/usernameはユーザーのホームディレクトリです(ユーザーのホームディレクトリへのデフォルトパスは異なる場合があるので 注意してください)。
ユーザーのホームディレクトリ上の権限が正しく設定されていることを確認してください。 ユーザーのホームディレクトリは、0711に設定する必要があります。 read(r)ビットとexecute(x)ビットは、ユーザーのpublic_htmlディレクトリ(0755も有効)に設定する必要があります。 ユーザーのpublic_htmlディレクトリ内で処理されるファイルは、 少なくとも0644に設定する必要があります。
DirectoryIndexは、ユーザーがディレクトリ名の終わりにスラッシュ(/)を指定してディレクトリのインデックスを要求したときにサーバーで処理されるデフォルトページです。
ユーザーがhttp://example/this_directory/のページを要求すると、DirectoryIndexページが存在すればそのページを取得し、 なければサーバーが生成したディレクトリ一覧を取得します。DirectoryIndexのデフォルトはindex.htmlとindex.html.varタイプのマップです。 サーバーはこれらのどちらかのファイルを探し、最初に見つかったファイルを返します。 これらのファイルが見つからず、 そのディレクトリに対してOptions Indexesが設定されると、 ディレクトリ一覧機能がオフになっていない限り、 サーバーはディレクトリ内のサブディレクトリとファイルの一覧をHTML形式で生成して返します。
AccessFileNameでは、サーバーが各ディレクトリ内のアクセス制御情報用に使用するファイルを指定します。 デフォルトは.htaccessです。
AccessFileNameディレクティブの直後で、一連のFilesタグを使って.htから始まるファイルにアクセス制御を適用します。これらのディレクティブは、セキュリティのために.htaccessファイル(あるいは.htから始まる他のファイル)へのWebアクセスを拒否します。
デフォルトでは、内容に基づいてネゴシエートされたすべてのドキュメント(すなわち、一定期間に変化する可能性があるか、リクエスタからの入力があったため)をキャッシュしないようにWebサーバーがプロキシサーバーに依頼します。CacheNegotiatedDocsがonに設定されると、 この機能が無効になり、プロキシサーバーはドキュメントのキャッシュを許可されます。
TypesConfigは、MIMEタイプマッピング(ファイル名拡張子からContentTypeへ)のデフォルト一覧を設定するファイルを指定します。デフォルトのTypesConfigファイルは/etc/mime.typesです。/etc/mime.typesを編集する代わりに、MIMEタイプマッピングを追加する方法として望ましいのは、AddTypeディレクティブを使用する方法です。
AddTypeの詳細については、項10.5.54を参照してください。
DefaultTypeは、MIMEタイプを決定できない文書に使用する、WebサーバーのデフォルトContentTypeを設定します。 デフォルトはtext/plainです。
HostnameLookupsは、on、off、doubleのどれかに設定できます。HostnameLookupsがonに設定されると、 サーバーは自動的に各接続のIPアドレスを解決します。 IPアドレスの解決とは、サーバーがDNSに1つまたは複数の接続を行ない、 オーバーヘッド処理を追加します。 HostnameLookupsがdoubleに設定されると、 サーバーは二重逆引きDNS健作を実行し、さらに多くのオーバーヘッド処理を追加します。
サーバー上のリソースを節約するために、 HostnameLookupsはデフォルトでoffに設定されます。
サーバーログファイル内のホスト名が必要とされる場合は、 効率よく一括でDNSの検索を行える多数のログアナライザツールの1つを、 Webサーバーログファイルを巡回するときに実行してみるのもよいでしょう。
ErrorLogは、サーバーのエラーを記録するファイルを指定します。 デフォルトでは、このディレクティブは/var/log/httpd/error_logに設定されます。
LogLevelは、エラーログのエラーメッセージの冗長レベルを設定します。 LogLevelは、(冗長性が少いものから最も冗長なレベルまでの順に) emerg、alert、crit、 error、warn、notice、 info、debugのいずれかに設定できます。デフォルトのLogLevelはwarnです。
LogFormatディレクティブは各種のWebサーバーログファイルの 形式を設定します。実際に使用されるLogFormatは、 CustomLogディレクティブで与えられる設定によります (項10.5.37を参照)。
CustomLogディレクティブがcombinedに 設定される場合の形式オプションを以下に示します。
要求クライアントのリモートIPアドレスを一覧表示します。 HostnameLookupsがonに設定されると、 クライアントホスト名は、DNSから取得できない場合を除いて記録されます。
未使用。ログファイルの中の該当フィールドに-が表示されます。
認証が要求された場合、記録されるユーザーのユーザー名を一覧表示します。 通常、これは使用されないので、ログファイルの該当フィールドには-が表示されます。
要求の日時を一覧表示します。
ブラウザまたはクライアントから送信されたものとまったく同じ要求文字列を一覧表示します。
クライアントホストに返されたHTTPステータスコードを一覧表示します。
ドキュメントのサイズを一覧表示します。
Webサーバーにクライアントホストを参照したウェブページのURLを一覧表示します。
要求を行っているWebブラウザのタイプを一覧表示します。
CustomLogはログファイルとログファイル形式を識別します。 デフォルトで、ログファイルは /var/log/httpd/access_log ファイルに記録されます。
デフォルトのCustomLog形式はcombinedされます。以下に、combinedログファイルの形式を示します。
remotehost rfc931 user date "request" status bytes referrer user-agent |
ServerSignatureディレクティブは、 Apache HTTP サーバーサーバーのバージョンとServerNameを含む行を、 クライアントに返信したエラーメッセージなどのサーバーが生成する文書に追加します。 デフォルトで、ServerSignatureはonに 設定されます。
また、off、EMail、EMailにも設定でき、mailto:ServerAdmin HTML タグを自動生成レスポンスの signaature 行に追加します。
Aliasを設定すれば、DocumentRootディレクトリの外にあるディレクトリにもアクセスできるようになります。 末尾がエイリアスであるURLはすべて自動的に解決され、エイリアスのパスに変換されます。デフォルトで、icons/ディレクトリの エイリアスが1つすでに設定されています。Webサーバーはicons/ ディレクトリに対してアクセスできますが、このディレクトリは DocumentRootにはありません。
ScriptAlias設定により、CGIスクリプトの場所が定義されます。 一般的には、それらのスクリプトがテキスト文書として参照される恐れがあるので、 CGIスクリプトをDocumentRootの中に残しておくべきではありません。 この理由から、DocumentRootの外にありサーバー側で実行可能な形式の ファイルやスクリプトを含む特殊ディレクトリは、ScriptAlias ディレクティブで指定されます。このディレクトリは、cgi-bin として知られ、デフォルトで/var/www/cgi-bin/に設定されます。
cgi-binディレクトリの外に実行可能形式のファイルをストアするための ディレクトリを設置することが可能です。これを行なう手順については、 項10.5.55と項10.5.21を参照してください。
webページを移動する場合は、Redirectを使用してファイルの場所を 新しいURLにマッピングすることができます。フォーマットは以下のとおりです。
Redirect /<old-path>/<file-name> http://<current-domain>/<current-path>/<file-name> |
この例では、<old-path>の部分には、 <file-name>の古いパス情報を入れ、 <current-domain>と<current-path>の部分には、現在のドメインと <file-name>の現在のパス情報を入れます。
この例では、古い場所での<file-name>に対する要求はすべて自動的に新しい場所へリダイレクトされます。
高度なリダイレクト技術には、Apache HTTP サーバーと共にに含まれているmod_rewriteモジュールを使用します。mod_rewriteモジュールの 設定方法についての詳細は、Apache Software Foundation のドキュメントを オンラインのhttp://httpd.apache.org/docs-2.0/mod/mod_rewrite.htmlで参照してください。
IndexOptionsは、アイコン、ファイルの説明などを追加することによって、サーバーが生成するディレクトリ一覧の外見を制御します。Options Indexesを設定すると(項10.5.22を参照)、WebサーバーがインデックスのないディレクトリのHTTP要求を受信した際に、ディレクトリ一覧を生成します。
Webサーバーは、まず、DirectoryIndexディレクティブに記載されている名前と合致するファイル(通常、index.html) を要求されたディレクトリで調べます。index.htmlファイルが 見つからなかった場合、Apache HTTP サーバーは要求されたディレクトリのHTMLディレクトリ一覧 を作成します。このディレクトリ一覧の外観は、部分的に、 IndexOptionsで制御されます。
デフォルトの設定ではFancyIndexingがonになっています。コラムヘッダをクリックすると、ユーザーは表示順序を並べ替えることができます。 同じヘッダーをもう一度クリックすると、昇順と降順が切り替わって元に戻ります。FancyIndexingは、ファイル拡張子の種類に基づいて、ファイルごとに異なるアイコンを表示します。
AddDescriptionオプションは、 FancyIndexingと連結して使用すると、 サーバー生成のディレクトリ一覧のファイルに対して簡単な説明を表示します。
IndexOptionsにはほかにもいくつかのパラメータがあり、それらを設定することで、サーバーが生成するディレクトリの外見を制御することができます。パラメータには、サーバーが生成するwebページに含まれるアイコン用のHEIGHTタグとWIDTHタグをサーバーに組み込むためのIconHeightとIconWidth、ファイル名と共にアイコンをHTMLリンクのアンカーとして機能させるためのIconsAreLinks、その他が含まれます。
このディレクティブは、サーバー生成のディレクトリ一覧で、MIMEエンコードされたファイルごとに表示するアイコンを指定します。デフォルトでは、 Webサーバーは、compressed.gifアイコンを サーバー生成のディレクトリ一覧でMIMEエンコードされたx-compressファイルと x-gzipファイルの隣に表示します。
このディレクティブは、サーバー生成のディレクトリ一覧で、MIMEタイプを持ったファイルの隣に表示するアイコンを指定します。たとえば、サーバーは、text.gifアイコンを サーバー生成のディレクトリ一覧で mimeタイプがtext であるファイルの隣に表示します。
AddIconは、サーバー生成のディレクトリ一覧で、特定の拡張子を持つファイルに表示するアイコンを指定します。たとえば、 Webサーバーは、binary.gifアイコンを 拡張子が.binか、.exeのファイルに 表示するよう設定されています。
DefaultIconは、サーバー生成のディレクトリ一覧で、 アイコンが特別に指定されていないファイルに表示するアイコンを指定します。 unknown.gifイメージファイルがデフォルトです。
FancyIndexingをIndexOptionsパラメータ として使用する際、AddDescriptionは、 サーバー生成のディレクトリ一覧で特定ファイルのユーザー指定詳細やファイルタイプを 表示するのに使用できます。AddDescriptionディレクティブは、 一覧特殊ファイル、ワイルドカード表記、ファイル拡張子をサポートします。
ReadmeNameは、サーバー生成のディレクトリ一覧の末尾に追加されるファイルがディレクトリ内に存在すれば、それを指定します。 WebサーバーはまずそのファイルをHTMLドキュメントとして含むことを試み、 次にプレーンテキストとして含むことを試みます。デフォルトでは、 ReadmeNameはREADME.htmlに設定されます。
HeaderNameは、サーバー生成のディレクトリ一覧の先頭に追加されるファイルがディレクトリ内に存在すれば、それを指定します。ReadmeNameと同様に、可能であればサーバーはそのファイルをHTMLドキュメントとして含むことを試み、不可能であればプレーンテキストとして含むことを試みます。
IndexIgnoreは、ファイル拡張子、部分ファイル名、ワイルドカード表記、完全なファイル名を一覧形式で指定します。Webサーバーは、 これらのパラメータと一致するファイルを、サーバーが生成するディレクトリ一覧から除外します。
AddEncodingは、特定のエンコードタイプを指定する必要のあるファイル名拡張子を指定します。AddEncodingを使用すれば、ある種のブラウザに対して、特定のファイルのダウンロード時に それらのファイルを解凍するように指示することもできます。
AddLanguageは、ファイル名拡張子と特定の言語を関連付けます。 このディレクティブは、クライアントのWebブラウザの言語設定に基づいて、 複数の言語でコンテントを処理するApache HTTP サーバーに便利です。
AddTypeディレクティブを使用して、 デフォルトのMIMEタイプとファイル拡張子の組み合わせを定義または上書きします。 以下のディレクティブの例は、Apache HTTP サーバーに.tgzファイル拡張子を 認識するよう伝えています。
AddType application/x-tar .tgz |
AddHandlerは、ファイル拡張子を特定のハンドラにマッピングします。 たとえば、.cgiで終わるファイルを自動的にCGIスクリプトとして扱う ために、cgi-scriptハンドラを拡張子.cgiに合致させることができます。以下は、.cgi拡張子に対する AddHandlerディレクティブの例です。
AddHandler cgi-script .cgi |
このディレクティブで、cgi-binの外にあるCGIが、 ディレクトリコンテナ内にExecCGIオプションを持つサーバー上に あるどのディレクトリでも機能するようできます。 ディレクトリのExecCGIオプションを設定する方法についての詳細は、 項10.5.21を参照してください。
CGIスクリプトだけではなく、AddHandlerディレクティブは、 サーバー解析されたHTMLやイメージマップファイルを処理するのに使用されます。
Actionは、MIME ContentTypeとCGIスクリプトの組を指定することができます。したがって、該当するメディアタイプが要求された場合には、必ず特定のCGIスクリプトが実行されることになります。
ErrorDocumentディレクティブは、HTTPレスポンスコードを クライアントに返信されるメッセージやURLに関連付けます。デフォルトでは、 Webサーバーはエラーが発生するとシンプルで通常は暗号化されたエラーメッセージ を出力します。ErrorDocumentディレクティブは、 代わりにWebサーバーがカスタマイズされたメッセージやページを出力するよう強制します。
![]() | 重要 |
---|---|
有効にするには、メッセージが2つの二重引用符 |
BrowserMatchディレクティブを使用すれば、サーバーは環境変数を定義したり、ユーザーエージェントのHTTPヘッダフィールドに基づいて、 適切なアクションを実行したりすることができます — クライアントのWebブラウザを 識別します。デフォルトでは、WebサーバーはBrowserMatchを使用して、既知の問題を含む特定のブラウザに対する接続を拒否したり、 keepaliveやHTTPヘッダーフラッシュに関して問題のあるブラウザについてそれらのアクションを無効化したりします。
<Location>タグと</Location>タグは、URLに基づくアクセス制御を指定できるコンテナを作成します。
例えば、サーバーのドメイン内から接続している人にサーバーステータスレポートの参照を 許可するには、次のディレクティブを使用します。
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from <.example.com> </Location> |
<.example.com>の部分には、 Webサーバーのセカンドレベルのドメイン名を入れます。
ドメイン内部からの要求に対してサーバー設定レポート(インストール済みのモジュールと設定ディレクティブを含む)を提供するには、以下のディレクティブを使用します。
<Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from <.example.com> </Location> |
ここでも、<.example.com>の部分には、 Webサーバーのセカンドレベルのドメイン名を入れます。
プロキシサーバーとしてApache HTTP サーバーが機能するよう設定するには、 <IfModule mod_proxy.c>行の先頭にあるハッシュマーク、 ProxyRequests 及び<Proxy>スタンザの各行を削除します。 ProxyRequestsディレクティブをOnにセットし、 <Proxy>スタンザのAllow from ディレクティブ内でどのドメインがサーバへのアクセス許可をされるかを設定します。
<Proxy *>タグと</Proxy>タグは、 プロキシサーバーにのみ適用するよう設定ディレクティブのグループを囲むコンテナを作成します。 <Directory>コンテナ内で使用できる多くのディレクティブは、 <Proxy>コンテナ内でも使用できる可能性があります。
ProxyViaコマンドは、Apacheプロキシサーバーを通過する 要求または応答に従って、HTTP Via: ヘッダ行が送信されるかどうかを制御します。Via: ヘッダは、ProxyViaがOnに 設定するとホスト名を表示し、Fullに設定するとホスト名と Apache HTTP サーバーのバージョンを表示し、Offに設定すると Via: 行は変更なしで渡され、Blockに設定すると Via: 行は削除されます。
コメントされた多くのキャッシュディレクティブがデフォルトのApache HTTP サーバー設定ファイルで 提供されています。ほとんどの場合、コメントを外すには、行の先頭にある ハッシュマーク
CacheEnable — そのキャッシュが、ディスクのキャッシュ、 メモリのキャッシュ、ファイルディスクリプタのキャッシュのいずれになるのか指定します。 デフォルトで、CacheEnableは、/あるいは その配下でURL用のディスクキャッシュを設定します。
CacheRoot — キャッシュされたファイルを格納するディレクトリの名前を指定します。デフォルトのCacheRootは/var/httpd/proxy/ディレクトリです。
CacheSize — キャッシュとして使用できる領域のサイズを KB(キロバイト)単位で指定します。デフォルトのCacheSizeは5KBです。
以下の一覧は、その他一般的なキャッシュ関連のディレクティブです。
CacheMaxExpire — HTMLドキュメントが(元のWebサーバーからの再ロードなしで)キャッシュに保存される 期間を指定します。 デフォルトは24時間です(86400秒)。
CacheLastModifiedFactor — 独自の有効期限セット付きで元のサーバーから送信されなかったドキュメントの有効期限の作成を指定します。デフォルトのCacheLastModifiedFactorは0.1に設定されています。つまり、 このようなドキュメントの有効期限は、そのドキュメントが最後に修正されてから 経過した時間の長さの10分の1に等しくなります。
CacheDefaultExpire— 有効時間をサポートしていない プロトコールを使用して受信されたドキュメントの有効時間を時間単位で指定します。 デフォルトは1時間に設定されています(3600秒)。
NoProxy — サブネット、IPアドレス、ドメイン、 またはホストの空白で区切られた一覧を指定します。 これらのコンテントはキャッシュされません。 この設定はイントラネットサイトにたいへん便利です。
NameVirtualHostディレクティブは、必要に応じて、 名前ベースの仮想ホスト用のIPアドレスとポート番号を関連付けます。 名前ベースの仮想ホストで、Apache HTTP サーバー が複数のIPアドレスを使うことなく異なるドメイン を処理することができます。
![]() | 注記 |
---|---|
名前ベースの仮想ホストは非セキュアなHTTP接続でのみ機能します。 セキュアサーバーで仮想ホストを使用している場合は、代わりに、 IPアドレスベースの仮想ホストを使用します。 |
名前ベースの仮想ホストを有効にするには、NameVirtualHost 設定ディレクティブのコメントを外し、正しいIPアドレスを追加します。 次に、各仮想ホストのVirtualHostコンテナを更に追加します。
<VirtualHost>タグと</VirtualHost>タグで、仮想ホストの特性を外接するコンテナを作成します。 VirtualHostコンテナはほとんどの設定ディレクティブに応じます。
コメントアウトされたVirtualHostコンテナが httpd.confに提供されており、 各仮想ホストに必要な設定ディレクティブの最小限の組み合わせを例示しています。 仮想ホストについての詳細は、項10.8 を参照してください。
![]() | 注記 |
---|---|
デフォルトのSSL仮想ホストコンテナは/etc/httpd/conf.d/ssl.conf ファイルに移動しています。 |
/etc/httpd/conf.d/ssl.confファイルのディレクティブを使用して、 SSLとTLSでセキュアWeb通信を有効にすることができます。
SetEnvIfで受信接続のヘッダに基づき環境変数を設定します。 単独のSSLディレクティブではありませんが、提供されている/etc/httpd/conf.d/ssl.confファイル にあります。このコンテクストの目的は、HTTP keepalive を無効にして、 SSLがクライアントブラウザからのクローズ通知警告なしに接続を閉じることが できるようにすることです。この設定は、SSL接続を確実にシャットダウンしない 特定ブラウザに必要となります。
SSL設定ファイル内の他のディレクティブに関する詳細については、 Webブラウザを以下のアドレスのいずれかにダイレクトします。
http://localhost/manual/mod/mod_ssl.html
Apache HTTP セキュアサーバーの設定方法についての詳細は、 Red Hat Enterprise Linux システム管理ガイドにあるApache HTTP セキュアサーバーの設定の章を参照してください。
![]() | 注記 |
---|---|
ほとんどの場合、SSLディレクティブはインストール時に適切に設定されます。 誤った設定はセキュリティ上の脆弱性を招く恐れがあるので、 Apache HTTP セキュアサーバーのディレクティブを変更するときは十分注意してください。 |