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は4000で、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.60に示されています。
IfDefineタグは、「テスト」で IfDefineタグが真(true)である場合に、適用される設定ディレクティブを囲みます。「テスト」が偽(false)である場合には、ディレクティブは無視されます。
IfDefineタグ内のテストはパラメータ名です (例、HAVE_PERL)。パラメータが定義される、つまりサーバーの起動コマンドに対して引数として与えられる場合、テストは真(true)になります。この場合、Webサーバーが起動すると、テストは真(true)になり、IfDefineタグを含むディレクティブが適用されます。
mod_suexecモジュールを基点にするSuexecUserGroup ディレクティブは CGI プログラムの為のユーザーとグループの権限実行 の指定を許可します。非 CGI 要求は未だに、UserとGroup ディレクティブ内に指定されたユーザーとグループで処理されています。
![]() | 注記 |
---|---|
SuexecUserGroupディレクティブは、VirtualHostsセクションの設定の中で、UserとGroup の使用に関して Apache HTTP サーバー 1.3 の設定の入れ替わりとなります。 |
Userディレクティブは、サーバープロセスのユーザー名を設定し、サーバーがアクセスを許可されるファイルを決定します。このユーザーがアクセスできないファイルはすべて、Apache HTTP サーバーに接続しているクライアントにもアクセスできません。
デフォルトで、Userはapacheに設定されます。
このディレクティブは、仮想ホスト設定には役に立たなくなっています。
![]() | 注記 |
---|---|
セキュリティの理由で、Apache HTTP サーバー は root ユーザーによる実行を拒否します。 |
Apache HTTP サーバープロセスのグループ名を指定します。
このディレクティブは、仮想ホスト設定には役に立たなくなっています。
デフォルトで、Groupは apacheに設定されて います。
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.23を参照)とAllowOverrideディレクティブ(項10.5.24を参照)を使って、非常に制限的なパラメータがルートディレクトリに適用されます。この設定では、寛容な設定を必要とするシステム上のすべてのディレクトリにこれらの設定を明示的に与える必要があります。
デフォルトの設定では、別のDirectoryコンテナが、 厳密ではないパラメータをディレクトリツリーに割り当てるDocumentRoot 用に設定されます。これにより、Apache HTTP サーバーがそこにあるファイルにアクセスすることができます。
Directoryコンテナは、ScriptAliasディレクティブ内で指定されているディレクトリの外にあるサーバー側アプリケーション用の追加のcgi-binディレクトリを設定するのにも使用することができます。(詳細は項10.5.41を参照して下さい)。
これを行なうには、Directoryコンテナが、 そのディレクトリにExecCGIオプションを設定する必要があります。
例えば、CGIスクリプトが/home/my_cgi_directoryにある場合、 以下のDirectoryコンテナをhttpd.confファイル に追加します。
<Directory /home/my_cgi_directory> Options +ExecCGI </Directory> |
次に、AddHandlerディレクティブのコメントを外して、 .cgi拡張子を持つファイルをCGIスクリプトとして 認識する必要があります。AddHandlerの設定方法については、 項10.5.56を参照してください。
これを機能させるには、 CGIスクリプトのパーミッションとスクリプトへのパス全体を 0755 に設定する必要があります。
Optionsディレクティブは、どのサーバー機能が特定のディレクトリで使用できるかを制御します。たとえば、ルートディレクトリに対して指定された制限的なパラメータで、OptionsはFollowSymLinksディレクティブだけに設定されます。サーバーはルートディレクトリ内の シンボリックリンクをたどることが許されているという点以外、有効にされる機能は ありません。
デフォルトでは、DocumentRootディレクトリで、IndexesとFollowSymLinksを含むように Optionsが設定されます。Indexesを使用すると、 指定されたDirectoryIndex(例、index.html) がない場合、サーバーはディレクトリ一覧を表示するディレクトリを作成します。 FollowSymLinksを使用すると、 サーバーはそのディレクトリ内のシンボリックリンクをたどることができます。
![]() | 注記 |
---|---|
メインサーバーの設定セクションにあるOptionsステートメントが、各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.55を参照してください。
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.38を参照)。
CustomLogディレクティブがcombinedに 設定される場合の形式オプションを以下に示します。
要求クライアントのリモートIPアドレスを一覧表示します。 HostnameLookupsがonに設定されると、 クライアントホスト名は、DNSから取得できない場合を除いて記録されます。
未使用。ログファイルの中の該当フィールドに
認証が要求された場合、記録されるユーザーのユーザー名を一覧表示します。通常、これは使用されないので、ログファイルの該当フィールドには
要求の日時を一覧表示します。
ブラウザまたはクライアントから送信されたものとまったく同じ要求文字列を一覧表示します。
クライアントホストに返された HTTPステータスコードを一覧表示します。
ドキュメントのサイズを一覧表示します。
Webサーバーにクライアントホストを参照したウェブページのURLを一覧表示します。
要求を行っているWebブラウザのタイプを一覧表示します。
CustomLogはログファイルとログファイル形式を識別します。 デフォルトで、ログファイルは /var/log/httpd/access_log ファイルに記録されます。
デフォルトのCustomLog形式は、以下に示すように、 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.56と項10.5.22を参照してください。
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.23を参照)、WebサーバーがインデックスのないディレクトリのHTTP要求を受信した際に、ディレクトリ一覧を生成します。
Webサーバーは、まず、DirectoryIndexディレクティブに記載されている名前と合致するファイル(通常、index.html) を要求されたディレクトリで調べます。index.htmlファイルが 見つからなかった場合、Apache HTTP サーバーは要求されたディレクトリのHTMLディレクトリ一覧 を作成します。このディレクトリ一覧の外観は、部分的に、 IndexOptionsで制御されます。
デフォルトの設定ではFancyIndexingがonになっています。コラムヘッダをクリックすると、ユーザーは表示順序を並べ替えることができます。 同じヘッダーをもう一度クリックすると、昇順と降順が切り替わって元に戻ります。FancyIndexingは、ファイル拡張子の種類に基づいて、ファイルごとに異なるアイコンを表示します。
AddDescriptionオプションは、 FancyIndexingと連結して使用すると、 サーバー生成のディレクトリ一覧のファイルに対して簡単な説明を表示します。
IndexOptionsにはほかにもいくつかのパラメータがあり、それらを設定することで、サーバーが生成するディレクトリの外見を制御することができます。IconHeightとIconWidthパラメータは サーバー生成の web ページ内のアイコン用の HTML HEIGHTと WIDTHのタグを含めるようにサーバーに要求します。 IconsAreLinksパラメータは、URL リンクターゲットを収納した HTML リンク アンカーをグラフィカルアイコンに組み合わせます。
このディレクティブは、サーバー生成のディレクトリ一覧で、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.22を参照してください。
CGIスクリプトだけではなく、AddHandlerディレクティブは、 サーバー解析されたHTMLやイメージマップファイルを処理するのに使用されます。
Actionは、MIME の内容のタイプと 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>コンテナ内でも使用できる可能性があります。
コメントされた多くのキャッシュディレクティブがデフォルトの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設定ファイル内の他のディレクティブに関する詳細については、以下のURLアドレス で参照して下さい:
http://localhost/manual/mod/mod_ssl.html
Apache HTTP セキュアサーバーの設定方法についての詳細は、 Red Hat Enterprise Linux システム管理ガイドにあるApache HTTP セキュアサーバーの設定の章を参照してください。
![]() | 注記 |
---|---|
ほとんどの場合、SSLディレクティブは Red Hat Enterprise Linuxのインストール時に適切に設定されます。誤った設定はセキュリティ上の脆弱性を招く恐れがあるので、 Apache HTTP セキュアサーバーのディレクティブを変更するときは十分注意してください。 |