25.5. httpd.confの設定ディレクティブ
/etc/httpd/conf/httpd.conf
です。httpd.conf
ファイルは十分にコメント化されており、ほとんどは自己計画的です。デフォルト設定はほとんどの状況で機能しますが、より重要な設定オプションの一部を理解することが推奨されます。
25.5.1. 一般的な設定のヒント
/etc/httpd/conf/httpd.conf
を編集し、「httpdの起動と停止」 で概説するように、/etc/httpd/conf/httpd.conf を編集し、httpd プロセスを開始します。
httpd.conf
を編集する前に、元の ファイルのコピーを作成します。バックアップを作成すると、設定ファイルの編集中に間違いからの復旧が容易になります。
httpd.conf
で編集したパスを確認し、誤字がないことを確認します。
/var/log/httpd/error_log
を確認します。変更ログは、専門知識のレベルによっては、解釈が簡単ではない可能性があります。ただし、エラーログの最後のエントリーは、有用な情報を提供します。
httpd.conf
に含まれるディレクティブの多くについての簡単な説明の一覧が記載されています。これらの説明は網羅的なものではありません。詳細は、オンラインの Apache ドキュメンテーション( http://httpd.apache.org/docs/2.2/ )を参照してください。
mod_ssl
ディレクティブの詳細は、http://httpd.apache.org/docs/2.2/mod/mod_ssl.html でオンラインのドキュメントを参照してください。
.ht
で始まるファイルにアクセス制御を適用します。これらのディレクティブは、セキュリティー上の理由から、すべての .htaccess
ファイル(または .ht
で始まるその他のファイル)への Web アクセスを拒否します。
AddDescription
FancyIndexing を IndexOptions パラメーターとして使用する場合、AddDescription ディレクティブを使用して、サーバーが生成したディレクトリー一覧に特定のファイルまたはファイルタイプのユーザー指定の説明を表示できます。AddDescription ディレクティブは、特定のファイル、ワイルドカード式、またはファイル拡張子の一覧表示をサポートします。
AddEncoding
AddEncoding は、特定のエンコーディングタイプを指定するファイル名の拡張子です。AddEncoding を使用して、一部のブラウザーに、ダウンロード時に特定のファイルを圧縮解除するように指示することもできます。
AddHandler
addhandler は、 ファイル拡張子を特定のハンドラーにマッピングします。たとえば、cgi-script ハンドラーを拡張子 .cgi
に一致させると、.cgi
で終わるファイルを CGI スクリプトとして自動的に扱います。以下は、.cgi
拡張の AddHandler ディレクティブの例です。
AddHandler cgi-script .cgi
cgi-bin
外の CGI が、ディレクトリーコンテナー内の ExecCGI オプションを持つサーバー上の任意のディレクトリーで機能できるようになります。ディレクトリーの ExecCGI オプションの設定に関する詳細は、ディレクトリー を参照してください。
AddIcon
AddIcon は、特定の拡張子を持つファイルのサーバー生成ディレクトリー一覧に表示するアイコンを指定します。たとえば、Web サーバーは、拡張子が .bin
または .exe
のファイルのアイコン binary.gif
を表示するように設定されます。
AddIconByEncoding
このディレクティブは、サーバーが生成したディレクトリー一覧の MIME エンコーディングのあるファイルによって表示されるアイコンの名前。たとえば、デフォルトでは、Web サーバーは、サーバー生成されたディレクトリー一覧にある MIME でエンコードされた x 圧縮ファイルと x-gzip ファイルの横に、compress.gif
アイコンを表示します。
AddIconByType
このディレクティブの名前アイコンは、サーバー生成ディレクトリー一覧に MIME タイプのファイルの横に表示されます。たとえば、サーバーは、サーバーが生成したディレクトリー一覧に mime-type のテキストタイプのファイルの横にあるアイコン
を表示します。
text
.gif
AddLanguage
AddLanguage は、ファイル名の拡張子を特定の言語に関連付けます。このディレクティブは、クライアントの Web ブラウザーの言語設定に基づいて複数の言語でコンテンツを提供する Apache HTTP Server に便利です。
AddType
AddType ディレクティブを使用して、デフォルトの MIME タイプとファイル拡張子のペアを定義または上書きします。以下のサンプルディレクティブは、.tgz ファイル拡張子を認識するように Apache HTTP Server に指示します。
AddType application/x-tar .tgz
エイリアス
Alias 設定により、DocumentRoot ディレクトリー以外のディレクトリーにアクセスできます。エイリアスで終わる URL は、自動的にエイリアスのパスに対して解決されます。デフォルトでは、アイコン/
ディレクトリーにエイリアスが 1 つ設定されています。icons/
ディレクトリーには Web サーバーからアクセスできますが、ディレクトリーは DocumentRoot には含まれません。
許可
allow は、指定のディレクトリーにアクセスできるクライアントを指定します。クライアントは、すべて、ドメイン名、IP アドレス、部分的な IP アドレス、ネットワーク/ネットマスクのペアなどにすることができます。DocumentRoot ディレクトリーは、すべての からのリクエストを 許可 するよう設定されます。つまり、すべて のユーザーがアクセスできます。
AllowOverride
AllowOverride ディレクティブは、任意の オプション が .htaccess
ファイルの宣言で上書きできるかどうかを設定します。デフォルトでは、root ディレクトリーと DocumentRoot の両方が、.htaccess
の上書きを許可しないように設定されています。
BrowserMatch
BrowserMatch ディレクティブにより、サーバーは環境変数を定義し、クライアントの Web ブラウザータイプを識別する User-Agent HTTP ヘッダーフィールドに基づいて適切なアクションを実行できます。デフォルトでは、Web サーバーは BrowserMatch を使用して、既知の問題のある特定のブラウザーへの接続を拒否し、またこれらのアクションに問題があることがわかっているブラウザーの keepalive および HTTP ヘッダーのフラッシュを無効にします。
キャッシュディレクティブ
デフォルトの Apache HTTP Server 設定ファイルでは、コメント化されたキャッシュディレクティブが多数提供されています。ほとんどの場合、行頭からハッシュ記号(#)を削除して、このような行をコメント解除すれば十分です。ただし、以下は、より重要なキャッシュ関連のディレクティブのリストです。
- CacheEnable: キャッシュがディスク、メモリー、またはファイル記述子キャッシュであるかを指定します。デフォルトでは、CacheEnable は
/
の下にある URL のディスクキャッシュを設定します。 - CacheRoot - キャッシュされたファイルを含むディレクトリーの名前を指定します。デフォルトの CacheRoot は
/var/httpd/proxy/
ディレクトリーです。 - cache size: キャッシュが使用できる領域をキロバイト単位で指定します。デフォルトの CacheSize は 5 KB です。
- CacheMaxExpire: キャッシュに HTML ドキュメントが保持される期間(元の Web サーバーからのリロードなし)を指定します。デフォルトは 24 時間(86400 秒)です。
- CacheLastModifiedFactor - 独自の有効期限が設定された元のサーバーから行われなかったドキュメントの期限切れ(有効期限)の日付を指定します。デフォルトの CacheLastModifiedFactor は 0.1 に設定されています。つまり、このようなドキュメントの有効期限は、ドキュメントが最後に変更された時点の 1 回目と等しくなります。
- CacheDefaultExpire: 有効期限をサポートしないプロトコルを使用して受信されたドキュメントの有効期限を時間単位で指定します。デフォルトは 1 時間(3600 秒)に設定されます。
- noProxy: コンテンツがキャッシュされないサブネット、IP アドレス、ドメイン、またはホストのスペース区切りの一覧を指定します。この設定は、イントラネットサイトで最も役立ちます。
CacheNegotiatedDocs
デフォルトでは、Web サーバーは、コンテンツベースでネゴシエートされたドキュメントをキャッシュしないようにプロキシーサーバーに要求します(つまり、時間の経過とともに、または要求元からの入力が変わる可能性があります)。で
CacheNegotiatedDocs が に設定されている場合、この機能は無効になり、プロキシーサーバーはそのようなドキュメントをキャッシュできます。
CustomLog
CustomLog は、ログファイルとログファイルの形式を識別します。デフォルトでは、アクセスログは /var/log/httpd/access_log
ファイルに記録され、エラーは /var/log/httpd/error_log
ファイルに記録されます。
結合された
ログファイル形式です。
remotehost rfc931 user date "request" status bytes referrer user-agent
DefaultIcon
DefaultIcon は、他のアイコンが指定されていないファイルのサーバー生成ディレクトリーリストに表示されるアイコンを指定します。unknown.gif
イメージファイルがデフォルトです。
DefaultType
DefaultType は、MIME タイプを判断できないドキュメントに使用する Web サーバーのデフォルトコンテンツタイプを設定します。デフォルトは text/plain です。
ディレクトリー
& lt;directory /path/to/directory > タグおよび </ Directory > タグにより、特定のディレクトリーとそのサブディレクトリーにのみ適用される設定ディレクティブのグループを囲むために使用されるコンテナーが作成されます。ディレクトリーに適用されるディレクティブは、ディレクトリータグ内で使用できます。
/
)に適用され、Options ( オプションを参照)および AllowOverride ( AllowOverrideを参照)ディレクティブを使用します。この設定では、より多くの許容設定を必要とするシステム上の任意のディレクトリーを明示的に指定する必要があります。
cgi-bin
ディレクトリーを設定するために使用することもできます(詳細は、ScriptAlias を参照してください)。
httpd.conf
ファイルに追加します。
<Directory /home/my_cgi_directory> Options +ExecCGI </Directory>
.cgi
拡張子を持つファイルを CGI スクリプトとして識別する必要があります。AddHandler の設定手順については、AddHandler を参照してください。
DirectoryIndex
DirectoryIndex は、ディレクトリー名の最後にスラッシュ(/)を指定して、ユーザーがディレクトリーのインデックスを要求する際にサーバーによって提供されるデフォルトページです。
index.html
で、index.html.var
タイプマップです。サーバーはこれらのファイルのいずれかを検索し、最初に見つかったファイルを返します。これらのファイルのいずれかが見つからず、Options Indexes がそのディレクトリーに設定されている場合は、ディレクトリーリスト機能がオフになっていない限り、サーバーはサブディレクトリーとファイルの一覧を HTML 形式で生成し、返します。
DocumentRoot
DocumentRoot は、リクエストに応答して提供される HTML ファイルのほとんどが含まれるディレクトリーです。セキュアではないセキュアな Web サーバー両方のデフォルトの DocumentRoot は /var/www/html
ディレクトリーです。たとえば、サーバーは以下のドキュメントのリクエストを受け取る場合があります。
http://example.com/foo.html
/var/www/html/foo.html
errorDocument
ErrorDocument ディレクティブは、HTTP 応答コードをクライアントに送信するメッセージまたは URL に関連付けます。デフォルトでは、Web サーバーはエラーが発生した場合に単純なエラーメッセージおよび通常は暗号的なエラーメッセージを出力します。ErrorDocument ディレクティブは、代わりにカスタマイズされたメッセージまたはページを出力するよう Web サーバーを強制します。
ErrorLog
errorlog は、サーバーエラーがログ に記録されるファイルを指定します。デフォルトでは、このディレクティブは /var/log/httpd/error_log
に設定されます。
ExtendedStatus
ExtendedStatus ディレクティブは、server-status ハンドラーが呼び出されたときに Apache が基本(off)または詳細なサーバーステータス情報()を生成するかどうかを制御します。server-status ハンドラーは Location タグを使用して呼び出されます。server-status の呼び出しに関する詳細情報は、場所 に含まれています。
HeaderName
HeaderName は、ディレクトリーに存在するファイルに名前を付けます。このファイルが、サーバーが生成したディレクトリー一覧の先頭に追加されます。ReadmeName と同様に、サーバーは可能な場合、またはプレーンテキストで HTML ドキュメントとして追加しようとします。
HostnameLookups
HostnameLookups は、on
、off
、または double
に設定できます。で
HostnameLookups が に設定されている場合、サーバーは各接続の IP アドレスを自動的に解決します。IP アドレスを解決すると、サーバーは DNS サーバーへの 1 つ以上の接続を行い、処理のオーバーヘッドが追加されます。HostnameLookups が double
に設定されている場合、サーバーはダブルリバース DNS 検索を実行し、処理オーバーヘッドをさらに追加します。
off
に設定されます。
IfDefine
IfDefine タグは、IWDefine タグが true と指定された test の場合に適用される設定ディレクティブを囲む。テストが false の場合、ディレクティブは無視されます。
IfModule
& lt;IfModule > タグおよび </ IfModule > タグは、指定されたモジュールが読み込まれている場合にのみアクティベートされる条件付きコンテナーを作成します。IfModule コンテナー内のディレクティブは、2 つの条件のいずれかで処理されます。ディレクティブは、開始 <If Module> タグ内に含まれるモジュールがロードされている場合 に処理されます。または、感嘆符 ! がモジュール名の前に表示される場合、ディレクティブは <If Module> タグで指定されたモジュールが読み込まれて いない 場合 にのみ処理されます。
mod_ssl
、mod_perl
、php
など)を使用するには、以下のディレクティブを セクション 1: httpd.conf
のグローバル環境 に含める必要があります。
Include conf.d/*.conf
IndexIgnore
index ignore は、ファイルの拡張子、部分的なファイル名、ワイルドカード式、または完全なファイル名を一覧表示します。Web サーバーには、サーバーが生成したディレクトリー一覧内のこれらのパラメーターに一致するファイルは含まれません。
IndexOptions
IndexOptions は、アイコン、ファイルの説明などを追加して、生成されたサーバーダイレクトリストの外観を制御します。Options Indexes が設定されている場合( オプションを参照)、Web サーバーは、Web サーバーがインデックスなしでディレクトリーの HTTP 要求を受信するとディレクトリー一覧を生成します。
index.html
)に一覧表示されている名前に一致するファイルを検索します。index.html
ファイルが見つからない場合、Apache HTTP Server は要求されたディレクトリーの HTML ディレクトリーのリストを作成します。このディレクトリー一覧の表示は、一部では IndexOptions ディレクティブによって制御されます。
KeepAlive
keepalive は、サーバーが接続ごとに複数の要求を許可するかどうかを設定します。また、1 つのクライアントがサーバーのリソースを過剰に消費できないようにするために使用できます。
/var/log/httpd/error_log
ログファイルを監視することが推奨されます。このログは、サーバーが子プロセスが不足すると報告されます。
KeepAliveTimeout
KeepAliveTimeout は、リクエストが提供されてから接続を閉じるまでにサーバーが待機する秒数を設定します。サーバーがリクエストを受信すると、代わりに Timeout ディレクティブが適用されます。KeepAliveTimeout ディレクティブは、デフォルトで 15 秒に設定されています。
listen
Listen コマンドは、Web サーバーが受信要求を受け入れるポートを識別します。デフォルトでは、Apache HTTP Server はセキュアではない Web 通信ではポート 80 をリッスンするように設定されています。セキュアな Web 通信のためにポート 443 番のポート(セキュアなサーバーを定義する /etc/httpd/conf.d/ssl.conf
ファイル)です。
LoadModule
LoadModule は、Dynamic Shared Object (DSO)モジュールを読み込むために使用されます。LoadModule ディレクティブの使用手順など、Apache HTTP Server の DSO サポートの詳細は、「モジュールの追加」 を参照してください。モジュールの読み込み順序は、Apache HTTP Server 2.0 では 重要ではなくなりました。Apache HTTP Server 2.0 DSO サポートの詳細は、「Dynamic Shared Object (DSO)のサポート」 を参照してください。
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from <.example.com> </Location>
<Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from <.example.com> </Location>
LogFormat
LogFormat ディレクティブは、さまざまな Web サーバーログファイルの形式を設定します。使用される実際の LogFormat は、CustomLog ディレクティブで指定された設定によって異なります( CustomLogを参照してください)。
- %H (リモートホストの IP アドレスまたはホスト名)
- 要求しているクライアントのリモート IP アドレスを一覧表示します。
で
HostnameLookups が に設定されている場合、クライアントのホスト名は DNS で利用できない限り記録されます。 - %l (rfc931)
- 使用されていません。このフィールドのログファイルにハイフンが表示されます。
- %u (認証ユーザー)
- 認証が必要な場合に記録されたユーザーのユーザー名を一覧表示します。通常、これは使用されないため、ハイフン - がこのフィールドのログファイルに表示されます。
- %t (date)
- リクエストの日時を一覧表示します。
- %r (要求文字列)
- ブラウザーまたはクライアントからの要求文字列を正確に一覧表示します。
- %s (ステータス)
- クライアントホストに返された HTTP ステータスコードを一覧表示します。
- %b (バイト)
- ドキュメントのサイズを一覧表示します。
- %\"%{Referer}i\" (referrer)
- クライアントホストを Web サーバーを参照する Web ページの URL を一覧表示します。
- %\"%{user-Agent}i\" (user-agent)
- リクエストを行う Web ブラウザーのタイプを一覧表示します。
LogLevel
logLevel は、エラーログのエラーメッセージの詳細を設定します。ログ レベルは、(最も詳細度の低いものから詳細まで)設定して、アラート、crit、error、warn、notice、info、または debug を設定できます。デフォルトの LogLevel は warn です。
MaxKeepAliveRequests
このディレクティブは、永続接続ごとに許可されるリクエストの最大数を設定します。Apache プロジェクトでは、サーバーのパフォーマンスが向上する高度な設定を推奨しています。MaxKeepAliveRequests はデフォルトで 100 に設定されています。これはほとんどの状況に適しています。
NameVirtualHost
NameVirtualHost ディレクティブは、必要に応じて名前ベースの仮想ホストに IP アドレスとポート番号を関連付けます。名前ベースの仮想ホストを使用すると、1 つの Apache HTTP Server が複数の IP アドレスを使用せずに異なるドメインを提供できるようになります。
オプション
Options ディレクティブは、特定のディレクトリーで利用可能なサーバー機能を制御します。たとえば、root ディレクトリーに指定される制限的なパラメーターでは、Options は FollowSymLinks ディレクティブにだけ設定されます。サーバーがルートディレクトリーのシンボリックリンクをたどることができることを除いて、機能は有効になっていません。
index.html
など)が指定されていない場合、サーバーはディレクトリーのディレクトリー一覧を生成できます。FollowSymLinks を使用すると、サーバーはそのディレクトリー内のシンボリックリンクをたどることができます。
順序
Order ディレクティブは、allow ディレクティブと deny ディレクティブが評価される順序を制御します。サーバーは、DocumentRoot ディレクトリーの Deny ディレクティブの前に Allow ディレクティブを評価するように設定されています。
Proxy
<proxy *& gt ; および </Proxy > タグは、プロキシーサーバーにのみ適用される設定ディレクティブのグループを囲むコンテナーを作成します。< Directory > コンテナー内で許可されるディレクティブの多くは、< Proxy> コンテナー内 でも使用できます。
ProxyRequests
Apache HTTP Server がプロキシーサーバーとして機能するように設定するには、< IfModule mod_proxy.c > 行、ProxyRequests、および <Proxy> スタンザの各行からハッシュマーク(#)を削除します。ProxyRequests ディレクティブを On に設定し、< Proxy> スタンザの Allow from ディレクティブでサーバーへのアクセスが許可されるドメインを設定し ます。
ReadmeName
ReadmeName は、ディレクトリー内に存在する場合は、サーバーが生成したディレクトリー一覧の最後に追加されるファイルに名前を付けます。Web サーバーは、最初に HTML ドキュメントとしてファイルを含めようとし、次にこれをプレーンテキストとして追加しようとします。デフォルトでは、ReadmeName は README.html
に設定されています。
Redirect /<old-path>/<file-name> http://<current-domain>/<current-path>/<file-name>
ScriptAlias
ScriptAlias ディレクティブは、CGI スクリプトの場所を定義します。一般に、CGI スクリプトを DocumentRoot 内に残しておくことは適切ではありません。ここでは、テキストドキュメントとして参照できます。このため、サーバー側の実行ファイルとスクリプトを含む DocumentRoot ディレクトリー外の特別なディレクトリーは ScriptAlias ディレクティブによって指定されます。このディレクトリーは cgi-bin
と呼ばれ、デフォルトで /var/www/cgi-bin/
に設定されます。
ServerAdmin
ServerAdmin ディレクティブを Web サーバー管理者のメールアドレスに設定します。このメールアドレスは、サーバーが生成した Web ページのエラーメッセージを表示するため、ユーザーはサーバー管理者にメールを送信して問題を報告できます。
/etc/aliases
で Web サーバーを担当する人に実行し、/usr/bin/newaliases を実行します。
ServerName
ServerName は、サーバーのホスト名およびポート番号( Listen ディレクティブと一致する)を指定します。ServerName はマシンの実際のホスト名に一致する必要はありません。たとえば、Web サーバーは www.example.com
ですが、サーバーのホスト名は実際には foo.example.com
になります。ServerName で指定する値は、システムで解決できる有効な Domain Name Service (DNS)名である必要があります。何も作成しないでください。
ServerName www.example.com:80
/etc/hosts
ファイルに含まれていることを確認してください。
ServerRoot
ServerRoot ディレクティブは、Web サイトコンテンツを含む最上位のディレクトリーを指定します。デフォルトでは、ServerRoot はセキュア なサーバーと非セキュアサーバーの両方で /etc/httpd
に設定されています。
ServerSignature
ServerSignature ディレクティブは、Apache HTTP Server サーバーバージョンと ServerName を含む行を、クライアントに送信されたエラーメッセージなどのサーバー生成ドキュメントに追加します。ServerSignature はデフォルトで on に設定されます。
ServerTokens
ServerTokens ディレクティブは、クライアントに返信する Server 応答ヘッダーフィールドに、オペレーティングシステムのタイプおよびコンパイル済みモジュールの詳細が含まれるべきかどうかを決定します。デフォルトでは、ServerTokens は Full に設定され、オペレーティングシステムの種類とコンパイル済みモジュールに関する情報を送信します。ServerTokens を Prod に設定すると製品名のみが送信され、脆弱性をスキャンする際にサーバーヘッダーのハッカー確認情報がいくつでも推奨されます。ServerTokens を Min (最小)または OS (オペレーティングシステム)に設定することもできます。
SuexecUserGroup
mod_suexec モジュールから発信される SuexecUserGroup ディレクティブは、CGI プログラムに対してユーザーおよびグループの実行権限を指定できるようにします。CGI 以外の要求は、User ディレクティブおよび Group ディレクティブで指定されたユーザーおよびグループで処理されます。
TypesConfig
TypesConfig は、MIME タイプマッピングのデフォルト一覧(コンテンツタイプへのファイル名拡張)を設定するファイルに名前を付けます。デフォルトの TypesConfig ファイルは /etc/mime.types
です。/etc/mime.types
を編集する代わりに、MIME タイプマッピングを追加する方法として、 AddType ディレクティブを使用することが推奨されます。
UseCanonicalName
で
に設定すると、このディレクティブは ServerName ディレクティブおよび Port ディレクティブで指定された値を使用して Apache HTTP Server がそれ自体を参照するように設定します。UseCanonicalName が off
に設定されている場合、サーバーは代わりに、それ自体を参照する際に要求元のクライアントによって使用される値を使用します。
off
に設定されています。
User
User ディレクティブは、サーバープロセスのユーザー名を設定し、サーバーがアクセスできるファイルを決定します。このユーザーがアクセスできないファイルは、Apache HTTP Server に接続するクライアントにもアクセスできません。
UserDir
UserDir は、Web サーバーによって提供される個人 HTML ファイルを配置する各ユーザーのホームディレクトリー内のサブディレクトリーです。このディレクティブは、デフォルトで 無効
にするように設定されています。
public_html
に設定されます。たとえば、サーバーは以下のリクエストを受け取る場合があります。
http://example.com/~username/foo.html
/home/username/public_html/foo.html
/home/username/
がユーザーのホームディレクトリーです(ユーザーのホームディレクトリーのデフォルトパスは異なる場合があることに注意してください)。
public_html
ディレクトリー(0755 も機能)に設定する必要があります。ユーザーの public_html
ディレクトリーで提供されるファイルは、少なくとも 0644 に設定する必要があります。
VirtualHost
<VirtualHost > ; および </VirtualHost > タグは、仮想ホストの特性を示すコンテナーを作成します。VirtualHost コンテナーはほとんどの設定ディレクティブを受け入れます。
httpd.conf
で提供され、各仮想ホストに必要な最低限の設定ディレクティブのセットを示しています。仮想ホストの詳細は、「仮想ホスト」 を参照してください。
/etc/httpd/conf.d/ssl.conf
に置かれるようになりました。